@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,9 +13,9 @@
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 { withResizeObserver } from '../mixins/with-resize-observer';
18
- import { classMap } from 'lit/directives/class-map';
18
+ import { classMap } from 'lit-html/directives/class-map';
19
19
  import { dispatchCustomEvent } from '../lib/events';
20
20
  import '../atoms/gv-image';
21
21
  import '../molecules/gv-dropdown-menu';
@@ -300,4 +300,4 @@ export class PolicyDraggable {
300
300
 
301
301
  }
302
302
  window.customElements.define('gv-flow-step', GvFlowStep);
303
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL3BvbGljeS1zdHVkaW8vZ3YtZmxvdy1zdGVwLmpzIl0sIm5hbWVzIjpbIkxpdEVsZW1lbnQiLCJodG1sIiwiY3NzIiwid2l0aFJlc2l6ZU9ic2VydmVyIiwiY2xhc3NNYXAiLCJkaXNwYXRjaEN1c3RvbUV2ZW50IiwiR3ZGbG93U3RlcCIsInByb3BlcnRpZXMiLCJpZCIsInR5cGUiLCJTdHJpbmciLCJyZWZsZWN0IiwiZ3JvdXAiLCJwYXJlbnQiLCJzdGVwIiwiT2JqZWN0IiwicG9saWN5IiwiZWRpdGluZyIsIkJvb2xlYW4iLCJkcmFnZ2luZyIsImhvdmVyIiwidGl0bGUiLCJlbXB0eSIsImNvbmZpcm0iLCJkaXNhYmxlZCIsInJlYWRvbmx5IiwiX3NtYWxsIiwiYXR0cmlidXRlIiwiX2NvbmZpcm1EZWxldGUiLCJfY29uZmlybUR1cGxpY2F0ZSIsImNvbnN0cnVjdG9yIiwiYnJlYWtwb2ludHMiLCJ3aWR0aCIsIm9uUmVzaXplIiwiX29uRHVwbGljYXRlIiwiX29uQ29uZmlybUR1cGxpY2F0ZSIsInRhcmdldCIsIl9vbkNhbmNlbER1cGxpY2F0ZSIsIl9vbkNsaWNrIiwiZSIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicHJldmVudERlZmF1bHQiLCJfZWRpdCIsIl9vbk1vdXNlRW50ZXIiLCJkcm9wZG93bk1lbnUiLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvciIsInNldEF0dHJpYnV0ZSIsIl9vbk1vdXNlTGVhdmUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJfb25EZWxldGUiLCJfb25Db25maXJtRGVsZXRlIiwiX29uQ2FuY2VsRGVsZXRlIiwidXBkYXRlZCIsImhhcyIsIl9vbkNhbmNlbCIsInJlbW92ZSIsIl9vbkNvcHkiLCJfb25Nb3ZlIiwiX29uQ2hhbmdlU3RhdGUiLCJkZXRhaWwiLCJlbmFibGVkIiwiX3JlbmRlckRyb3Bkb3duTWVudSIsInJlc2V0Q29uZmlybSIsInJlbmRlciIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImljb24iLCJub3RGb3VuZCIsImNsYXNzZXMiLCJzdHlsZXMiLCJQb2xpY3lEcmFnZ2FibGUiLCJwYXJzZSIsInN0ciIsImRhdGEiLCJKU09OIiwic291cmNlUG9zaXRpb24iLCJzb3VyY2VGbG93S2V5Iiwic291cmNlRmxvd0lkIiwiZmxvd1N0ZXAiLCJ0b1N0cmluZyIsInN0cmluZ2lmeSIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsS0FBdEM7QUFDQSxTQUFTQyxrQkFBVCxRQUFtQyxnQ0FBbkM7QUFDQSxTQUFTQyxRQUFULFFBQXlCLDBCQUF6QjtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsT0FBTyxtQkFBUDtBQUNBLE9BQU8sK0JBQVA7QUFDQSxPQUFPLG9CQUFQO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxVQUFOLFNBQXlCSCxrQkFBa0IsQ0FBQ0gsVUFBRCxDQUEzQyxDQUF3RDtBQUN4QyxhQUFWTyxVQUFVLEdBQUc7QUFDdEIsV0FBTztBQUNMQyxNQUFBQSxFQUFFLEVBQUU7QUFBRUMsUUFBQUEsSUFBSSxFQUFFQyxNQUFSO0FBQWdCQyxRQUFBQSxPQUFPLEVBQUU7QUFBekIsT0FEQztBQUVMQyxNQUFBQSxLQUFLLEVBQUU7QUFBRUgsUUFBQUEsSUFBSSxFQUFFQyxNQUFSO0FBQWdCQyxRQUFBQSxPQUFPLEVBQUU7QUFBekIsT0FGRjtBQUdMRSxNQUFBQSxNQUFNLEVBQUU7QUFBRUosUUFBQUEsSUFBSSxFQUFF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QUcsbTRFQUZFLENBQVA7QUE4S0Q7O0FBMVg0RDtBQTZYL0QsT0FBTyxNQUFNc0UsZUFBTixDQUFzQjtBQUNmLFNBQUxDLEtBQUssQ0FBQ0MsR0FBRCxFQUFNO0FBQ2hCLFVBQU1DLElBQUksR0FBR0MsSUFBSSxDQUFDSCxLQUFMLENBQVdDLEdBQVgsQ0FBYjtBQUNBLFdBQU8sSUFBSUYsZUFBSixDQUFvQkcsSUFBSSxDQUFDM0QsTUFBekIsRUFBaUMyRCxJQUFJLENBQUNFLGNBQXRDLEVBQXNERixJQUFJLENBQUNHLGFBQTNELEVBQTBFSCxJQUFJLENBQUNJLFlBQS9FLEVBQTZGSixJQUFJLENBQUNLLFFBQWxHLENBQVA7QUFDRDs7QUFFRGxELEVBQUFBLFdBQVcsQ0FBQ2QsTUFBRCxFQUFTNkQsY0FBVCxFQUF5QkMsYUFBekIsRUFBd0NDLFlBQXhDLEVBQXNEQyxRQUF0RCxFQUFnRTtBQUN6RSxTQUFLaEUsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBSzZELGNBQUwsR0FBc0JBLGNBQXRCO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQkEsYUFBckI7QUFDQSxTQUFLQyxZQUFMLEdBQW9CQSxZQUFwQjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0Q7O0FBRURDLEVBQUFBLFFBQVEsR0FBRztBQUNULFdBQU9MLElBQUksQ0FBQ00sU0FBTCxDQUFlLElBQWYsQ0FBUDtBQUNEOztBQWhCMEI7QUFtQjdCQyxNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLGNBQTdCLEVBQTZDL0UsVUFBN0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTGl0RWxlbWVudCwgaHRtbCwgY3NzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHdpdGhSZXNpemVPYnNlcnZlciB9IGZyb20gJy4uL21peGlucy93aXRoLXJlc2l6ZS1vYnNlcnZlcic7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcCc7XG5pbXBvcnQgeyBkaXNwYXRjaEN1c3RvbUV2ZW50IH0gZnJvbSAnLi4vbGliL2V2ZW50cyc7XG5pbXBvcnQgJy4uL2F0b21zL2d2LWltYWdlJztcbmltcG9ydCAnLi4vbW9sZWN1bGVzL2d2LWRyb3Bkb3duLW1lbnUnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1zd2l0Y2gnO1xuXG4vKipcbiAqIEZsb3cgYXJlYSBjb21wb25lbnRcbiAqXG4gKiBAZmlyZXMgZ3YtZmxvdy1zdGVwOmR1cGxpY2F0ZSAtIER1cGxpY2F0ZSBldmVudCBmcm9tIGFjdGlvbnNcbiAqIEBmaXJlcyBndi1mbG93LXN0ZXA6ZGVsZXRlIC0gRGVsZXRlIGV2ZW50IGZyb20gYWN0aW9uc1xuICogQGZpcmVzIGd2LWZsb3ctc3RlcDplZGl0IC0gRWRpdCBldmVudFxuICogQGZpcmVzIGd2LWZsb3ctc3RlcDpjb3B5IC0gQ29weSBldmVudFxuICogQGZpcmVzIGd2LWZsb3ctc3RlcDptb3ZlIC0gTW92ZSBldmVudFxuICpcbiAqIEBhdHRyIHtPYmplY3Q8e25hbWUsIGljb24sIGNvbmZpZ3VyYXRpb246e2Rlc2NyaXB0aW9uLCAuLi59fT59IHN0ZXAgLSB0aGUgZmxvdyBzdGVwLCBjb25maWd1cmF0aW9uIGNvbnRhaW5zIGZvcm0gY29uZiBmb3IgZ3Ytc2NoZW1hLWZvcm0gY29tcG9uZW50XG4gKiBAYXR0ciB7Qm9vbGVhbn0gZWRpdGluZyAtIHRydWUsIGlmIGVkaXRpb24gaW4gcHJvZ3Jlc3NcbiAqIEBhdHRyIHtCb29sZWFufSBkcmFnZ2luZyAtIHRydWUsIGlmIGRyYWdnaW5nIGluIHByb2dyZXNzXG4gKiBAYXR0ciB7Qm9vbGVhbn0gaG92ZXIgLSB0cnVlLCBpZiBhcmVhIGlzIGhvdmVyXG4gKiBAYXR0ciB7U3RyaW5nfSB0aXRsZSAtIHRpdGxlIG9mIGFyZWEsIGRlZmF1bHQgaXMgXCJjb250ZW50LmNvbmZpZ3VyYXRpb24uZGVzY3JpcHRpb25cIiBpZiBleGlzdFxuICogQGF0dHIge0Jvb2xlYW59IGVtcHR5IC0gdHJ1ZSwgaWYgcmVuZGVyIGVtcHR5IHN0YXRlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gY29uZmlybSAtIHRydWUsIGlmIHJlbmRlciBjb25maXJtIHN0YXRlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gZGlzYWJsZWQgLSB0cnVlIGZvciBkaXNhYmxlZFxuICogQGF0dHIge0Jvb2xlYW59IHJlYWRvbmx5IC0gdHJ1ZSBpZiByZWFkb25seVxuICovXG5leHBvcnQgY2xhc3MgR3ZGbG93U3RlcCBleHRlbmRzIHdpdGhSZXNpemVPYnNlcnZlcihMaXRFbGVtZW50KSB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBncm91cDogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHBhcmVudDogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHN0ZXA6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBwb2xpY3k6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBlZGl0aW5nOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGRyYWdnaW5nOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGhvdmVyOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIHRpdGxlOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgZW1wdHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgY29uZmlybTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICByZWFkb25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBfc21hbGw6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiBmYWxzZSB9LFxuICAgICAgX2NvbmZpcm1EZWxldGU6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgX2NvbmZpcm1EdXBsaWNhdGU6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZW1wdHkgPSB0cnVlO1xuICAgIHRoaXMuYnJlYWtwb2ludHMgPSB7XG4gICAgICB3aWR0aDogWzEwMCwgMjAwXSxcbiAgICB9O1xuICB9XG5cbiAgb25SZXNpemUoeyB3aWR0aCB9KSB7XG4gICAgdGhpcy5fc21hbGwgPSB3aWR0aCA8PSAyMDA7XG4gIH1cblxuICBfb25EdXBsaWNhdGUoKSB7XG4gICAgdGhpcy5fY29uZmlybUR1cGxpY2F0ZSA9IHRydWU7XG4gIH1cblxuICBfb25Db25maXJtRHVwbGljYXRlKCkge1xuICAgIHRoaXMuX2NvbmZpcm1EdXBsaWNhdGUgPSBmYWxzZTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdkdXBsaWNhdGUnLCB7IHN0ZXA6IHRoaXMuc3RlcCwgcG9saWN5OiB0aGlzLnBvbGljeSwgdGFyZ2V0OiB0aGlzIH0pO1xuICB9XG5cbiAgX29uQ2FuY2VsRHVwbGljYXRlKCkge1xuICAgIHRoaXMuX2NvbmZpcm1EdXBsaWNhdGUgPSBmYWxzZTtcbiAgfVxuXG4gIF9vbkNsaWNrKGUpIHtcbiAgICBpZiAoIWUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnYWN0aW9uJykgJiYgIXRoaXMuZWRpdGluZykge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fZWRpdCgpO1xuICAgIH1cbiAgfVxuXG4gIF9lZGl0KCkge1xuICAgIGlmICh0aGlzLnBvbGljeSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZWRpdCcsIHsgc3RlcDogdGhpcy5zdGVwLCBwb2xpY3k6IHRoaXMucG9saWN5LCBncm91cDogdGhpcy5ncm91cCB9KTtcbiAgICB9XG4gIH1cblxuICBfb25Nb3VzZUVudGVyKCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5ob3ZlciA9IHRydWU7XG4gICAgICBpZiAoIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgY29uc3QgZHJvcGRvd25NZW51ID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LWRyb3Bkb3duLW1lbnUnKTtcbiAgICAgICAgZHJvcGRvd25NZW51LnNldEF0dHJpYnV0ZSgnb3BlbicsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9vbk1vdXNlTGVhdmUoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmhvdmVyID0gZmFsc2U7XG4gICAgICBpZiAoIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgY29uc3QgZHJvcGRvd25NZW51ID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LWRyb3Bkb3duLW1lbnUnKTtcbiAgICAgICAgZHJvcGRvd25NZW51LnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9vbkRlbGV0ZSgpIHtcbiAgICB0aGlzLl9jb25maXJtRGVsZXRlID0gdHJ1ZTtcbiAgfVxuXG4gIF9vbkNvbmZpcm1EZWxldGUoKSB7XG4gICAgdGhpcy5fY29uZmlybURlbGV0ZSA9IGZhbHNlO1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2RlbGV0ZScsIHsgc3RlcDogdGhpcy5zdGVwIH0pO1xuICB9XG5cbiAgX29uQ2FuY2VsRGVsZXRlKCkge1xuICAgIHRoaXMuX2NvbmZpcm1EZWxldGUgPSBmYWxzZTtcbiAgfVxuXG4gIHVwZGF0ZWQocHJvcGVydGllcykge1xuICAgIGlmIChwcm9wZXJ0aWVzLmhhcygnZHJhZ2dpbmcnKSAmJiB0aGlzLmRyYWdnaW5nID09PSB0cnVlKSB7XG4gICAgICBjb25zdCBkcm9wZG93bk1lbnUgPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignZ3YtZHJvcGRvd24tbWVudScpO1xuICAgICAgZHJvcGRvd25NZW51LnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpO1xuICAgIH1cbiAgICBpZiAocHJvcGVydGllcy5oYXMoJ3N0ZXAnKSAmJiB0aGlzLnN0ZXAgIT0gbnVsbCkge1xuICAgICAgdGhpcy5lbXB0eSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIF9vbkNhbmNlbCgpIHtcbiAgICB0aGlzLnJlbW92ZSgpO1xuICB9XG5cbiAgX29uQ29weSgpIHtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjb3B5Jyk7XG4gIH1cblxuICBfb25Nb3ZlKCkge1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ21vdmUnKTtcbiAgfVxuXG4gIF9vbkNoYW5nZVN0YXRlKHsgZGV0YWlsIH0pIHtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdjaGFuZ2Utc3RhdGUnLCB7IHN0ZXA6IHRoaXMuc3RlcCwgZW5hYmxlZDogZGV0YWlsIH0pO1xuICB9XG5cbiAgX3JlbmRlckRyb3Bkb3duTWVudSgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm4gaHRtbGBgO1xuICAgIH1cbiAgICBjb25zdCBlbmFibGVkID0gdGhpcy5zdGVwLmVuYWJsZWQgIT09IGZhbHNlO1xuICAgIHJldHVybiBodG1sYDxndi1kcm9wZG93bi1tZW51IHJpZ2h0PlxuICAgICAgPGd2LXN3aXRjaFxuICAgICAgICBzbG90PVwiYWN0aW9uXCJcbiAgICAgICAgY2xhc3M9XCJhY3Rpb25cIlxuICAgICAgICBzbWFsbFxuICAgICAgICBsYWJlbD1cIiR7ZW5hYmxlZCA/ICdFbmFibGVkJyA6ICdEaXNhYmxlZCd9XCJcbiAgICAgICAgdGl0bGU9XCIke2VuYWJsZWQgPyAnRGlzYWJsZSBwb2xpY3kgPycgOiAnRW5hYmxlIHBvbGljeSA/J31cIlxuICAgICAgICBAZ3Ytc3dpdGNoOmlucHV0PVwiJHt0aGlzLl9vbkNoYW5nZVN0YXRlfVwiXG4gICAgICAgIC52YWx1ZT1cIiR7ZW5hYmxlZH1cIlxuICAgICAgPjwvZ3Ytc3dpdGNoPlxuICAgICAgPGd2LWJ1dHRvbiBzbG90PVwiYWN0aW9uXCIgY2xhc3M9XCJhY3Rpb25cIiBsaW5rIHNtYWxsIGljb249XCJnZW5lcmFsOmR1cGxpY2F0ZVwiIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uRHVwbGljYXRlfVwiXG4gICAgICAgID5EdXBsaWNhdGU8L2d2LWJ1dHRvblxuICAgICAgPlxuICAgICAgPGd2LWJ1dHRvbiBzbG90PVwiYWN0aW9uXCIgY2xhc3M9XCJhY3Rpb25cIiBsaW5rIHNtYWxsIGljb249XCJob21lOnRyYXNoXCIgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25EZWxldGV9XCI+RGVsZXRlPC9ndi1idXR0b24+XG4gICAgPC9ndi1kcm9wZG93bi1tZW51PmA7XG4gIH1cblxuICByZXNldENvbmZpcm0oKSB7XG4gICAgdGhpcy5jb25maXJtID0gZmFsc2U7XG4gICAgdGhpcy5fY29uZmlybURlbGV0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NvbmZpcm1EdXBsaWNhdGUgPSBmYWxzZTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jb25maXJtKSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwiZHJvcC1hcmVhIGRyb3AtYXJlYS1jb25maXJtXCI+XG4gICAgICAgIDxndi1idXR0b24gc21hbGwgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25Db3B5fVwiPkNvcHk8L2d2LWJ1dHRvbj5cbiAgICAgICAgPGd2LWJ1dHRvbiBzbWFsbCBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbk1vdmV9XCI+TW92ZTwvZ3YtYnV0dG9uPlxuICAgICAgICA8Z3YtYnV0dG9uIGxpbmsgc21hbGwgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25DYW5jZWx9XCI+Q2FuY2VsPC9ndi1idXR0b24+XG4gICAgICA8L2Rpdj5gO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fY29uZmlybURlbGV0ZSkge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImRyb3AtYXJlYSBkcm9wLWFyZWEtY29uZmlybVwiPlxuICAgICAgICA8Z3YtYnV0dG9uIHNtYWxsIGRhbmdlciBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbkNvbmZpcm1EZWxldGV9XCI+RGVsZXRlPC9ndi1idXR0b24+XG4gICAgICAgIDxndi1idXR0b24gbGluayBzbWFsbCBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbkNhbmNlbERlbGV0ZX1cIj5DYW5jZWw8L2d2LWJ1dHRvbj5cbiAgICAgIDwvZGl2PmA7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9jb25maXJtRHVwbGljYXRlKSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwiZHJvcC1hcmVhIGRyb3AtYXJlYS1jb25maXJtXCI+XG4gICAgICAgIDxndi1idXR0b24gc21hbGwgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25Db25maXJtRHVwbGljYXRlfVwiPkR1cGxpY2F0ZTwvZ3YtYnV0dG9uPlxuICAgICAgICA8Z3YtYnV0dG9uIGxpbmsgc21hbGwgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25DYW5jZWxEdXBsaWNhdGV9XCI+Q2FuY2VsPC9ndi1idXR0b24+XG4gICAgICA8L2Rpdj5gO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuZW1wdHkpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0aGlzLnN0ZXAgPyB0aGlzLnN0ZXAubmFtZSA6ICcnO1xuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLnN0ZXAgJiYgdGhpcy5zdGVwLmRlc2NyaXB0aW9uID8gdGhpcy5zdGVwLmRlc2NyaXB0aW9uIDogJyc7XG4gICAgICBjb25zdCBpY29uID0gdGhpcy5zdGVwID8gdGhpcy5wb2xpY3kgJiYgdGhpcy5wb2xpY3kuaWNvbiA6IG51bGw7XG4gICAgICBjb25zdCBlbmFibGVkID0gdGhpcy5zdGVwICYmIHRoaXMuc3RlcC5lbmFibGVkICE9PSBmYWxzZTtcbiAgICAgIGNvbnN0IG5vdEZvdW5kID0gdGhpcy5wb2xpY3kgPT0gbnVsbDtcbiAgICAgIGlmIChub3RGb3VuZCkge1xuICAgICAgICB0aGlzLnRpdGxlID0gJ1dhcm5pbmc6IHBvbGljeSBub3QgZm91bmQgaW4gcGx1Z2lucyBmb2xkZXInO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50aXRsZSA9IGRlc2NyaXB0aW9uO1xuICAgICAgfVxuICAgICAgY29uc3QgY2xhc3NlcyA9IHtcbiAgICAgICAgJ2Ryb3AtYXJlYSc6IHRydWUsXG4gICAgICAgICdpcy1hc3NpZ25lZCc6IG5hbWUgIT09ICcnLFxuICAgICAgICAnaGFzLWljb24nOiBpY29uICE9IG51bGwsXG4gICAgICAgIGRpc2FibGVkOiAhZW5hYmxlZCxcbiAgICAgICAgJ25vdC1mb3VuZCc6IG5vdEZvdW5kLFxuICAgICAgfTtcbiAgICAgIHJldHVybiBodG1sYDxkaXZcbiAgICAgICAgY2xhc3M9XCIke2NsYXNzTWFwKGNsYXNzZXMpfVwiXG4gICAgICAgIEBjbGljaz1cIiR7dGhpcy5fb25DbGlja31cIlxuICAgICAgICBAbW91c2VlbnRlcj1cIiR7dGhpcy5fb25Nb3VzZUVudGVyfVwiXG4gICAgICAgIEBtb3VzZWxlYXZlPVwiJHt0aGlzLl9vbk1vdXNlTGVhdmV9XCJcbiAgICAgID5cbiAgICAgICAgJHt0aGlzLl9yZW5kZXJEcm9wZG93bk1lbnUoKX1cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAke2ljb24gPyBodG1sYDxndi1pbWFnZSBzcmM9XCIke2ljb259XCI+PC9ndi1pbWFnZT5gIDogaHRtbGBgfVxuICAgICAgICAgICR7aWNvbiA9PSBudWxsICYmIG5vdEZvdW5kID8gaHRtbGA8Z3YtaWNvbiBjbGFzcz1cIm5vdC1mb3VuZF9faWNvblwiIHNoYXBlPVwiZmluYW5jZTpmb2xkZXItZXJyb3JcIj48L2d2LWljb24+YCA6ICcnfVxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPiR7bmFtZX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPiR7ZGVzY3JpcHRpb259PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+IGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJkcm9wLWFyZWFcIj48L2Rpdj5gO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICAvLyBsYW5ndWFnZT1DU1NcbiAgICAgIGNzc2BcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgbWFyZ2luOiAwLjJyZW07XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdCg6YWN0aXZlKSB7XG4gICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtkcmFnZ2luZ10pIHtcbiAgICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgIH1cblxuICAgICAgICBndi1kcm9wZG93bi1tZW51IHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiByaWdodDtcbiAgICAgICAgICB0b3A6IC0xcHg7XG4gICAgICAgICAgYm90dG9tOiAtMXB4O1xuICAgICAgICAgIHotaW5kZXg6IDEwO1xuICAgICAgICAgIC0tZ3YtZHJvcGRvd24tbWVudS0tYmR3OiAwIDAgMCAxcHg7XG4gICAgICAgICAgLS1ndi1kcm9wZG93bi1tZW51LS1wOiAwLjFyZW0gMC4zcmVtO1xuICAgICAgICAgIC0tZ3YtZHJvcGRvd24tbWVudS0tZ2c6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBndi1zd2l0Y2gge1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtIDA7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbaG92ZXJdKSAuZHJvcC1hcmVhIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICM1YTc2ODQsIDAgMXB4IDNweCAjNWE3Njg0O1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbZHJhZ2dpbmddKSAuZHJvcC1hcmVhIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbZWRpdGluZ10pIC5kcm9wLWFyZWEge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogIzVhNzY4NDtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICM1YTc2ODQsIDAgMXB4IDNweCAjNWE3Njg0O1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtMjAwXSkgZ3YtaW1hZ2Uge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBvcGFjaXR5OiAwLjE7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbdy1sdC0yMDBdKSAuZHJvcC1hcmVhOmhvdmVyIGd2LWltYWdlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtMTAwXSkgLmRlc2NyaXB0aW9uIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2VtcHR5XSkgLmRyb3AtYXJlYSB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCAjYmZiZmJmO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgIG1heC1oZWlnaHQ6IDQycHg7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wLWFyZWEge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgI2JmYmZiZjtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgICAgICAgIG1pbi13aWR0aDogODBweDtcbiAgICAgICAgICBtYXJnaW46IDRweDtcbiAgICAgICAgICBwYWRkaW5nOiA0cHg7XG4gICAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgLS1ndi1idXR0b24tLWZ6OiAxMXB4O1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMTUwbXMgZWFzZS1pbi1vdXQsIHRyYW5zZm9ybSAwLjNzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuM3MgZWFzZS1pbi1vdXQsIGJvcmRlciAwLjNzIGVhc2UtaW4tb3V0O1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3AtYXJlYS5kaXNhYmxlZCB7XG4gICAgICAgICAgLypvcGFjaXR5OiAwLjc7Ki9cbiAgICAgICAgICAvKmJhY2tncm91bmQtY29sb3I6ICNCRkJGQkY7ICEqIGZhbGxiYWNrIGNvbG9yIGlmIGdyYWRpZW50cyBhcmUgbm90IHN1cHBvcnRlZCAqISovXG4gICAgICAgICAgLypib3JkZXItY29sb3I6IHdoaXRlOyovXG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3AtYXJlYS5ub3QtZm91bmQge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ3YtdGhlbWUtY29sb3Itd2FybmluZy1saWdodCwgI2ZmYjc0ZCk7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcC1hcmVhLmhhcy1pY29uIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wLWFyZWEuaGFzLWljb24gLmNvbnRlbnQge1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wLWFyZWEuaXMtYXNzaWduZWQge1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbaG92ZXJdKSAuZHJvcC1hcmVhLmlzLWFzc2lnbmVkOm5vdCgubm90LWZvdW5kKSB7XG4gICAgICAgICAgY3Vyc29yOiBncmFiO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2hvdmVyXSkgLmRyb3AtYXJlYS5pcy1hc3NpZ25lZDpub3QoLm5vdC1mb3VuZCk6YWN0aXZlIHtcbiAgICAgICAgICBjdXJzb3I6IGdyYWJiaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3JlYWRvbmx5XSkgLmRyb3AtYXJlYS5pcy1hc3NpZ25lZDpub3QoLm5vdC1mb3VuZCksXG4gICAgICAgIDpob3N0KFtyZWFkb25seV0pIC5kcm9wLWFyZWEuaXMtYXNzaWduZWQ6bm90KC5ub3QtZm91bmQpOmFjdGl2ZSB7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGVudCA+IGRpdixcbiAgICAgICAgLmNvbnRlbnQgPiBtYXJrIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIGd2LWltYWdlIHtcbiAgICAgICAgICBoZWlnaHQ6IDkwcHg7XG4gICAgICAgICAgd2lkdGg6IDEwMHB4O1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5vdC1mb3VuZF9faWNvbiB7XG4gICAgICAgICAgLS1ndi1pY29uLS1jOiB2YXIoLS1ndi10aGVtZS1jb2xvci13YXJuaW5nLWxpZ2h0LCAjZmZiNzRkKTtcbiAgICAgICAgICBoZWlnaHQ6IDYwcHg7XG4gICAgICAgICAgd2lkdGg6IDYwcHg7XG4gICAgICAgICAgbWFyZ2luOiAwLjJyZW07XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wLWFyZWEtY29uZmlybSB7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgICBgLFxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvbGljeURyYWdnYWJsZSB7XG4gIHN0YXRpYyBwYXJzZShzdHIpIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShzdHIpO1xuICAgIHJldHVybiBuZXcgUG9saWN5RHJhZ2dhYmxlKGRhdGEucG9saWN5LCBkYXRhLnNvdXJjZVBvc2l0aW9uLCBkYXRhLnNvdXJjZUZsb3dLZXksIGRhdGEuc291cmNlRmxvd0lkLCBkYXRhLmZsb3dTdGVwKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHBvbGljeSwgc291cmNlUG9zaXRpb24sIHNvdXJjZUZsb3dLZXksIHNvdXJjZUZsb3dJZCwgZmxvd1N0ZXApIHtcbiAgICB0aGlzLnBvbGljeSA9IHBvbGljeTtcbiAgICB0aGlzLnNvdXJjZVBvc2l0aW9uID0gc291cmNlUG9zaXRpb247XG4gICAgdGhpcy5zb3VyY2VGbG93S2V5ID0gc291cmNlRmxvd0tleTtcbiAgICB0aGlzLnNvdXJjZUZsb3dJZCA9IHNvdXJjZUZsb3dJZDtcbiAgICB0aGlzLmZsb3dTdGVwID0gZmxvd1N0ZXA7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gIH1cbn1cblxud2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZ3YtZmxvdy1zdGVwJywgR3ZGbG93U3RlcCk7XG4iXX0=
303
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL3BvbGljeS1zdHVkaW8vZ3YtZmxvdy1zdGVwLmpzIl0sIm5hbWVzIjpbIkxpdEVsZW1lbnQiLCJodG1sIiwiY3NzIiwid2l0aFJlc2l6ZU9ic2VydmVyIiwiY2xhc3NNYXAiLCJkaXNwYXRjaEN1c3RvbUV2ZW50IiwiR3ZGbG93U3RlcCIsInByb3BlcnRpZXMiLCJpZCIsInR5cGUiLCJTdHJpbmciLCJyZWZsZWN0IiwiZ3JvdXAiLCJwYXJlbnQiLCJzdGVwIiwiT2JqZWN0IiwicG9saWN5IiwiZWRpdGluZyIsIkJvb2xlYW4iLCJkcmFnZ2luZyIsImhvdmVyIiwidGl0bGUiLCJlbXB0eSIsImNvbmZpcm0iLCJkaXNhYmxlZCIsInJlYWRvbmx5IiwiX3NtYWxsIiwiYXR0cmlidXRlIiwiX2NvbmZpcm1EZWxldGUiLCJfY29uZmlybUR1cGxpY2F0ZSIsImNvbnN0cnVjdG9yIiwiYnJlYWtwb2ludHMiLCJ3aWR0aCIsIm9uUmVzaXplIiwiX29uRHVwbGljYXRlIiwiX29uQ29uZmlybUR1cGxpY2F0ZSIsInRhcmdldCIsIl9vbkNhbmNlbER1cGxpY2F0ZSIsIl9vbkNsaWNrIiwiZSIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicHJldmVudERlZmF1bHQiLCJfZWRpdCIsIl9vbk1vdXNlRW50ZXIiLCJkcm9wZG93bk1lbnUiLCJzaGFkb3dSb290IiwicXVlcnlTZWxlY3RvciIsInNldEF0dHJpYnV0ZSIsIl9vbk1vdXNlTGVhdmUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJfb25EZWxldGUiLCJfb25Db25maXJtRGVsZXRlIiwiX29uQ2FuY2VsRGVsZXRlIiwidXBkYXRlZCIsImhhcyIsIl9vbkNhbmNlbCIsInJlbW92ZSIsIl9vbkNvcHkiLCJfb25Nb3ZlIiwiX29uQ2hhbmdlU3RhdGUiLCJkZXRhaWwiLCJlbmFibGVkIiwiX3JlbmRlckRyb3Bkb3duTWVudSIsInJlc2V0Q29uZmlybSIsInJlbmRlciIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImljb24iLCJub3RGb3VuZCIsImNsYXNzZXMiLCJzdHlsZXMiLCJQb2xpY3lEcmFnZ2FibGUiLCJwYXJzZSIsInN0ciIsImRhdGEiLCJKU09OIiwic291cmNlUG9zaXRpb24iLCJzb3VyY2VGbG93S2V5Iiwic291cmNlRmxvd0lkIiwiZmxvd1N0ZXAiLCJ0b1N0cmluZyIsInN0cmluZ2lmeSIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsYUFBdEM7QUFDQSxTQUFTQyxrQkFBVCxRQUFtQyxnQ0FBbkM7QUFDQSxTQUFTQyxRQUFULFFBQXlCLCtCQUF6QjtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsT0FBTyxtQkFBUDtBQUNBLE9BQU8sK0JBQVA7QUFDQSxPQUFPLG9CQUFQO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxVQUFOLFNBQXlCSCxrQkFBa0IsQ0FBQ0gsVUFBRCxDQUEzQyxDQUF3RDtBQUN4QyxhQUFWTyxVQUFVLEdBQUc7QUFDdEIsV0FBTztBQUNMQyxNQUFBQSxFQUFFLEVBQUU7QUFBRUMsUUFBQUEsSUFBSSxFQUFFQyxNQUFSO0FBQWdCQyxRQUFBQSxPQUFPLEVBQUU7QUFBekIsT0FEQztBQUVMQyxNQUFBQSxLQUFLLEVBQUU7QUFBRUgsUUFBQUEsSUFBSSxFQUFFQyxNQUFSO0FBQWdCQyxRQUFBQSxPQUFPLEVBQUU7QUFBekIsT0FGRjtBQUdMRSxNQUFBQSxNQUFNLEVBQUU7QUFBRUosUUFBQUEsSUFBSSxFQUFFQyxNQUFSO0FBQWdCQyxRQUFBQSxPQUFPLEVBQUU7QUFBekIsT0FISDtBQUlMRyxNQUFBQSxJQUFJLEVBQUU7QUFBRUwsUUFBQUEsSUFBSSxFQUFFTTtBQUFSLE9BSkQ7QUFLTEMsTUFBQUEsTUFBTSxFQUFFO0FBQUVQLFFBQUFBLElBQUksRUFBRU07QUFBUixPQUxIO0FBTUxFLE1BQUFBLE9BQU8sRUFBRTtBQUFFUixRQUFBQSxJQUFJLEVBQUVTLE9BQVI7QUFBaUJQLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQU5KO0FBT0xRLE1BQUFBLFFBQVEsRUFBRTtBQUFFVixRQUFBQSxJQUFJLEVBQUVTLE9BQVI7QUFBaUJQLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQVBMO0FBUUxTLE1BQUFBLEtBQUssRUFBRTtBQUFFWCxRQUFBQSxJQUFJLEVBQUVTLE9BQVI7QUFBaUJQLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQVJGO0FBU0xVLE1BQUFBLEtBQUssRUFBRTtBQUFFWixRQUFBQSxJQUFJLEVBQUVDLE1BQVI7QUFBZ0JDLFFBQUFBLE9BQU8sRUFBRTtBQUF6QixPQVRGO0FBVUxXLE1BQUFBLEtBQUssRUFBRTtBQUFFYixRQUFBQSxJQUFJLEVBQUVTLE9BQVI7QUFBaUJQLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQVZGO0FBV0xZLE1BQUFBLE9BQU8sRUFBRTtBQUFFZCxRQUFBQSxJQUFJLEVBQUVTLE9BQVI7QUFBaUJQLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQVhKO0FBWUxhLE1BQUFBLFFBQVEsRUFBRTtBQUFFZixRQUFBQSxJQUFJLEVBQUVTLE9BQVI7QUFBaUJQLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQVpMO0FBYUxjLE1BQUFBLFFBQVEsRUFBRTtBQUFFaEIsUUFBQUEsSUFBSSxFQUFFUyxPQUFSO0FBQWlCUCxRQUFBQSxPQUFPLEVBQUU7QUFBMUIsT0FiTDtBQWNMZSxNQUFBQSxNQUFNLEVBQUU7QUFBRWpCLFFBQUFBLElBQUksRUFBRVMsT0FBUjtBQUFpQlMsUUFBQUEsU0FBUyxFQUFFO0FBQTVCLE9BZEg7QUFlTEMsTUFBQUEsY0FBYyxFQUFFO0FBQUVuQixRQUFBQSxJQUFJLEVBQUVTLE9BQVI7QUFBaUJQLFFBQUFBLE9BQU8sRUFBRTtBQUExQixPQWZYO0FBZ0JMa0IsTUFBQUEsaUJBQWlCLEVBQUU7QUFBRXBCLFFBQUFBLElBQUksRUFBRVMsT0FBUjtBQUFpQlAsUUFBQUEsT0FBTyxFQUFFO0FBQTFCO0FBaEJkLEtBQVA7QUFrQkQ7O0FBRURtQixFQUFBQSxXQUFXLEdBQUc7QUFDWjtBQUNBLFNBQUtSLEtBQUwsR0FBYSxJQUFiO0FBQ0EsU0FBS1MsV0FBTCxHQUFtQjtBQUNqQkMsTUFBQUEsS0FBSyxFQUFFLENBQUMsR0FBRCxFQUFNLEdBQU47QUFEVSxLQUFuQjtBQUdEOztBQUVEQyxFQUFBQSxRQUFRLENBQUM7QUFBRUQsSUFBQUE7QUFBRixHQUFELEVBQVk7QUFDbEIsU0FBS04sTUFBTCxHQUFjTSxLQUFLLElBQUksR0FBdkI7QUFDRDs7QUFFREUsRUFBQUEsWUFBWSxHQUFHO0FBQ2IsU0FBS0wsaUJBQUwsR0FBeUIsSUFBekI7QUFDRDs7QUFFRE0sRUFBQUEsbUJBQW1CLEdBQUc7QUFDcEIsU0FBS04saUJBQUwsR0FBeUIsS0FBekI7QUFDQXhCLElBQUFBLG1CQUFtQixDQUFDLElBQUQsRUFBTyxXQUFQLEVBQW9CO0FBQUVTLE1BQUFBLElBQUksRUFBRSxLQUFLQSxJQUFiO0FBQW1CRSxNQUFBQSxNQUFNLEVBQUUsS0FBS0EsTUFBaEM7QUFBd0NvQixNQUFBQSxNQUFNLEVBQUU7QUFBaEQsS0FBcEIsQ0FBbkI7QUFDRDs7QUFFREMsRUFBQUEsa0JBQWtCLEdBQUc7QUFDbkIsU0FBS1IsaUJBQUwsR0FBeUIsS0FBekI7QUFDRDs7QUFFRFMsRUFBQUEsUUFBUSxDQUFDQyxDQUFELEVBQUk7QUFDVixRQUFJLENBQUNBLENBQUMsQ0FBQ0gsTUFBRixDQUFTSSxTQUFULENBQW1CQyxRQUFuQixDQUE0QixRQUE1QixDQUFELElBQTBDLENBQUMsS0FBS3hCLE9BQXBELEVBQTZEO0FBQzNEc0IsTUFBQUEsQ0FBQyxDQUFDRyxjQUFGOztBQUNBLFdBQUtDLEtBQUw7QUFDRDtBQUNGOztBQUVEQSxFQUFBQSxLQUFLLEdBQUc7QUFDTixRQUFJLEtBQUszQixNQUFMLElBQWUsQ0FBQyxLQUFLUSxRQUF6QixFQUFtQztBQUNqQ25CLE1BQUFBLG1CQUFtQixDQUFDLElBQUQsRUFBTyxNQUFQLEVBQWU7QUFBRVMsUUFBQUEsSUFBSSxFQUFFLEtBQUtBLElBQWI7QUFBbUJFLFFBQUFBLE1BQU0sRUFBRSxLQUFLQSxNQUFoQztBQUF3Q0osUUFBQUEsS0FBSyxFQUFFLEtBQUtBO0FBQXBELE9BQWYsQ0FBbkI7QUFDRDtBQUNGOztBQUVEZ0MsRUFBQUEsYUFBYSxHQUFHO0FBQ2QsUUFBSSxDQUFDLEtBQUtwQixRQUFWLEVBQW9CO0FBQ2xCLFdBQUtKLEtBQUwsR0FBYSxJQUFiOztBQUNBLFVBQUksQ0FBQyxLQUFLSyxRQUFWLEVBQW9CO0FBQ2xCLGNBQU1vQixZQUFZLEdBQUcsS0FBS0MsVUFBTCxDQUFnQkMsYUFBaEIsQ0FBOEIsa0JBQTlCLENBQXJCO0FBQ0FGLFFBQUFBLFlBQVksQ0FBQ0csWUFBYixDQUEwQixNQUExQixFQUFrQyxJQUFsQztBQUNEO0FBQ0Y7QUFDRjs7QUFFREMsRUFBQUEsYUFBYSxHQUFHO0FBQ2QsUUFBSSxDQUFDLEtBQUt6QixRQUFWLEVBQW9CO0FBQ2xCLFdBQUtKLEtBQUwsR0FBYSxLQUFiOztBQUNBLFVBQUksQ0FBQyxLQUFLSyxRQUFWLEVBQW9CO0FBQ2xCLGNBQU1vQixZQUFZLEdBQUcsS0FBS0MsVUFBTCxDQUFnQkMsYUFBaEIsQ0FBOEIsa0JBQTlCLENBQXJCO0FBQ0FGLFFBQUFBLFlBQVksQ0FBQ0ssZUFBYixDQUE2QixNQUE3QjtBQUNEO0FBQ0Y7QUFDRjs7QUFFREMsRUFBQUEsU0FBUyxHQUFHO0FBQ1YsU0FBS3ZCLGNBQUwsR0FBc0IsSUFBdEI7QUFDRDs7QUFFRHdCLEVBQUFBLGdCQUFnQixHQUFHO0FBQ2pCLFNBQUt4QixjQUFMLEdBQXNCLEtBQXRCO0FBQ0F2QixJQUFBQSxtQkFBbUIsQ0FBQyxJQUFELEVBQU8sUUFBUCxFQUFpQjtBQUFFUyxNQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFBYixLQUFqQixDQUFuQjtBQUNEOztBQUVEdUMsRUFBQUEsZUFBZSxHQUFHO0FBQ2hCLFNBQUt6QixjQUFMLEdBQXNCLEtBQXRCO0FBQ0Q7O0FBRUQwQixFQUFBQSxPQUFPLENBQUMvQyxVQUFELEVBQWE7QUFDbEIsUUFBSUEsVUFBVSxDQUFDZ0QsR0FBWCxDQUFlLFVBQWYsS0FBOEIsS0FBS3BDLFFBQUwsS0FBa0IsSUFBcEQsRUFBMEQ7QUFDeEQsWUFBTTBCLFlBQVksR0FBRyxLQUFLQyxVQUFMLENBQWdCQyxhQUFoQixDQUE4QixrQkFBOUIsQ0FBckI7QUFDQUYsTUFBQUEsWUFBWSxDQUFDSyxlQUFiLENBQTZCLE1BQTdCO0FBQ0Q7O0FBQ0QsUUFBSTNDLFVBQVUsQ0FBQ2dELEdBQVgsQ0FBZSxNQUFmLEtBQTBCLEtBQUt6QyxJQUFMLElBQWEsSUFBM0MsRUFBaUQ7QUFDL0MsV0FBS1EsS0FBTCxHQUFhLEtBQWI7QUFDRDtBQUNGOztBQUVEa0MsRUFBQUEsU0FBUyxHQUFHO0FBQ1YsU0FBS0MsTUFBTDtBQUNEOztBQUVEQyxFQUFBQSxPQUFPLEdBQUc7QUFDUnJELElBQUFBLG1CQUFtQixDQUFDLElBQUQsRUFBTyxNQUFQLENBQW5CO0FBQ0Q7O0FBRURzRCxFQUFBQSxPQUFPLEdBQUc7QUFDUnRELElBQUFBLG1CQUFtQixDQUFDLElBQUQsRUFBTyxNQUFQLENBQW5CO0FBQ0Q7O0FBRUR1RCxFQUFBQSxjQUFjLENBQUM7QUFBRUMsSUFBQUE7QUFBRixHQUFELEVBQWE7QUFDekJ4RCxJQUFBQSxtQkFBbUIsQ0FBQyxJQUFELEVBQU8sY0FBUCxFQUF1QjtBQUFFUyxNQUFBQSxJQUFJLEVBQUUsS0FBS0EsSUFBYjtBQUFtQmdELE1BQUFBLE9BQU8sRUFBRUQ7QUFBNUIsS0FBdkIsQ0FBbkI7QUFDRDs7QUFFREUsRUFBQUEsbUJBQW1CLEdBQUc7QUFDcEIsUUFBSSxLQUFLdkMsUUFBTCxJQUFpQixLQUFLQyxRQUExQixFQUFvQztBQUNsQyxhQUFPeEIsSUFBSSxFQUFYO0FBQ0Q7O0FBQ0QsVUFBTTZELE9BQU8sR0FBRyxLQUFLaEQsSUFBTCxDQUFVZ0QsT0FBVixLQUFzQixLQUF0QztBQUNBLFdBQU83RCxJQUFJLGlGQUtFNkQsT0FBTyxHQUFHLFNBQUgsR0FBZSxVQUx4QixZQU1FQSxPQUFPLEdBQUcsa0JBQUgsR0FBd0IsaUJBTmpDLHVCQU9hLEtBQUtGLGNBUGxCLGFBUUdFLE9BUkgsZ0hBVXVGLEtBQUs1QixZQVY1RixrSEFhZ0YsS0FBS2lCLFNBYnJGLDBDQUFYO0FBZUQ7O0FBRURhLEVBQUFBLFlBQVksR0FBRztBQUNiLFNBQUt6QyxPQUFMLEdBQWUsS0FBZjtBQUNBLFNBQUtLLGNBQUwsR0FBc0IsS0FBdEI7QUFDQSxTQUFLQyxpQkFBTCxHQUF5QixLQUF6QjtBQUNEOztBQUVEb0MsRUFBQUEsTUFBTSxHQUFHO0FBQ1AsUUFBSSxLQUFLMUMsT0FBVCxFQUFrQjtBQUNoQixhQUFPdEIsSUFBSSxnRkFDNEIsS0FBS3lELE9BRGpDLHlEQUU0QixLQUFLQyxPQUZqQyw4REFHaUMsS0FBS0gsU0FIdEMsNkJBQVg7QUFLRCxLQU5ELE1BTU8sSUFBSSxLQUFLNUIsY0FBVCxFQUF5QjtBQUM5QixhQUFPM0IsSUFBSSx1RkFDbUMsS0FBS21ELGdCQUR4QyxnRUFFaUMsS0FBS0MsZUFGdEMsNkJBQVg7QUFJRCxLQUxNLE1BS0EsSUFBSSxLQUFLeEIsaUJBQVQsRUFBNEI7QUFDakMsYUFBTzVCLElBQUksZ0ZBQzRCLEtBQUtrQyxtQkFEakMsbUVBRWlDLEtBQUtFLGtCQUZ0Qyw2QkFBWDtBQUlELEtBTE0sTUFLQSxJQUFJLENBQUMsS0FBS2YsS0FBVixFQUFpQjtBQUN0QixZQUFNNEMsSUFBSSxHQUFHLEtBQUtwRCxJQUFMLEdBQVksS0FBS0EsSUFBTCxDQUFVb0QsSUFBdEIsR0FBNkIsRUFBMUM7QUFDQSxZQUFNQyxXQUFXLEdBQUcsS0FBS3JELElBQUwsSUFBYSxLQUFLQSxJQUFMLENBQVVxRCxXQUF2QixHQUFxQyxLQUFLckQsSUFBTCxDQUFVcUQsV0FBL0MsR0FBNkQsRUFBakY7QUFDQSxZQUFNQyxJQUFJLEdBQUcsS0FBS3RELElBQUwsR0FBWSxLQUFLRSxNQUFMLElBQWUsS0FBS0EsTUFBTCxDQUFZb0QsSUFBdkMsR0FBOEMsSUFBM0Q7QUFDQSxZQUFNTixPQUFPLEdBQUcsS0FBS2hELElBQUwsSUFBYSxLQUFLQSxJQUFMLENBQVVnRCxPQUFWLEtBQXNCLEtBQW5EO0FBQ0EsWUFBTU8sUUFBUSxHQUFHLEtBQUtyRCxNQUFMLElBQWUsSUFBaEM7O0FBQ0EsVUFBSXFELFFBQUosRUFBYztBQUNaLGFBQUtoRCxLQUFMLEdBQWEsNkNBQWI7QUFDRCxPQUZELE1BRU87QUFDTCxhQUFLQSxLQUFMLEdBQWE4QyxXQUFiO0FBQ0Q7O0FBQ0QsWUFBTUcsT0FBTyxHQUFHO0FBQ2QscUJBQWEsSUFEQztBQUVkLHVCQUFlSixJQUFJLEtBQUssRUFGVjtBQUdkLG9CQUFZRSxJQUFJLElBQUksSUFITjtBQUlkNUMsUUFBQUEsUUFBUSxFQUFFLENBQUNzQyxPQUpHO0FBS2QscUJBQWFPO0FBTEMsT0FBaEI7QUFPQSxhQUFPcEUsSUFBSSxlQUNBRyxRQUFRLENBQUNrRSxPQUFELENBRFIsYUFFQyxLQUFLaEMsUUFGTixrQkFHTSxLQUFLTSxhQUhYLGtCQUlNLEtBQUtLLGFBSlgsTUFNUCxLQUFLYyxtQkFBTCxFQU5PLDBCQVFMSyxJQUFJLEdBQUduRSxJQUFJLGtCQUFrQm1FLElBQWxCLGVBQVAsR0FBK0NuRSxJQUFJLEVBUmxELElBU0xtRSxJQUFJLElBQUksSUFBUixJQUFnQkMsUUFBaEIsR0FBMkJwRSxJQUFJLDBFQUEvQixHQUE0RyxFQVR2Ryw0QkFXZWlFLElBWGYsbUNBWXNCQyxXQVp0Qiw4QkFBWDtBQWdCRCxLQWxDTSxNQWtDQTtBQUNMLGFBQU9sRSxJQUFJLCtCQUFYO0FBQ0Q7QUFDRjs7QUFFZ0IsYUFBTnNFLE1BQU0sR0FBRztBQUNsQixXQUFPLENBQ0w7QUFDQXJFLElBQUFBLEdBQUcsbTRFQUZFLENBQVA7QUE4S0Q7O0FBMVg0RDtBQTZYL0QsT0FBTyxNQUFNc0UsZUFBTixDQUFzQjtBQUNmLFNBQUxDLEtBQUssQ0FBQ0MsR0FBRCxFQUFNO0FBQ2hCLFVBQU1DLElBQUksR0FBR0MsSUFBSSxDQUFDSCxLQUFMLENBQVdDLEdBQVgsQ0FBYjtBQUNBLFdBQU8sSUFBSUYsZUFBSixDQUFvQkcsSUFBSSxDQUFDM0QsTUFBekIsRUFBaUMyRCxJQUFJLENBQUNFLGNBQXRDLEVBQXNERixJQUFJLENBQUNHLGFBQTNELEVBQTBFSCxJQUFJLENBQUNJLFlBQS9FLEVBQTZGSixJQUFJLENBQUNLLFFBQWxHLENBQVA7QUFDRDs7QUFFRGxELEVBQUFBLFdBQVcsQ0FBQ2QsTUFBRCxFQUFTNkQsY0FBVCxFQUF5QkMsYUFBekIsRUFBd0NDLFlBQXhDLEVBQXNEQyxRQUF0RCxFQUFnRTtBQUN6RSxTQUFLaEUsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsU0FBSzZELGNBQUwsR0FBc0JBLGNBQXRCO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQkEsYUFBckI7QUFDQSxTQUFLQyxZQUFMLEdBQW9CQSxZQUFwQjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0Q7O0FBRURDLEVBQUFBLFFBQVEsR0FBRztBQUNULFdBQU9MLElBQUksQ0FBQ00sU0FBTCxDQUFlLElBQWYsQ0FBUDtBQUNEOztBQWhCMEI7QUFtQjdCQyxNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQXRCLENBQTZCLGNBQTdCLEVBQTZDL0UsVUFBN0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgTGl0RWxlbWVudCwgaHRtbCwgY3NzIH0gZnJvbSAnbGl0LWVsZW1lbnQnO1xuaW1wb3J0IHsgd2l0aFJlc2l6ZU9ic2VydmVyIH0gZnJvbSAnLi4vbWl4aW5zL3dpdGgtcmVzaXplLW9ic2VydmVyJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0LWh0bWwvZGlyZWN0aXZlcy9jbGFzcy1tYXAnO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbWFnZSc7XG5pbXBvcnQgJy4uL21vbGVjdWxlcy9ndi1kcm9wZG93bi1tZW51JztcbmltcG9ydCAnLi4vYXRvbXMvZ3Ytc3dpdGNoJztcblxuLyoqXG4gKiBGbG93IGFyZWEgY29tcG9uZW50XG4gKlxuICogQGZpcmVzIGd2LWZsb3ctc3RlcDpkdXBsaWNhdGUgLSBEdXBsaWNhdGUgZXZlbnQgZnJvbSBhY3Rpb25zXG4gKiBAZmlyZXMgZ3YtZmxvdy1zdGVwOmRlbGV0ZSAtIERlbGV0ZSBldmVudCBmcm9tIGFjdGlvbnNcbiAqIEBmaXJlcyBndi1mbG93LXN0ZXA6ZWRpdCAtIEVkaXQgZXZlbnRcbiAqIEBmaXJlcyBndi1mbG93LXN0ZXA6Y29weSAtIENvcHkgZXZlbnRcbiAqIEBmaXJlcyBndi1mbG93LXN0ZXA6bW92ZSAtIE1vdmUgZXZlbnRcbiAqXG4gKiBAYXR0ciB7T2JqZWN0PHtuYW1lLCBpY29uLCBjb25maWd1cmF0aW9uOntkZXNjcmlwdGlvbiwgLi4ufX0+fSBzdGVwIC0gdGhlIGZsb3cgc3RlcCwgY29uZmlndXJhdGlvbiBjb250YWlucyBmb3JtIGNvbmYgZm9yIGd2LXNjaGVtYS1mb3JtIGNvbXBvbmVudFxuICogQGF0dHIge0Jvb2xlYW59IGVkaXRpbmcgLSB0cnVlLCBpZiBlZGl0aW9uIGluIHByb2dyZXNzXG4gKiBAYXR0ciB7Qm9vbGVhbn0gZHJhZ2dpbmcgLSB0cnVlLCBpZiBkcmFnZ2luZyBpbiBwcm9ncmVzc1xuICogQGF0dHIge0Jvb2xlYW59IGhvdmVyIC0gdHJ1ZSwgaWYgYXJlYSBpcyBob3ZlclxuICogQGF0dHIge1N0cmluZ30gdGl0bGUgLSB0aXRsZSBvZiBhcmVhLCBkZWZhdWx0IGlzIFwiY29udGVudC5jb25maWd1cmF0aW9uLmRlc2NyaXB0aW9uXCIgaWYgZXhpc3RcbiAqIEBhdHRyIHtCb29sZWFufSBlbXB0eSAtIHRydWUsIGlmIHJlbmRlciBlbXB0eSBzdGF0ZVxuICogQGF0dHIge0Jvb2xlYW59IGNvbmZpcm0gLSB0cnVlLCBpZiByZW5kZXIgY29uZmlybSBzdGF0ZVxuICogQGF0dHIge0Jvb2xlYW59IGRpc2FibGVkIC0gdHJ1ZSBmb3IgZGlzYWJsZWRcbiAqIEBhdHRyIHtCb29sZWFufSByZWFkb25seSAtIHRydWUgaWYgcmVhZG9ubHlcbiAqL1xuZXhwb3J0IGNsYXNzIEd2Rmxvd1N0ZXAgZXh0ZW5kcyB3aXRoUmVzaXplT2JzZXJ2ZXIoTGl0RWxlbWVudCkge1xuICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB7IHR5cGU6IFN0cmluZywgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgZ3JvdXA6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBwYXJlbnQ6IHsgdHlwZTogU3RyaW5nLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBzdGVwOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgcG9saWN5OiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgZWRpdGluZzogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBkcmFnZ2luZzogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBob3ZlcjogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICB0aXRsZTogeyB0eXBlOiBTdHJpbmcsIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGVtcHR5OiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIGNvbmZpcm06IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgcmVhZG9ubHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgX3NtYWxsOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogZmFsc2UgfSxcbiAgICAgIF9jb25maXJtRGVsZXRlOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICAgIF9jb25maXJtRHVwbGljYXRlOiB7IHR5cGU6IEJvb2xlYW4sIHJlZmxlY3Q6IHRydWUgfSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmVtcHR5ID0gdHJ1ZTtcbiAgICB0aGlzLmJyZWFrcG9pbnRzID0ge1xuICAgICAgd2lkdGg6IFsxMDAsIDIwMF0sXG4gICAgfTtcbiAgfVxuXG4gIG9uUmVzaXplKHsgd2lkdGggfSkge1xuICAgIHRoaXMuX3NtYWxsID0gd2lkdGggPD0gMjAwO1xuICB9XG5cbiAgX29uRHVwbGljYXRlKCkge1xuICAgIHRoaXMuX2NvbmZpcm1EdXBsaWNhdGUgPSB0cnVlO1xuICB9XG5cbiAgX29uQ29uZmlybUR1cGxpY2F0ZSgpIHtcbiAgICB0aGlzLl9jb25maXJtRHVwbGljYXRlID0gZmFsc2U7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZHVwbGljYXRlJywgeyBzdGVwOiB0aGlzLnN0ZXAsIHBvbGljeTogdGhpcy5wb2xpY3ksIHRhcmdldDogdGhpcyB9KTtcbiAgfVxuXG4gIF9vbkNhbmNlbER1cGxpY2F0ZSgpIHtcbiAgICB0aGlzLl9jb25maXJtRHVwbGljYXRlID0gZmFsc2U7XG4gIH1cblxuICBfb25DbGljayhlKSB7XG4gICAgaWYgKCFlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2FjdGlvbicpICYmICF0aGlzLmVkaXRpbmcpIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuX2VkaXQoKTtcbiAgICB9XG4gIH1cblxuICBfZWRpdCgpIHtcbiAgICBpZiAodGhpcy5wb2xpY3kgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2VkaXQnLCB7IHN0ZXA6IHRoaXMuc3RlcCwgcG9saWN5OiB0aGlzLnBvbGljeSwgZ3JvdXA6IHRoaXMuZ3JvdXAgfSk7XG4gICAgfVxuICB9XG5cbiAgX29uTW91c2VFbnRlcigpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuaG92ZXIgPSB0cnVlO1xuICAgICAgaWYgKCF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duTWVudSA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1kcm9wZG93bi1tZW51Jyk7XG4gICAgICAgIGRyb3Bkb3duTWVudS5zZXRBdHRyaWJ1dGUoJ29wZW4nLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfb25Nb3VzZUxlYXZlKCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5ob3ZlciA9IGZhbHNlO1xuICAgICAgaWYgKCF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duTWVudSA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1kcm9wZG93bi1tZW51Jyk7XG4gICAgICAgIGRyb3Bkb3duTWVudS5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfb25EZWxldGUoKSB7XG4gICAgdGhpcy5fY29uZmlybURlbGV0ZSA9IHRydWU7XG4gIH1cblxuICBfb25Db25maXJtRGVsZXRlKCkge1xuICAgIHRoaXMuX2NvbmZpcm1EZWxldGUgPSBmYWxzZTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdkZWxldGUnLCB7IHN0ZXA6IHRoaXMuc3RlcCB9KTtcbiAgfVxuXG4gIF9vbkNhbmNlbERlbGV0ZSgpIHtcbiAgICB0aGlzLl9jb25maXJtRGVsZXRlID0gZmFsc2U7XG4gIH1cblxuICB1cGRhdGVkKHByb3BlcnRpZXMpIHtcbiAgICBpZiAocHJvcGVydGllcy5oYXMoJ2RyYWdnaW5nJykgJiYgdGhpcy5kcmFnZ2luZyA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgZHJvcGRvd25NZW51ID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LWRyb3Bkb3duLW1lbnUnKTtcbiAgICAgIGRyb3Bkb3duTWVudS5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTtcbiAgICB9XG4gICAgaWYgKHByb3BlcnRpZXMuaGFzKCdzdGVwJykgJiYgdGhpcy5zdGVwICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZW1wdHkgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBfb25DYW5jZWwoKSB7XG4gICAgdGhpcy5yZW1vdmUoKTtcbiAgfVxuXG4gIF9vbkNvcHkoKSB7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY29weScpO1xuICB9XG5cbiAgX29uTW92ZSgpIHtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdtb3ZlJyk7XG4gIH1cblxuICBfb25DaGFuZ2VTdGF0ZSh7IGRldGFpbCB9KSB7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2hhbmdlLXN0YXRlJywgeyBzdGVwOiB0aGlzLnN0ZXAsIGVuYWJsZWQ6IGRldGFpbCB9KTtcbiAgfVxuXG4gIF9yZW5kZXJEcm9wZG93bk1lbnUoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuIGh0bWxgYDtcbiAgICB9XG4gICAgY29uc3QgZW5hYmxlZCA9IHRoaXMuc3RlcC5lbmFibGVkICE9PSBmYWxzZTtcbiAgICByZXR1cm4gaHRtbGA8Z3YtZHJvcGRvd24tbWVudSByaWdodD5cbiAgICAgIDxndi1zd2l0Y2hcbiAgICAgICAgc2xvdD1cImFjdGlvblwiXG4gICAgICAgIGNsYXNzPVwiYWN0aW9uXCJcbiAgICAgICAgc21hbGxcbiAgICAgICAgbGFiZWw9XCIke2VuYWJsZWQgPyAnRW5hYmxlZCcgOiAnRGlzYWJsZWQnfVwiXG4gICAgICAgIHRpdGxlPVwiJHtlbmFibGVkID8gJ0Rpc2FibGUgcG9saWN5ID8nIDogJ0VuYWJsZSBwb2xpY3kgPyd9XCJcbiAgICAgICAgQGd2LXN3aXRjaDppbnB1dD1cIiR7dGhpcy5fb25DaGFuZ2VTdGF0ZX1cIlxuICAgICAgICAudmFsdWU9XCIke2VuYWJsZWR9XCJcbiAgICAgID48L2d2LXN3aXRjaD5cbiAgICAgIDxndi1idXR0b24gc2xvdD1cImFjdGlvblwiIGNsYXNzPVwiYWN0aW9uXCIgbGluayBzbWFsbCBpY29uPVwiZ2VuZXJhbDpkdXBsaWNhdGVcIiBAZ3YtYnV0dG9uOmNsaWNrPVwiJHt0aGlzLl9vbkR1cGxpY2F0ZX1cIlxuICAgICAgICA+RHVwbGljYXRlPC9ndi1idXR0b25cbiAgICAgID5cbiAgICAgIDxndi1idXR0b24gc2xvdD1cImFjdGlvblwiIGNsYXNzPVwiYWN0aW9uXCIgbGluayBzbWFsbCBpY29uPVwiaG9tZTp0cmFzaFwiIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uRGVsZXRlfVwiPkRlbGV0ZTwvZ3YtYnV0dG9uPlxuICAgIDwvZ3YtZHJvcGRvd24tbWVudT5gO1xuICB9XG5cbiAgcmVzZXRDb25maXJtKCkge1xuICAgIHRoaXMuY29uZmlybSA9IGZhbHNlO1xuICAgIHRoaXMuX2NvbmZpcm1EZWxldGUgPSBmYWxzZTtcbiAgICB0aGlzLl9jb25maXJtRHVwbGljYXRlID0gZmFsc2U7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlybSkge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImRyb3AtYXJlYSBkcm9wLWFyZWEtY29uZmlybVwiPlxuICAgICAgICA8Z3YtYnV0dG9uIHNtYWxsIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uQ29weX1cIj5Db3B5PC9ndi1idXR0b24+XG4gICAgICAgIDxndi1idXR0b24gc21hbGwgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25Nb3ZlfVwiPk1vdmU8L2d2LWJ1dHRvbj5cbiAgICAgICAgPGd2LWJ1dHRvbiBsaW5rIHNtYWxsIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uQ2FuY2VsfVwiPkNhbmNlbDwvZ3YtYnV0dG9uPlxuICAgICAgPC9kaXY+YDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2NvbmZpcm1EZWxldGUpIHtcbiAgICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJkcm9wLWFyZWEgZHJvcC1hcmVhLWNvbmZpcm1cIj5cbiAgICAgICAgPGd2LWJ1dHRvbiBzbWFsbCBkYW5nZXIgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25Db25maXJtRGVsZXRlfVwiPkRlbGV0ZTwvZ3YtYnV0dG9uPlxuICAgICAgICA8Z3YtYnV0dG9uIGxpbmsgc21hbGwgQGd2LWJ1dHRvbjpjbGljaz1cIiR7dGhpcy5fb25DYW5jZWxEZWxldGV9XCI+Q2FuY2VsPC9ndi1idXR0b24+XG4gICAgICA8L2Rpdj5gO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fY29uZmlybUR1cGxpY2F0ZSkge1xuICAgICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImRyb3AtYXJlYSBkcm9wLWFyZWEtY29uZmlybVwiPlxuICAgICAgICA8Z3YtYnV0dG9uIHNtYWxsIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uQ29uZmlybUR1cGxpY2F0ZX1cIj5EdXBsaWNhdGU8L2d2LWJ1dHRvbj5cbiAgICAgICAgPGd2LWJ1dHRvbiBsaW5rIHNtYWxsIEBndi1idXR0b246Y2xpY2s9XCIke3RoaXMuX29uQ2FuY2VsRHVwbGljYXRlfVwiPkNhbmNlbDwvZ3YtYnV0dG9uPlxuICAgICAgPC9kaXY+YDtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmVtcHR5KSB7XG4gICAgICBjb25zdCBuYW1lID0gdGhpcy5zdGVwID8gdGhpcy5zdGVwLm5hbWUgOiAnJztcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gdGhpcy5zdGVwICYmIHRoaXMuc3RlcC5kZXNjcmlwdGlvbiA/IHRoaXMuc3RlcC5kZXNjcmlwdGlvbiA6ICcnO1xuICAgICAgY29uc3QgaWNvbiA9IHRoaXMuc3RlcCA/IHRoaXMucG9saWN5ICYmIHRoaXMucG9saWN5Lmljb24gOiBudWxsO1xuICAgICAgY29uc3QgZW5hYmxlZCA9IHRoaXMuc3RlcCAmJiB0aGlzLnN0ZXAuZW5hYmxlZCAhPT0gZmFsc2U7XG4gICAgICBjb25zdCBub3RGb3VuZCA9IHRoaXMucG9saWN5ID09IG51bGw7XG4gICAgICBpZiAobm90Rm91bmQpIHtcbiAgICAgICAgdGhpcy50aXRsZSA9ICdXYXJuaW5nOiBwb2xpY3kgbm90IGZvdW5kIGluIHBsdWdpbnMgZm9sZGVyJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGl0bGUgPSBkZXNjcmlwdGlvbjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNsYXNzZXMgPSB7XG4gICAgICAgICdkcm9wLWFyZWEnOiB0cnVlLFxuICAgICAgICAnaXMtYXNzaWduZWQnOiBuYW1lICE9PSAnJyxcbiAgICAgICAgJ2hhcy1pY29uJzogaWNvbiAhPSBudWxsLFxuICAgICAgICBkaXNhYmxlZDogIWVuYWJsZWQsXG4gICAgICAgICdub3QtZm91bmQnOiBub3RGb3VuZCxcbiAgICAgIH07XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2XG4gICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcChjbGFzc2VzKX1cIlxuICAgICAgICBAY2xpY2s9XCIke3RoaXMuX29uQ2xpY2t9XCJcbiAgICAgICAgQG1vdXNlZW50ZXI9XCIke3RoaXMuX29uTW91c2VFbnRlcn1cIlxuICAgICAgICBAbW91c2VsZWF2ZT1cIiR7dGhpcy5fb25Nb3VzZUxlYXZlfVwiXG4gICAgICA+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyRHJvcGRvd25NZW51KCl9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgJHtpY29uID8gaHRtbGA8Z3YtaW1hZ2Ugc3JjPVwiJHtpY29ufVwiPjwvZ3YtaW1hZ2U+YCA6IGh0bWxgYH1cbiAgICAgICAgICAke2ljb24gPT0gbnVsbCAmJiBub3RGb3VuZCA/IGh0bWxgPGd2LWljb24gY2xhc3M9XCJub3QtZm91bmRfX2ljb25cIiBzaGFwZT1cImZpbmFuY2U6Zm9sZGVyLWVycm9yXCI+PC9ndi1pY29uPmAgOiAnJ31cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj4ke25hbWV9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj4ke2Rlc2NyaXB0aW9ufTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PiBgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwiZHJvcC1hcmVhXCI+PC9kaXY+YDtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtO1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoOmFjdGl2ZSkge1xuICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdChbZHJhZ2dpbmddKSB7XG4gICAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtZHJvcGRvd24tbWVudSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogcmlnaHQ7XG4gICAgICAgICAgdG9wOiAtMXB4O1xuICAgICAgICAgIGJvdHRvbTogLTFweDtcbiAgICAgICAgICB6LWluZGV4OiAxMDtcbiAgICAgICAgICAtLWd2LWRyb3Bkb3duLW1lbnUtLWJkdzogMCAwIDAgMXB4O1xuICAgICAgICAgIC0tZ3YtZHJvcGRvd24tbWVudS0tcDogMC4xcmVtIDAuM3JlbTtcbiAgICAgICAgICAtLWd2LWRyb3Bkb3duLW1lbnUtLWdnOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3Ytc3dpdGNoIHtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2hvdmVyXSkgLmRyb3AtYXJlYSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjNWE3Njg0LCAwIDFweCAzcHggIzVhNzY4NDtcbiAgICAgICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2RyYWdnaW5nXSkgLmRyb3AtYXJlYSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2VkaXRpbmddKSAuZHJvcC1hcmVhIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICM1YTc2ODQ7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjNWE3Njg0LCAwIDFweCAzcHggIzVhNzY4NDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFt3LWx0LTIwMF0pIGd2LWltYWdlIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgb3BhY2l0eTogMC4xO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW3ctbHQtMjAwXSkgLmRyb3AtYXJlYTpob3ZlciBndi1pbWFnZSB7XG4gICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFt3LWx0LTEwMF0pIC5kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtlbXB0eV0pIC5kcm9wLWFyZWEge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgI2JmYmZiZjtcbiAgICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZGVzY3JpcHRpb24ge1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiA0MnB4O1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcC1hcmVhIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkICNiZmJmYmY7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICAgIGhlaWdodDogODBweDtcbiAgICAgICAgICBtaW4td2lkdGg6IDgwcHg7XG4gICAgICAgICAgbWFyZ2luOiA0cHg7XG4gICAgICAgICAgcGFkZGluZzogNHB4O1xuICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIC0tZ3YtYnV0dG9uLS1mejogMTFweDtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDE1MG1zIGVhc2UtaW4tb3V0LCB0cmFuc2Zvcm0gMC4zcyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjNzIGVhc2UtaW4tb3V0LCBib3JkZXIgMC4zcyBlYXNlLWluLW91dDtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wLWFyZWEuZGlzYWJsZWQge1xuICAgICAgICAgIC8qb3BhY2l0eTogMC43OyovXG4gICAgICAgICAgLypiYWNrZ3JvdW5kLWNvbG9yOiAjQkZCRkJGOyAhKiBmYWxsYmFjayBjb2xvciBpZiBncmFkaWVudHMgYXJlIG5vdCBzdXBwb3J0ZWQgKiEqL1xuICAgICAgICAgIC8qYm9yZGVyLWNvbG9yOiB3aGl0ZTsqL1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wLWFyZWEubm90LWZvdW5kIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWd2LXRoZW1lLWNvbG9yLXdhcm5pbmctbGlnaHQsICNmZmI3NGQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3AtYXJlYS5oYXMtaWNvbiB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcC1hcmVhLmhhcy1pY29uIC5jb250ZW50IHtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcC1hcmVhLmlzLWFzc2lnbmVkIHtcbiAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICB9XG5cbiAgICAgICAgOmhvc3QoW2hvdmVyXSkgLmRyb3AtYXJlYS5pcy1hc3NpZ25lZDpub3QoLm5vdC1mb3VuZCkge1xuICAgICAgICAgIGN1cnNvcjogZ3JhYjtcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtob3Zlcl0pIC5kcm9wLWFyZWEuaXMtYXNzaWduZWQ6bm90KC5ub3QtZm91bmQpOmFjdGl2ZSB7XG4gICAgICAgICAgY3Vyc29yOiBncmFiYmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIDpob3N0KFtyZWFkb25seV0pIC5kcm9wLWFyZWEuaXMtYXNzaWduZWQ6bm90KC5ub3QtZm91bmQpLFxuICAgICAgICA6aG9zdChbcmVhZG9ubHldKSAuZHJvcC1hcmVhLmlzLWFzc2lnbmVkOm5vdCgubm90LWZvdW5kKTphY3RpdmUge1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQgPiBkaXYsXG4gICAgICAgIC5jb250ZW50ID4gbWFyayB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICBndi1pbWFnZSB7XG4gICAgICAgICAgaGVpZ2h0OiA5MHB4O1xuICAgICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgICBtYXJnaW46IDAuMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ub3QtZm91bmRfX2ljb24ge1xuICAgICAgICAgIC0tZ3YtaWNvbi0tYzogdmFyKC0tZ3YtdGhlbWUtY29sb3Itd2FybmluZy1saWdodCwgI2ZmYjc0ZCk7XG4gICAgICAgICAgaGVpZ2h0OiA2MHB4O1xuICAgICAgICAgIHdpZHRoOiA2MHB4O1xuICAgICAgICAgIG1hcmdpbjogMC4ycmVtO1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcC1hcmVhLWNvbmZpcm0ge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQb2xpY3lEcmFnZ2FibGUge1xuICBzdGF0aWMgcGFyc2Uoc3RyKSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2Uoc3RyKTtcbiAgICByZXR1cm4gbmV3IFBvbGljeURyYWdnYWJsZShkYXRhLnBvbGljeSwgZGF0YS5zb3VyY2VQb3NpdGlvbiwgZGF0YS5zb3VyY2VGbG93S2V5LCBkYXRhLnNvdXJjZUZsb3dJZCwgZGF0YS5mbG93U3RlcCk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwb2xpY3ksIHNvdXJjZVBvc2l0aW9uLCBzb3VyY2VGbG93S2V5LCBzb3VyY2VGbG93SWQsIGZsb3dTdGVwKSB7XG4gICAgdGhpcy5wb2xpY3kgPSBwb2xpY3k7XG4gICAgdGhpcy5zb3VyY2VQb3NpdGlvbiA9IHNvdXJjZVBvc2l0aW9uO1xuICAgIHRoaXMuc291cmNlRmxvd0tleSA9IHNvdXJjZUZsb3dLZXk7XG4gICAgdGhpcy5zb3VyY2VGbG93SWQgPSBzb3VyY2VGbG93SWQ7XG4gICAgdGhpcy5mbG93U3RlcCA9IGZsb3dTdGVwO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LWZsb3ctc3RlcCcsIEd2Rmxvd1N0ZXApO1xuIl19
@@ -13,8 +13,8 @@
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';
17
- import { classMap } from 'lit/directives/class-map';
16
+ import { LitElement, html, css } from 'lit-element';
17
+ import { classMap } from 'lit-html/directives/class-map';
18
18
  import { dispatchCustomEvent } from '../lib/events';
19
19
  import '../atoms/gv-image';
20
20
  import { appendDraggableImage, uuid } from '../lib/utils';
@@ -439,4 +439,4 @@ export class GvFlow extends LitElement {
439
439
 
440
440
  }
441
441
  window.customElements.define('gv-flow', GvFlow);
442
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL3BvbGljeS1zdHVkaW8vZ3YtZmxvdy5qcyJdLCJuYW1lcyI6WyJMaXRFbGVtZW50IiwiaHRtbCIsImNzcyIsImNsYXNzTWFwIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsImFwcGVuZERyYWdnYWJsZUltYWdlIiwidXVpZCIsIlBvbGljeURyYWdnYWJsZSIsImdldEZsb3dOYW1lIiwibWV0aG9kcyIsIkd2RmxvdyIsInByb3BlcnRpZXMiLCJmbG93IiwidHlwZSIsIk9iamVjdCIsInBsYW4iLCJwb2xpY2llcyIsInNlbGVjdGVkU3RlcElkIiwiU3RyaW5nIiwiZHJhZ1BvbGljeSIsImRyb3BQb2xpY3kiLCJkaXNhYmxlZCIsIkJvb2xlYW4iLCJyZWZsZWN0IiwiaGFzUG9saWN5RmlsdGVyIiwiYXR0cmlidXRlIiwiZmxvd3NUaXRsZSIsInJlYWRvbmx5IiwiY29uc3RydWN0b3IiLCJhZGRFdmVudExpc3RlbmVyIiwiX29uTW91c2VMZWF2ZSIsImdldENhbmRpZGF0ZSIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yIiwiZ2V0Rmxvd1N0ZXBzIiwiQXJyYXkiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsImdldE9yQ3JlYXRlQ2FuZGlkYXRlIiwiY2FuZGlkYXRlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwicmVtb3ZlQ2FuZGlkYXRlIiwicmVtb3ZlIiwiX2NhbkRyb3BQb2xpY3kiLCJmbG93S2V5IiwicG9saWN5Iiwib25SZXF1ZXN0Iiwib25SZXNwb25zZSIsIkVycm9yIiwiX29uRHJhZ092ZXIiLCJlIiwiZGF0YVRyYW5zZmVyIiwiaXRlbXMiLCJsZW5ndGgiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInRhcmdldCIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwiaGFzQXR0cmlidXRlIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwieCIsIndpZHRoIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY29uZGl0aW9uIiwiY2xpZW50WCIsIm5leHRFbGVtZW50U2libGluZyIsImluc2VydEFkamFjZW50RWxlbWVudCIsInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJkcm9wQXJlYXMiLCJwcmVwZW5kIiwiX29uRHJhZ0VuZCIsIl9kcmFnZ2FibGVQb2xpY3lJbWFnZSIsIl9vbkRyYWdTdGFydCIsInNvdXJjZUZsb3dLZXkiLCJmbG93U3RlcCIsInNvdXJjZVBvc2l0aW9uIiwiZmluZFBvbGljeSIsIndpbmRvd0NsaWNrIiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJ3aW5kb3ciLCJkaXNwYXRjaEV2ZW50IiwiYWRkIiwiX2lkIiwic2V0RGF0YSIsInRvU3RyaW5nIiwic2l6ZSIsImljb24iLCJzZXREcmFnSW1hZ2UiLCJwZXJmb3JtVXBkYXRlIiwiZm9yRWFjaCIsInMiLCJyZXF1ZXN0VXBkYXRlIiwiZHJhZ2dpbmdBcmVhIiwiX29uRHJvcCIsInN0ZXAiLCJyZXNldENvbmZpcm0iLCJib3giLCJjbG9zZXN0IiwicG9zaXRpb24iLCJzb21lIiwiYXJlYSIsInNvdXJjZUZsb3dJZCIsIm1vdmUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJmbG93SWQiLCJjYW5jZWxFZGl0IiwiZ2V0Rmxvd1N0ZXAiLCJfb25FZGl0U3RlcCIsImRldGFpbCIsImdyb3VwIiwiX29uRHVwbGljYXRlU3RlcCIsImR1cGxpY2F0ZVBvc2l0aW9uIiwiZHVwbGljYXRlU3RlcCIsIl9pc0VkaXRhYmxlIiwiX29uRGVsZXRlU3RlcCIsIl9vbkNoYW5nZVN0ZXBTdGF0ZSIsIl9yZW5kZXJEcm9wU3RlcCIsImJpbmQiLCJfZ2V0VXBkYXRlQ29tcGxldGUiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwidXBkYXRlQ29tcGxldGUiLCJ1cGRhdGVkIiwiaGFzIiwib25EcmFnRW5kIiwic2V0VGltZW91dCIsIl9nZXRMYWJlbCIsInRvVXBwZXJDYXNlIiwiY29sbGVjdGlvbk5hbWUiLCJuYW1lIiwicmVuZGVyIiwicHJlVGFyZ2V0IiwicG9zdFRhcmdldCIsInByZUZvcmJpZGRlbiIsInBvc3RGb3JiaWRkZW4iLCJoYXNQb3N0IiwicHJlIiwidGFyZ2V0ZWQiLCJmb3JiaWRkZW4iLCJpIiwicG9zdCIsInBvbGljeUlkIiwiZmluZCIsInAiLCJpZCIsInN0eWxlcyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsS0FBdEM7QUFDQSxTQUFTQyxRQUFULFFBQXlCLDBCQUF6QjtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsT0FBTyxtQkFBUDtBQUNBLFNBQVNDLG9CQUFULEVBQStCQyxJQUEvQixRQUEyQyxjQUEzQztBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsZ0JBQWhDO0FBQ0EsU0FBU0MsV0FBVCxFQUFzQkMsT0FBdEIsUUFBcUMsZUFBckM7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxNQUFOLFNBQXFCVixVQUFyQixDQUFnQztBQUNoQixhQUFWVyxVQUFVLEdBQUc7QUFDdEIsV0FBTztBQUNMQyxNQUFBQSxJQUFJLEVBQUU7QUFBRUMsUUFBQUEsSUFBSSxFQUFFQztBQUFSLE9BREQ7QUFFTEMsTUFBQUEsSUFBSSxFQUFFO0FBQUVGLFFBQUFBLElBQUksRUFBRUM7QUFBUixPQUZEO0FBR0xFLE1BQUFBLFFBQVEsRUFBRTtBQUFFSCxRQUFBQSxJQUFJLEVBQUVDO0FBQVIsT0FITDtBQUlMRyxNQUFBQSxjQUFjLEVBQUU7QUFBRUosUUFBQUEsSUFBSSxFQUFFSztBQUFSLE9BSlg7QUFLTEMsTUFBQUEsVUFB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REFRa0IsS0FBSzlHLElBQUwsQ0FBVXNJLElBQVYsQ0FBZXBCLEdBQWYsQ0FBbUIsQ0FBQ2hELFFBQUQsRUFBV21FLENBQVgsS0FBaUIsS0FBS3hCLGVBQUwsQ0FBcUIsTUFBckIsRUFBNkIzQyxRQUE3QixFQUF1Q21FLENBQXZDLENBQXBDLENBUmxCLHVDQVUyQ1AsVUFBVSxHQUFHLFdBQUgsR0FBaUIsS0FBS04sU0FBTCxDQUFlLE1BQWYsQ0FWdEUsdUJBREMsR0FlTCxFQW5DRCw4QkFBWDtBQXdDRDs7QUFFRHBELEVBQUFBLFVBQVUsQ0FBQ21FLFFBQUQsRUFBVztBQUNuQixVQUFNcEcsTUFBTSxHQUFHLEtBQUsvQixRQUFMLENBQWNvSSxJQUFkLENBQW9CQyxDQUFELElBQU9BLENBQUMsQ0FBQ0MsRUFBRixLQUFTSCxRQUFuQyxDQUFmOztBQUNBLFFBQUlwRyxNQUFNLElBQUksSUFBZCxFQUFvQixDQUNsQjtBQUNEOztBQUNELFdBQU9BLE1BQVA7QUFDRDs7QUFFZ0IsYUFBTndHLE1BQU0sR0FBRztBQUNsQixXQUFPLENBQ0w5SSxPQURLLEVBRUw7QUFDQVAsSUFBQUEsR0FBRywwMUVBSEUsQ0FBUDtBQTJNRDs7QUFua0JvQztBQXNrQnZDa0YsTUFBTSxDQUFDb0UsY0FBUCxDQUFzQkMsTUFBdEIsQ0FBNkIsU0FBN0IsRUFBd0MvSSxNQUF4QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBMaXRFbGVtZW50LCBodG1sLCBjc3MgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAnO1xuaW1wb3J0IHsgZGlzcGF0Y2hDdXN0b21FdmVudCB9IGZyb20gJy4uL2xpYi9ldmVudHMnO1xuaW1wb3J0ICcuLi9hdG9tcy9ndi1pbWFnZSc7XG5pbXBvcnQgeyBhcHBlbmREcmFnZ2FibGVJbWFnZSwgdXVpZCB9IGZyb20gJy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBQb2xpY3lEcmFnZ2FibGUgfSBmcm9tICcuL2d2LWZsb3ctc3RlcCc7XG5pbXBvcnQgeyBnZXRGbG93TmFtZSwgbWV0aG9kcyB9IGZyb20gJy4uL2xpYi9zdHVkaW8nO1xuXG4vKipcbiAqIEZsb3cgY29tcG9uZW50XG4gKlxuICogQGZpcmVzIGd2LWZsb3c6ZHJvcCAtIERyb3AgZXZlbnRcbiAqIEBmaXJlcyBndi1mbG93OmVkaXQgLSBFZGl0IGV2ZW50XG4gKiBAZmlyZXMgZ3YtZmxvdzpkZWxldGUgLSBEZWxldGUgZXZlbnRcbiAqXG4gKiBAYXR0ciB7T2JqZWN0fSBmbG93IC0gdGhlIGZsb3cgdG8gZGlzcGxheVxuICogQGF0dHIge1N0cmluZ30gc2VsZWN0ZWRTdGVwSWQgLSB0aGUgc2VsZWN0ZWQgc3RlcCBpZFxuICogQGF0dHIge09iamVjdH0gdGFyZ2V0ZWRQb2xpY3kgLSB0cnVlLCBpZiBmbG93IGlzIHRhcmdldGVkIGZvciBkcm9wIGFjdGlvblxuICogQGF0dHIge0Jvb2xlYW59IGhhcy1wb2xpY3ktZmlsdGVyIC0gdHJ1ZSBpZiBwb2xpY2llcyBoYXZlIG9uUmVxdWVzdC9vblJlc3BvbnNlIHByb3BlcnRpZXNcbiAqIEBhdHRyIHtTdHJpbmd9IGZsb3dzVGl0bGUgLSBmbG93cyBtZW51IHRpdGxlXG4gKiBAYXR0ciB7Qm9vbGVhbn0gZGlzYWJsZWQgLSB0cnVlIGZvciBkaXNhYmxlZFxuICogQGF0dHIge0Jvb2xlYW59IHJlYWRvbmx5IC0gdHJ1ZSBpZiByZWFkb25seVxuICovXG5leHBvcnQgY2xhc3MgR3ZGbG93IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmxvdzogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIHBsYW46IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBwb2xpY2llczogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIHNlbGVjdGVkU3RlcElkOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgICAgZHJhZ1BvbGljeTogeyB0eXBlOiBPYmplY3QgfSxcbiAgICAgIGRyb3BQb2xpY3k6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBkaXNhYmxlZDogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgICBoYXNQb2xpY3lGaWx0ZXI6IHsgdHlwZTogQm9vbGVhbiwgYXR0cmlidXRlOiAnaGFzLXBvbGljeS1maWx0ZXInIH0sXG4gICAgICBmbG93c1RpdGxlOiB7IHR5cGU6IFN0cmluZywgYXR0cmlidXRlOiAnZmxvd3MtdGl0bGUnIH0sXG4gICAgICByZWFkb25seTogeyB0eXBlOiBCb29sZWFuLCByZWZsZWN0OiB0cnVlIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5mbG93c1RpdGxlID0gJ0Zsb3dzJztcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCB0aGlzLl9vbk1vdXNlTGVhdmUpO1xuICB9XG5cbiAgX29uTW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLmRyYWdQb2xpY3kgPSBudWxsO1xuICAgIHRoaXMuZHJvcFBvbGljeSA9IG51bGw7XG4gIH1cblxuICBnZXRDYW5kaWRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdndi1mbG93LXN0ZXBbZW1wdHldJyk7XG4gIH1cblxuICBnZXRGbG93U3RlcHMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LWZsb3ctc3RlcCcpKTtcbiAgfVxuXG4gIGdldE9yQ3JlYXRlQ2FuZGlkYXRlKCkge1xuICAgIGxldCBjYW5kaWRhdGUgPSB0aGlzLmdldENhbmRpZGF0ZSgpO1xuICAgIGlmICghY2FuZGlkYXRlKSB7XG4gICAgICBjYW5kaWRhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdndi1mbG93LXN0ZXAnKTtcbiAgICAgIGNhbmRpZGF0ZS5zZXRBdHRyaWJ1dGUoJ2VtcHR5JywgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiBjYW5kaWRhdGU7XG4gIH1cblxuICByZW1vdmVDYW5kaWRhdGUoKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gdGhpcy5nZXRDYW5kaWRhdGUoKTtcbiAgICBpZiAoY2FuZGlkYXRlKSB7XG4gICAgICBjYW5kaWRhdGUucmVtb3ZlKCk7XG4gICAgfVxuICB9XG5cbiAgX2NhbkRyb3BQb2xpY3koZmxvd0tleSwgcG9saWN5KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAocG9saWN5ICE9IG51bGwpIHtcbiAgICAgIGlmIChmbG93S2V5ID09PSAncHJlJykge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNQb2xpY3lGaWx0ZXIgIT09IHRydWUgfHwgcG9saWN5Lm9uUmVxdWVzdCA9PT0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoZmxvd0tleSA9PT0gJ3Bvc3QnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc1BvbGljeUZpbHRlciAhPT0gdHJ1ZSB8fCBwb2xpY3kub25SZXNwb25zZSA9PT0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGZsb3drZXkgWyR7Zmxvd0tleX1dIHBhcmFtZXRlciBtdXN0IGJlIFwicHJlXCIgb3IgXCJwb3N0XCJgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgX29uRHJhZ092ZXIoZmxvd0tleSwgZSkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgaWYgKGUuZGF0YVRyYW5zZmVyLml0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGhpcy5kcm9wUG9saWN5ID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmRyb3BQb2xpY3kgPSB0aGlzLmRyYWdQb2xpY3k7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kcmFnUG9saWN5ID0gdGhpcy5kcm9wUG9saWN5O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuZHJvcFBvbGljeSAhPSBudWxsICYmXG4gICAgICAgICAgdGhpcy5fY2FuRHJvcFBvbGljeShmbG93S2V5LCB0aGlzLmRyb3BQb2xpY3kucG9saWN5KSAmJlxuICAgICAgICAgICFlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2NhbmRpZGF0ZScpICYmXG4gICAgICAgICAgIWUudGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnZHJhZ2dpbmcnKVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoZS50YXJnZXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZ3YtZmxvdy1zdGVwJykge1xuICAgICAgICAgICAgY29uc3QgeyB4LCB3aWR0aCB9ID0gZS50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBjb25kaXRpb24gPSBmbG93S2V5ID09PSAncG9zdCcgPyBlLmNsaWVudFggLSB4IDw9IHdpZHRoIC8gMiA6IGUuY2xpZW50WCAtIHggPj0gd2lkdGggLyAyO1xuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmJiAhKGUudGFyZ2V0Lm5leHRFbGVtZW50U2libGluZyAmJiBlLnRhcmdldC5uZXh0RWxlbWVudFNpYmxpbmcuaGFzQXR0cmlidXRlKCdkcmFnZ2luZycpKSkge1xuICAgICAgICAgICAgICBlLnRhcmdldC5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyZW5kJywgdGhpcy5nZXRPckNyZWF0ZUNhbmRpZGF0ZSgpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIShlLnRhcmdldC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nICYmIGUudGFyZ2V0LnByZXZpb3VzRWxlbWVudFNpYmxpbmcuaGFzQXR0cmlidXRlKCdkcmFnZ2luZycpKSkge1xuICAgICAgICAgICAgICBlLnRhcmdldC5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWJlZ2luJywgdGhpcy5nZXRPckNyZWF0ZUNhbmRpZGF0ZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGUudGFyZ2V0LmNsYXNzTGlzdCAmJiBlLnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2Ryb3AtYXJlYS1ncmlkJykpIHtcbiAgICAgICAgICAgIGNvbnN0IGRyb3BBcmVhcyA9IGUudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LWZsb3ctc3RlcCcpO1xuICAgICAgICAgICAgaWYgKGRyb3BBcmVhcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgZS50YXJnZXQucHJlcGVuZCh0aGlzLmdldE9yQ3JlYXRlQ2FuZGlkYXRlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZUNhbmRpZGF0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9vbkRyYWdFbmQoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICBpZiAodGhpcy5fZHJhZ2dhYmxlUG9saWN5SW1hZ2UpIHtcbiAgICAgICAgdGhpcy5fZHJhZ2dhYmxlUG9saWN5SW1hZ2UucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMuX2RyYWdnYWJsZVBvbGljeUltYWdlID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHRoaXMuZHJhZ1BvbGljeSA9IG51bGw7XG4gICAgICB0aGlzLmRyb3BQb2xpY3kgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIF9vbkRyYWdTdGFydChzb3VyY2VGbG93S2V5LCBmbG93U3RlcCwgc291cmNlUG9zaXRpb24sIGUpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgIGNvbnN0IHBvbGljeSA9IHRoaXMuZmluZFBvbGljeShmbG93U3RlcC5wb2xpY3kpO1xuICAgICAgaWYgKHBvbGljeSAhPSBudWxsKSB7XG4gICAgICAgIC8vIFNpbXVsYXRlIGNsaWNrIG9uIHdpbmRvdyBmb3IgY2xvc2UgYWxsIGRyb3Bkb3duIG1lbnVcbiAgICAgICAgY29uc3Qgd2luZG93Q2xpY2sgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnRzJyk7XG4gICAgICAgIHdpbmRvd0NsaWNrLmluaXRFdmVudCgnY2xpY2snLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KHdpbmRvd0NsaWNrKTtcbiAgICAgICAgZS50YXJnZXQuc2V0QXR0cmlidXRlKCdkcmFnZ2luZycsIHRydWUpO1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLmRyb3AtYXJlYS1ncmlkJykuY2xhc3NMaXN0LmFkZCgnZHJhZ2dpbmcnKTtcblxuICAgICAgICB0aGlzLmRyb3BQb2xpY3kgPSBuZXcgUG9saWN5RHJhZ2dhYmxlKHBvbGljeSwgc291cmNlUG9zaXRpb24sIHNvdXJjZUZsb3dLZXksIHRoaXMuZmxvdy5faWQsIGZsb3dTdGVwKTtcbiAgICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dC9wbGFpbicsIHRoaXMuZHJvcFBvbGljeS50b1N0cmluZygpKTtcbiAgICAgICAgaWYgKHBvbGljeSkge1xuICAgICAgICAgIGNvbnN0IHNpemUgPSAxMDA7XG4gICAgICAgICAgdGhpcy5fZHJhZ2dhYmxlUG9saWN5SW1hZ2UgPSBhcHBlbmREcmFnZ2FibGVJbWFnZShwb2xpY3kuaWNvbiwgc2l6ZSk7XG4gICAgICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKHRoaXMuX2RyYWdnYWJsZVBvbGljeUltYWdlLCBzaXplIC8gMiwgc2l6ZSAvIDIpO1xuICAgICAgICB9XG4gICAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2RyYWctc3RhcnQnLCB0aGlzLmRyb3BQb2xpY3kpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHBlcmZvcm1VcGRhdGUoKSB7XG4gICAgdGhpcy5nZXRGbG93U3RlcHMoKS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBzLnJlcXVlc3RVcGRhdGUoKTtcbiAgICB9KTtcbiAgICBzdXBlci5wZXJmb3JtVXBkYXRlKCk7XG4gIH1cblxuICBnZXQgZHJhZ2dpbmdBcmVhKCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignZ3YtZmxvdy1zdGVwW2RyYWdnaW5nXScpO1xuICB9XG5cbiAgX29uRHJvcChmbG93S2V5LCBlKSB7XG4gICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LWZsb3ctc3RlcCcpLmZvckVhY2goKHN0ZXApID0+IHN0ZXAucmVzZXRDb25maXJtKCkpO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGJveCA9IGUudGFyZ2V0LmNsb3Nlc3QoJy5kcm9wLWFyZWEtZ3JpZCcpO1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IHRoaXMuZ2V0Q2FuZGlkYXRlKCk7XG4gICAgY29uc3QgZHJhZ2dpbmdBcmVhID0gdGhpcy5kcmFnZ2luZ0FyZWE7XG4gICAgaWYgKGNhbmRpZGF0ZSkge1xuICAgICAgbGV0IHBvc2l0aW9uID0gMDtcbiAgICAgIFsuLi5ib3gucXVlcnlTZWxlY3RvckFsbCgnZ3YtZmxvdy1zdGVwJyldLnNvbWUoKGFyZWEpID0+IHtcbiAgICAgICAgaWYgKCFhcmVhLmhhc0F0dHJpYnV0ZSgnZW1wdHknKSkge1xuICAgICAgICAgIHBvc2l0aW9uKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFyZWEuaGFzQXR0cmlidXRlKCdlbXB0eScpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCB7IHBvbGljeSwgc291cmNlRmxvd0tleSwgc291cmNlRmxvd0lkLCBzb3VyY2VQb3NpdGlvbiwgZmxvd1N0ZXAgfSA9IHRoaXMuZHJvcFBvbGljeTtcbiAgICAgIGNvbnN0IG1vdmUgPSAoKSA9PiB7XG4gICAgICAgIGlmIChkcmFnZ2luZ0FyZWEpIHtcbiAgICAgICAgICBkcmFnZ2luZ0FyZWEucmVtb3ZlQXR0cmlidXRlKCdkcmFnZ2luZycpO1xuICAgICAgICB9XG4gICAgICAgIGNhbmRpZGF0ZS5yZW1vdmUoKTtcbiAgICAgICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZHJvcCcsIHtcbiAgICAgICAgICBmbG93SWQ6IHRoaXMuZmxvdy5faWQsXG4gICAgICAgICAgZmxvd0tleSxcbiAgICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgICBmbG93U3RlcCxcbiAgICAgICAgICBwb2xpY3ksXG4gICAgICAgICAgc291cmNlUG9zaXRpb24sXG4gICAgICAgICAgc291cmNlRmxvd0tleSxcbiAgICAgICAgICBzb3VyY2VGbG93SWQsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyYWdQb2xpY3kgPSBudWxsO1xuICAgICAgICB0aGlzLmRyb3BQb2xpY3kgPSBudWxsO1xuICAgICAgfTtcblxuICAgICAgaWYgKHNvdXJjZUZsb3dJZCAhPSBudWxsICYmIHRoaXMuZmxvdy5faWQgIT09IHNvdXJjZUZsb3dJZCkge1xuICAgICAgICBjYW5kaWRhdGUuc2V0QXR0cmlidXRlKCdjb25maXJtJywgdHJ1ZSk7XG4gICAgICAgIGNhbmRpZGF0ZS5hZGRFdmVudExpc3RlbmVyKCdndi1mbG93LXN0ZXA6Y29weScsICgpID0+IHtcbiAgICAgICAgICBjYW5kaWRhdGUucmVtb3ZlKCk7XG4gICAgICAgICAgdGhpcy5kcmFnUG9saWN5ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmRyb3BQb2xpY3kgPSBudWxsO1xuICAgICAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2Ryb3AnLCB7XG4gICAgICAgICAgICBmbG93SWQ6IHRoaXMuZmxvdy5faWQsXG4gICAgICAgICAgICBmbG93S2V5LFxuICAgICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgICBwb2xpY3ksXG4gICAgICAgICAgICBmbG93U3RlcCxcbiAgICAgICAgICAgIGNhbmNlbEVkaXQ6IHRydWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNhbmRpZGF0ZS5hZGRFdmVudExpc3RlbmVyKCdndi1mbG93LXN0ZXA6bW92ZScsICgpID0+IHtcbiAgICAgICAgICBjYW5kaWRhdGUucmVtb3ZlKCk7XG4gICAgICAgICAgbW92ZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1vdmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRyYWdnaW5nQXJlYSkge1xuICAgICAgZHJhZ2dpbmdBcmVhLnJlbW92ZUF0dHJpYnV0ZSgnZHJhZ2dpbmcnKTtcbiAgICAgIHRoaXMuZHJhZ1BvbGljeSA9IG51bGw7XG4gICAgICB0aGlzLmRyb3BQb2xpY3kgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGdldEZsb3dTdGVwKGZsb3dLZXksIHBvc2l0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvd1tmbG93S2V5XVtwb3NpdGlvbl07XG4gIH1cblxuICBfb25FZGl0U3RlcCh7IGRldGFpbDogeyBzdGVwLCBwb2xpY3ksIGdyb3VwIH0gfSkge1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2VkaXQnLCB7IGZsb3c6IHRoaXMuZmxvdywgc3RlcCwgcG9saWN5LCBncm91cCB9KTtcbiAgfVxuXG4gIF9vbkR1cGxpY2F0ZVN0ZXAoZmxvd0tleSwgcG9zaXRpb24pIHtcbiAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRGbG93U3RlcChmbG93S2V5LCBwb3NpdGlvbik7XG4gICAgY29uc3QgZHVwbGljYXRlUG9zaXRpb24gPSBwb3NpdGlvbiArIDE7XG4gICAgY29uc3QgcG9saWN5ID0gdGhpcy5maW5kUG9saWN5KHN0ZXAucG9saWN5KTtcbiAgICBjb25zdCBkdXBsaWNhdGVTdGVwID0geyAuLi5zdGVwLCBfaWQ6IHV1aWQoKSB9O1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2Ryb3AnLCB7XG4gICAgICBmbG93SWQ6IHRoaXMuZmxvdy5faWQsXG4gICAgICBmbG93S2V5LFxuICAgICAgcG9zaXRpb246IGR1cGxpY2F0ZVBvc2l0aW9uLFxuICAgICAgZmxvd1N0ZXA6IGR1cGxpY2F0ZVN0ZXAsXG4gICAgICBwb2xpY3ksXG4gICAgfSk7XG4gIH1cblxuICBfaXNFZGl0YWJsZShzdGVwKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRTdGVwSWQgJiYgdGhpcy5zZWxlY3RlZFN0ZXBJZCA9PT0gc3RlcC5faWQ7XG4gIH1cblxuICBfb25EZWxldGVTdGVwKGZsb3dLZXksIHBvc2l0aW9uLCBlKSB7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnZGVsZXRlJywgeyBmbG93S2V5LCBwb3NpdGlvbiwgZmxvd0lkOiB0aGlzLmZsb3cuX2lkLCB0YXJnZXQ6IGUudGFyZ2V0IH0pO1xuICB9XG5cbiAgX29uQ2hhbmdlU3RlcFN0YXRlKGZsb3dLZXksIHBvc2l0aW9uLCB7IGRldGFpbCB9KSB7XG4gICAgZGlzcGF0Y2hDdXN0b21FdmVudCh0aGlzLCAnY2hhbmdlLXN0YXRlJywgeyBmbG93S2V5LCBwb3NpdGlvbiwgZmxvd0lkOiB0aGlzLmZsb3cuX2lkLCAuLi5kZXRhaWwgfSk7XG4gIH1cblxuICBfcmVuZGVyRHJvcFN0ZXAoZ3JvdXAsIHN0ZXAsIHBvc2l0aW9uKSB7XG4gICAgaWYgKHN0ZXApIHtcbiAgICAgIHJldHVybiBodG1sYDxndi1mbG93LXN0ZXBcbiAgICAgICAgLnN0ZXA9XCIke3N0ZXB9XCJcbiAgICAgICAgLnBvbGljeT1cIiR7dGhpcy5maW5kUG9saWN5KHN0ZXAucG9saWN5KX1cIlxuICAgICAgICAuaWQ9XCIke3N0ZXAuX2lkfVwiXG4gICAgICAgIC5ncm91cD1cIiR7Z3JvdXB9XCJcbiAgICAgICAgLnBhcmVudD1cIiR7dGhpcy5mbG93Ll9pZH1cIlxuICAgICAgICA/ZGlzYWJsZWQ9XCIke3RoaXMuZGlzYWJsZWR9XCJcbiAgICAgICAgP3JlYWRvbmx5PVwiJHt0aGlzLnJlYWRvbmx5fVwiXG4gICAgICAgIC5kcmFnZ2FibGU9XCIkeyF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5fVwiXG4gICAgICAgID9lZGl0aW5nPVwiJHt0aGlzLl9pc0VkaXRhYmxlKHN0ZXApfVwiXG4gICAgICAgIEBkcmFnc3RhcnQ9XCIke3RoaXMuX29uRHJhZ1N0YXJ0LmJpbmQodGhpcywgZ3JvdXAsIHN0ZXAsIHBvc2l0aW9uKX1cIlxuICAgICAgICBAZHJhZ2VuZD1cIiR7dGhpcy5fb25EcmFnRW5kfVwiXG4gICAgICAgIEBndi1mbG93LXN0ZXA6ZWRpdD1cIiR7dGhpcy5fb25FZGl0U3RlcH1cIlxuICAgICAgICBAZ3YtZmxvdy1zdGVwOmNoYW5nZS1zdGF0ZT1cIiR7dGhpcy5fb25DaGFuZ2VTdGVwU3RhdGUuYmluZCh0aGlzLCBncm91cCwgcG9zaXRpb24pfVwiXG4gICAgICAgIEBndi1mbG93LXN0ZXA6ZGVsZXRlPVwiJHt0aGlzLl9vbkRlbGV0ZVN0ZXAuYmluZCh0aGlzLCBncm91cCwgcG9zaXRpb24pfVwiXG4gICAgICAgIEBndi1mbG93LXN0ZXA6ZHVwbGljYXRlPVwiJHt0aGlzLl9vbkR1cGxpY2F0ZVN0ZXAuYmluZCh0aGlzLCBncm91cCwgcG9zaXRpb24pfVwiXG4gICAgICA+PC9ndi1mbG93LXN0ZXA+YDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGh0bWxgYDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBfZ2V0VXBkYXRlQ29tcGxldGUoKSB7XG4gICAgYXdhaXQgc3VwZXIuX2dldFVwZGF0ZUNvbXBsZXRlKCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5nZXRGbG93U3RlcHMoKS5tYXAoKGUpID0+IGUudXBkYXRlQ29tcGxldGUpKTtcbiAgfVxuXG4gIHVwZGF0ZWQocHJvcGVydGllcykge1xuICAgIGlmIChwcm9wZXJ0aWVzLmhhcygnZGF0YScpKSB7XG4gICAgICB0aGlzLm9uRHJhZ0VuZCgpO1xuICAgIH1cbiAgICBpZiAocHJvcGVydGllcy5oYXMoJ2Ryb3BQb2xpY3knKSB8fCBwcm9wZXJ0aWVzLmhhcygnZHJhZ1BvbGljeScpKSB7XG4gICAgICBpZiAodGhpcy5kcm9wUG9saWN5ID09IG51bGwgJiYgdGhpcy5kcmFnUG9saWN5ID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVDYW5kaWRhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRyYWdFbmQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignLmRyb3AtYXJlYS1ncmlkJykuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ2dpbmcnKTtcbiAgICAgIHRoaXMucmVtb3ZlQ2FuZGlkYXRlKCk7XG4gICAgICBjb25zdCBkcmFnZ2luZ0FyZWEgPSB0aGlzLmRyYWdnaW5nQXJlYTtcbiAgICAgIGlmIChkcmFnZ2luZ0FyZWEpIHtcbiAgICAgICAgZHJhZ2dpbmdBcmVhLnJlbW92ZUF0dHJpYnV0ZSgnZHJhZ2dpbmcnKTtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxuXG4gIF9nZXRMYWJlbChmbG93S2V5KSB7XG4gICAgaWYgKHRoaXMuZmxvdy50eXBlKSB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtYm94LXR5cGVcIj4ke2Zsb3dLZXl9PC9kaXY+XG4gICAgICAgIDxkaXY+JHt0aGlzLmZsb3cudHlwZS50b1VwcGVyQ2FzZSgpID09PSAnUk9PVCcgPyAnZmxvdycgOiB0aGlzLmZsb3cudHlwZX08L2Rpdj5cbiAgICAgIGA7XG4gICAgfSBlbHNlIGlmIChmbG93S2V5ID09PSAncHJlJykge1xuICAgICAgcmV0dXJuICdyZXF1ZXN0JztcbiAgICB9IGVsc2UgaWYgKGZsb3dLZXkgPT09ICdwb3N0Jykge1xuICAgICAgcmV0dXJuICdyZXNwb25zZSc7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGdldCBjb2xsZWN0aW9uTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wbGFuICE9IG51bGwgPyB0aGlzLnBsYW4ubmFtZSA6IHRoaXMuZmxvd3NUaXRsZTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBwcmVUYXJnZXQgPSB0aGlzLmRyYWdQb2xpY3kgJiYgKHRoaXMuaGFzUG9saWN5RmlsdGVyICE9PSB0cnVlIHx8IHRoaXMuZHJhZ1BvbGljeS5wb2xpY3kub25SZXF1ZXN0KTtcbiAgICBjb25zdCBwb3N0VGFyZ2V0ID0gdGhpcy5kcmFnUG9saWN5ICYmICh0aGlzLmhhc1BvbGljeUZpbHRlciAhPT0gdHJ1ZSB8fCB0aGlzLmRyYWdQb2xpY3kucG9saWN5Lm9uUmVzcG9uc2UpO1xuXG4gICAgY29uc3QgcHJlRm9yYmlkZGVuID0gdGhpcy5kcmFnUG9saWN5ICYmIHRoaXMuaGFzUG9saWN5RmlsdGVyID09PSB0cnVlICYmICF0aGlzLmRyYWdQb2xpY3kucG9saWN5Lm9uUmVxdWVzdDtcbiAgICBjb25zdCBwb3N0Rm9yYmlkZGVuID0gdGhpcy5kcmFnUG9saWN5ICYmIHRoaXMuaGFzUG9saWN5RmlsdGVyID09PSB0cnVlICYmICF0aGlzLmRyYWdQb2xpY3kucG9saWN5Lm9uUmVzcG9uc2U7XG4gICAgY29uc3QgaGFzUG9zdCA9IHRoaXMuZmxvdy50eXBlID09IG51bGwgfHwgKHRoaXMuZmxvdy50eXBlICYmIHRoaXMuZmxvdy50eXBlLnRvTG93ZXJDYXNlKCkgIT09ICdyb290Jyk7XG4gICAgcmV0dXJuIGh0bWxgPGRpdiBjbGFzcz1cImJveFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+JHtnZXRGbG93TmFtZSh0aGlzLmZsb3csIHRoaXMuY29sbGVjdGlvbk5hbWUpfTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBwcmU6IHRydWUsIHRhcmdldGVkOiBwcmVUYXJnZXQsIGZvcmJpZGRlbjogcHJlRm9yYmlkZGVuIH0pfVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXJyb3cgYXJyb3ctcmlnaHRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcC1ib3hcIlxuICAgICAgICAgICAgICAgIEBkcm9wPVwiJHt0aGlzLl9vbkRyb3AuYmluZCh0aGlzLCAncHJlJyl9XCJcbiAgICAgICAgICAgICAgICBAZHJhZ2VuZD1cIiR7dGhpcy5vbkRyYWdFbmR9XCJcbiAgICAgICAgICAgICAgICBAZHJhZ292ZXI9XCIke3RoaXMuX29uRHJhZ092ZXIuYmluZCh0aGlzLCAncHJlJyl9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWJveC10aXRsZVwiPiR7cHJlVGFyZ2V0ID8gJ2Ryb3AgaGVyZScgOiB0aGlzLl9nZXRMYWJlbCgncHJlJyl9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtYXJlYS1ncmlkXCI+JHt0aGlzLmZsb3cucHJlLm1hcCgoZmxvd1N0ZXAsIGkpID0+IHRoaXMuX3JlbmRlckRyb3BTdGVwKCdwcmUnLCBmbG93U3RlcCwgaSkpfTwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAke2hhc1Bvc3RcbiAgICAgICAgICAgICAgPyBodG1sYFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyBwb3N0OiB0cnVlLCB0YXJnZXRlZDogcG9zdFRhcmdldCwgZm9yYmlkZGVuOiBwb3N0Rm9yYmlkZGVuIH0pfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdhcnJvdyBhcnJvdy1sZWZ0Jz4gPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBkcm9wPVwiJHt0aGlzLl9vbkRyb3AuYmluZCh0aGlzLCAncG9zdCcpfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZHJhZ2VuZD1cIiR7dGhpcy5vbkRyYWdFbmR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBkcmFnb3Zlcj1cIiR7dGhpcy5fb25EcmFnT3Zlci5iaW5kKHRoaXMsICdwb3N0Jyl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1hcmVhLWdyaWQgZHJvcC1hcmVhLWdyaWQtcmV2ZXJzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0aGlzLmZsb3cucG9zdC5tYXAoKGZsb3dTdGVwLCBpKSA9PiB0aGlzLl9yZW5kZXJEcm9wU3RlcCgncG9zdCcsIGZsb3dTdGVwLCBpKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWJveC10aXRsZVwiPiR7cG9zdFRhcmdldCA/ICdkcm9wIGhlcmUnIDogdGhpcy5fZ2V0TGFiZWwoJ3Bvc3QnKX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+YFxuICAgICAgICAgICAgICA6ICcnfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PmA7XG4gIH1cblxuICBmaW5kUG9saWN5KHBvbGljeUlkKSB7XG4gICAgY29uc3QgcG9saWN5ID0gdGhpcy5wb2xpY2llcy5maW5kKChwKSA9PiBwLmlkID09PSBwb2xpY3lJZCk7XG4gICAgaWYgKHBvbGljeSA9PSBudWxsKSB7XG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoYFBvbGljeSAke3BvbGljeUlkfSBub3QgZm91bmRgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBvbGljeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc3R5bGVzKCkge1xuICAgIHJldHVybiBbXG4gICAgICBtZXRob2RzLFxuICAgICAgLy8gbGFuZ3VhZ2U9Q1NTXG4gICAgICBjc3NgXG4gICAgICAgIDpob3N0IHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuZmxvdyB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcC1hcmVhLWdyaWQge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkIHRyYW5zcGFyZW50O1xuICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAzNTBtcyBlYXNlLWluLW91dDtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDE1MHB4O1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgcGFkZGluZzogMCAzMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhcmdldGVkIC5kcm9wLWFyZWEtZ3JpZCB7XG4gICAgICAgICAgYm9yZGVyOiAxcHggZGFzaGVkICNkOWQ5ZDk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9yYmlkZGVuIC5kcm9wLWFyZWEtZ3JpZCB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWZlZjtcbiAgICAgICAgICBvcGFjaXR5OiAwLjI7XG4gICAgICAgIH1cblxuICAgICAgICBndi1mbG93LXN0ZXAge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAubWVzc2FnZSB7XG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICBjb2xvcjogI2Q5ZDlkOTtcbiAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMzUwbXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAubWVzc2FnZSB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAudGFyZ2V0ZWQgLm1lc3NhZ2Uge1xuICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cblxuICAgICAgICAudGFyZ2V0ZWQgLmRyb3AtYXJlYS1lbXB0eSB7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMzUwbXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgIH1cblxuICAgICAgICAucHJlLFxuICAgICAgICAucG9zdCB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hcnJvdyB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZDlkOTtcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNTBweCAqIDIgLSAxcHgpO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgbWFyZ2luOiAwIDMwcHg7XG4gICAgICAgICAgY29sb3I6ICMyNjI2MjY7XG4gICAgICAgICAgdG9wOiBjYWxjKDUwJSAtIDIwcHgpO1xuICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hcnJvdy1yaWdodDo6YWZ0ZXIge1xuICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICBib3JkZXItdG9wOiA0MHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDQwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgYm9yZGVyLWxlZnQ6IDQwcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgICBjb250ZW50OiAnICc7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHJpZ2h0OiAtMjBweDtcbiAgICAgICAgICB0b3A6IC0yMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3AtYm94LXR5cGUge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICB3cml0aW5nLW1vZGU6IGhvcml6b250YWwtdGI7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wLWJveC10aXRsZSB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIHdyaXRpbmctbW9kZTogdmVydGljYWwtbHI7XG4gICAgICAgICAgdGV4dC1vcmllbnRhdGlvbjogdXByaWdodDtcbiAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgIGNvbG9yOiAjYmZiZmJmO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiAxNDVweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMTNweDtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgbWluLXdpZHRoOiAzMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLnByZSAuZHJvcC1ib3gtdGl0bGUge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBsZWZ0OiAtMzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5hcnJvdy1sZWZ0OjphZnRlciB7XG4gICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICAgIGJvcmRlci10b3A6IDQwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogNDBweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICBib3JkZXItcmlnaHQ6IDQwcHggc29saWQgI2Q5ZDlkOTtcbiAgICAgICAgICBjb250ZW50OiAnICc7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGxlZnQ6IC0yMHB4O1xuICAgICAgICAgIHRvcDogLTIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcC1ib3gge1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgbWFyZ2luOiAwIDMwcHg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcC1hcmVhLWdyaWQtcmV2ZXJzZSB7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciB7XG4gICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBtaW4taGVpZ2h0OiA0NXB4O1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIgLnRpdGxlIHtcbiAgICAgICAgICBjb2xvcjogIzI4NDQ0ZjtcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIG1hcmdpbjogMCAwLjVyZW07XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIC50aXRsZSAuZmxvdy1wYXRoIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJveCB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAvKiBmb3IgRmlyZWZveCAqL1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRlbnQge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICAgIGZsZXgtZ3JvdzogMTtcblxuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuXG4gICAgICAgICAgLyogZm9yIEZpcmVmb3ggKi9cbiAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgfVxuICAgICAgYCxcbiAgICBdO1xuICB9XG59XG5cbndpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ2d2LWZsb3cnLCBHdkZsb3cpO1xuIl19
442
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4vbm9kZV9tb2R1bGVzL0BncmF2aXRlZS91aS1jb21wb25lbnRzL3BvbGljeS1zdHVkaW8vZ3YtZmxvdy5qcyJdLCJuYW1lcyI6WyJMaXRFbGVtZW50IiwiaHRtbCIsImNzcyIsImNsYXNzTWFwIiwiZGlzcGF0Y2hDdXN0b21FdmVudCIsImFwcGVuZERyYWdnYWJsZUltYWdlIiwidXVpZCIsIlBvbGljeURyYWdnYWJsZSIsImdldEZsb3dOYW1lIiwibWV0aG9kcyIsIkd2RmxvdyIsInByb3BlcnRpZXMiLCJmbG93IiwidHlwZSIsIk9iamVjdCIsInBsYW4iLCJwb2xpY2llcyIsInNlbGVjdGVkU3RlcElkIiwiU3RyaW5nIiwiZHJhZ1BvbGljeSIsImRyb3BQb2xpY3kiLCJkaXNhYmxlZCIsIkJvb2xlYW4iLCJyZWZsZWN0IiwiaGFzUG9saWN5RmlsdGVyIiwiYXR0cmlidXRlIiwiZmxvd3NUaXRsZSIsInJlYWRvbmx5IiwiY29uc3RydWN0b3IiLCJhZGRFdmVudExpc3RlbmVyIiwiX29uTW91c2VMZWF2ZSIsImdldENhbmRpZGF0ZSIsInNoYWRvd1Jvb3QiLCJxdWVyeVNlbGVjdG9yIiwiZ2V0Rmxvd1N0ZXBzIiwiQXJyYXkiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsImdldE9yQ3JlYXRlQ2FuZGlkYXRlIiwiY2FuZGlkYXRlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwicmVtb3ZlQ2FuZGlkYXRlIiwicmVtb3ZlIiwiX2NhbkRyb3BQb2xpY3kiLCJmbG93S2V5IiwicG9saWN5Iiwib25SZXF1ZXN0Iiwib25SZXNwb25zZSIsIkVycm9yIiwiX29uRHJhZ092ZXIiLCJlIiwiZGF0YVRyYW5zZmVyIiwiaXRlbXMiLCJsZW5ndGgiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInRhcmdldCIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwiaGFzQXR0cmlidXRlIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwieCIsIndpZHRoIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY29uZGl0aW9uIiwiY2xpZW50WCIsIm5leHRFbGVtZW50U2libGluZyIsImluc2VydEFkamFjZW50RWxlbWVudCIsInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJkcm9wQXJlYXMiLCJwcmVwZW5kIiwiX29uRHJhZ0VuZCIsIl9kcmFnZ2FibGVQb2xpY3lJbWFnZSIsIl9vbkRyYWdTdGFydCIsInNvdXJjZUZsb3dLZXkiLCJmbG93U3RlcCIsInNvdXJjZVBvc2l0aW9uIiwiZmluZFBvbGljeSIsIndpbmRvd0NsaWNrIiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJ3aW5kb3ciLCJkaXNwYXRjaEV2ZW50IiwiYWRkIiwiX2lkIiwic2V0RGF0YSIsInRvU3RyaW5nIiwic2l6ZSIsImljb24iLCJzZXREcmFnSW1hZ2UiLCJwZXJmb3JtVXBkYXRlIiwiZm9yRWFjaCIsInMiLCJyZXF1ZXN0VXBkYXRlIiwiZHJhZ2dpbmdBcmVhIiwiX29uRHJvcCIsInN0ZXAiLCJyZXNldENvbmZpcm0iLCJib3giLCJjbG9zZXN0IiwicG9zaXRpb24iLCJzb21lIiwiYXJlYSIsInNvdXJjZUZsb3dJZCIsIm1vdmUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJmbG93SWQiLCJjYW5jZWxFZGl0IiwiZ2V0Rmxvd1N0ZXAiLCJfb25FZGl0U3RlcCIsImRldGFpbCIsImdyb3VwIiwiX29uRHVwbGljYXRlU3RlcCIsImR1cGxpY2F0ZVBvc2l0aW9uIiwiZHVwbGljYXRlU3RlcCIsIl9pc0VkaXRhYmxlIiwiX29uRGVsZXRlU3RlcCIsIl9vbkNoYW5nZVN0ZXBTdGF0ZSIsIl9yZW5kZXJEcm9wU3RlcCIsImJpbmQiLCJfZ2V0VXBkYXRlQ29tcGxldGUiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwidXBkYXRlQ29tcGxldGUiLCJ1cGRhdGVkIiwiaGFzIiwib25EcmFnRW5kIiwic2V0VGltZW91dCIsIl9nZXRMYWJlbCIsInRvVXBwZXJDYXNlIiwiY29sbGVjdGlvbk5hbWUiLCJuYW1lIiwicmVuZGVyIiwicHJlVGFyZ2V0IiwicG9zdFRhcmdldCIsInByZUZvcmJpZGRlbiIsInBvc3RGb3JiaWRkZW4iLCJoYXNQb3N0IiwicHJlIiwidGFyZ2V0ZWQiLCJmb3JiaWRkZW4iLCJpIiwicG9zdCIsInBvbGljeUlkIiwiZmluZCIsInAiLCJpZCIsInN0eWxlcyIsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxVQUFULEVBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsUUFBc0MsYUFBdEM7QUFDQSxTQUFTQyxRQUFULFFBQXlCLCtCQUF6QjtBQUNBLFNBQVNDLG1CQUFULFFBQW9DLGVBQXBDO0FBQ0EsT0FBTyxtQkFBUDtBQUNBLFNBQVNDLG9CQUFULEVBQStCQyxJQUEvQixRQUEyQyxjQUEzQztBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsZ0JBQWhDO0FBQ0EsU0FBU0MsV0FBVCxFQUFzQkMsT0FBdEIsUUFBcUMsZUFBckM7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsT0FBTyxNQUFNQyxNQUFOLFNBQXFCVixVQUFyQixDQUFnQztBQUNoQixhQUFWVyxVQUFVLEdBQUc7QUFDdEIsV0FBTztBQUNMQyxNQUFBQSxJQUFJLEVBQUU7QUFBRUMsUUFBQUEsSUFBSSxFQUFFQztBQUFSLE9BREQ7QUFFTEMsTUFBQUEsSUFBSSxFQUFFO0FBQUVGLFFBQUFBLElBQUksRUFBRUM7QUFBUixPQUZEO0FBR0xFLE1BQUFBLFFBQVEsRUFBRTtBQUFFSCxRQUFBQSxJQUFJLEVBQUVDO0FBQVIsT0FITDtBQUlMRyxNQUFBQSxjQUFjLEVBQUU7QUFBRUosUUFBQUEsSUFBSSxFQUFFSztBQUFSLE9BSlg7QUFLTEMsTUFBQUEsVUFB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REFRa0IsS0FBSzlHLElBQUwsQ0FBVXNJLElBQVYsQ0FBZXBCLEdBQWYsQ0FBbUIsQ0FBQ2hELFFBQUQsRUFBV21FLENBQVgsS0FBaUIsS0FBS3hCLGVBQUwsQ0FBcUIsTUFBckIsRUFBNkIzQyxRQUE3QixFQUF1Q21FLENBQXZDLENBQXBDLENBUmxCLHVDQVUyQ1AsVUFBVSxHQUFHLFdBQUgsR0FBaUIsS0FBS04sU0FBTCxDQUFlLE1BQWYsQ0FWdEUsdUJBREMsR0FlTCxFQW5DRCw4QkFBWDtBQXdDRDs7QUFFRHBELEVBQUFBLFVBQVUsQ0FBQ21FLFFBQUQsRUFBVztBQUNuQixVQUFNcEcsTUFBTSxHQUFHLEtBQUsvQixRQUFMLENBQWNvSSxJQUFkLENBQW9CQyxDQUFELElBQU9BLENBQUMsQ0FBQ0MsRUFBRixLQUFTSCxRQUFuQyxDQUFmOztBQUNBLFFBQUlwRyxNQUFNLElBQUksSUFBZCxFQUFvQixDQUNsQjtBQUNEOztBQUNELFdBQU9BLE1BQVA7QUFDRDs7QUFFZ0IsYUFBTndHLE1BQU0sR0FBRztBQUNsQixXQUFPLENBQ0w5SSxPQURLLEVBRUw7QUFDQVAsSUFBQUEsR0FBRywwMUVBSEUsQ0FBUDtBQTJNRDs7QUFua0JvQztBQXNrQnZDa0YsTUFBTSxDQUFDb0UsY0FBUCxDQUFzQkMsTUFBdEIsQ0FBNkIsU0FBN0IsRUFBd0MvSSxNQUF4QyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBMaXRFbGVtZW50LCBodG1sLCBjc3MgfSBmcm9tICdsaXQtZWxlbWVudCc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC1odG1sL2RpcmVjdGl2ZXMvY2xhc3MtbWFwJztcbmltcG9ydCB7IGRpc3BhdGNoQ3VzdG9tRXZlbnQgfSBmcm9tICcuLi9saWIvZXZlbnRzJztcbmltcG9ydCAnLi4vYXRvbXMvZ3YtaW1hZ2UnO1xuaW1wb3J0IHsgYXBwZW5kRHJhZ2dhYmxlSW1hZ2UsIHV1aWQgfSBmcm9tICcuLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgUG9saWN5RHJhZ2dhYmxlIH0gZnJvbSAnLi9ndi1mbG93LXN0ZXAnO1xuaW1wb3J0IHsgZ2V0Rmxvd05hbWUsIG1ldGhvZHMgfSBmcm9tICcuLi9saWIvc3R1ZGlvJztcblxuLyoqXG4gKiBGbG93IGNvbXBvbmVudFxuICpcbiAqIEBmaXJlcyBndi1mbG93OmRyb3AgLSBEcm9wIGV2ZW50XG4gKiBAZmlyZXMgZ3YtZmxvdzplZGl0IC0gRWRpdCBldmVudFxuICogQGZpcmVzIGd2LWZsb3c6ZGVsZXRlIC0gRGVsZXRlIGV2ZW50XG4gKlxuICogQGF0dHIge09iamVjdH0gZmxvdyAtIHRoZSBmbG93IHRvIGRpc3BsYXlcbiAqIEBhdHRyIHtTdHJpbmd9IHNlbGVjdGVkU3RlcElkIC0gdGhlIHNlbGVjdGVkIHN0ZXAgaWRcbiAqIEBhdHRyIHtPYmplY3R9IHRhcmdldGVkUG9saWN5IC0gdHJ1ZSwgaWYgZmxvdyBpcyB0YXJnZXRlZCBmb3IgZHJvcCBhY3Rpb25cbiAqIEBhdHRyIHtCb29sZWFufSBoYXMtcG9saWN5LWZpbHRlciAtIHRydWUgaWYgcG9saWNpZXMgaGF2ZSBvblJlcXVlc3Qvb25SZXNwb25zZSBwcm9wZXJ0aWVzXG4gKiBAYXR0ciB7U3RyaW5nfSBmbG93c1RpdGxlIC0gZmxvd3MgbWVudSB0aXRsZVxuICogQGF0dHIge0Jvb2xlYW59IGRpc2FibGVkIC0gdHJ1ZSBmb3IgZGlzYWJsZWRcbiAqIEBhdHRyIHtCb29sZWFufSByZWFkb25seSAtIHRydWUgaWYgcmVhZG9ubHlcbiAqL1xuZXhwb3J0IGNsYXNzIEd2RmxvdyBleHRlbmRzIExpdEVsZW1lbnQge1xuICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZsb3c6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBwbGFuOiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgcG9saWNpZXM6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBzZWxlY3RlZFN0ZXBJZDogeyB0eXBlOiBTdHJpbmcgfSxcbiAgICAgIGRyYWdQb2xpY3k6IHsgdHlwZTogT2JqZWN0IH0sXG4gICAgICBkcm9wUG9saWN5OiB7IHR5cGU6IE9iamVjdCB9LFxuICAgICAgZGlzYWJsZWQ6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgICAgaGFzUG9saWN5RmlsdGVyOiB7IHR5cGU6IEJvb2xlYW4sIGF0dHJpYnV0ZTogJ2hhcy1wb2xpY3ktZmlsdGVyJyB9LFxuICAgICAgZmxvd3NUaXRsZTogeyB0eXBlOiBTdHJpbmcsIGF0dHJpYnV0ZTogJ2Zsb3dzLXRpdGxlJyB9LFxuICAgICAgcmVhZG9ubHk6IHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZmxvd3NUaXRsZSA9ICdGbG93cyc7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5fb25Nb3VzZUxlYXZlKTtcbiAgfVxuXG4gIF9vbk1vdXNlTGVhdmUoKSB7XG4gICAgdGhpcy5kcmFnUG9saWN5ID0gbnVsbDtcbiAgICB0aGlzLmRyb3BQb2xpY3kgPSBudWxsO1xuICB9XG5cbiAgZ2V0Q2FuZGlkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignZ3YtZmxvdy1zdGVwW2VtcHR5XScpO1xuICB9XG5cbiAgZ2V0Rmxvd1N0ZXBzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1mbG93LXN0ZXAnKSk7XG4gIH1cblxuICBnZXRPckNyZWF0ZUNhbmRpZGF0ZSgpIHtcbiAgICBsZXQgY2FuZGlkYXRlID0gdGhpcy5nZXRDYW5kaWRhdGUoKTtcbiAgICBpZiAoIWNhbmRpZGF0ZSkge1xuICAgICAgY2FuZGlkYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZ3YtZmxvdy1zdGVwJyk7XG4gICAgICBjYW5kaWRhdGUuc2V0QXR0cmlidXRlKCdlbXB0eScsIHRydWUpO1xuICAgIH1cbiAgICByZXR1cm4gY2FuZGlkYXRlO1xuICB9XG5cbiAgcmVtb3ZlQ2FuZGlkYXRlKCkge1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IHRoaXMuZ2V0Q2FuZGlkYXRlKCk7XG4gICAgaWYgKGNhbmRpZGF0ZSkge1xuICAgICAgY2FuZGlkYXRlLnJlbW92ZSgpO1xuICAgIH1cbiAgfVxuXG4gIF9jYW5Ecm9wUG9saWN5KGZsb3dLZXksIHBvbGljeSkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHBvbGljeSAhPSBudWxsKSB7XG4gICAgICBpZiAoZmxvd0tleSA9PT0gJ3ByZScpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzUG9saWN5RmlsdGVyICE9PSB0cnVlIHx8IHBvbGljeS5vblJlcXVlc3QgPT09IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGZsb3dLZXkgPT09ICdwb3N0Jykge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNQb2xpY3lGaWx0ZXIgIT09IHRydWUgfHwgcG9saWN5Lm9uUmVzcG9uc2UgPT09IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmbG93a2V5IFske2Zsb3dLZXl9XSBwYXJhbWV0ZXIgbXVzdCBiZSBcInByZVwiIG9yIFwicG9zdFwiYCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIF9vbkRyYWdPdmVyKGZsb3dLZXksIGUpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgIGlmIChlLmRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMuZHJvcFBvbGljeSA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5kcm9wUG9saWN5ID0gdGhpcy5kcmFnUG9saWN5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZHJhZ1BvbGljeSA9IHRoaXMuZHJvcFBvbGljeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmRyb3BQb2xpY3kgIT0gbnVsbCAmJlxuICAgICAgICAgIHRoaXMuX2NhbkRyb3BQb2xpY3koZmxvd0tleSwgdGhpcy5kcm9wUG9saWN5LnBvbGljeSkgJiZcbiAgICAgICAgICAhZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjYW5kaWRhdGUnKSAmJlxuICAgICAgICAgICFlLnRhcmdldC5oYXNBdHRyaWJ1dGUoJ2RyYWdnaW5nJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKGUudGFyZ2V0LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2d2LWZsb3ctc3RlcCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgeCwgd2lkdGggfSA9IGUudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uID0gZmxvd0tleSA9PT0gJ3Bvc3QnID8gZS5jbGllbnRYIC0geCA8PSB3aWR0aCAvIDIgOiBlLmNsaWVudFggLSB4ID49IHdpZHRoIC8gMjtcbiAgICAgICAgICAgIGlmIChjb25kaXRpb24gJiYgIShlLnRhcmdldC5uZXh0RWxlbWVudFNpYmxpbmcgJiYgZS50YXJnZXQubmV4dEVsZW1lbnRTaWJsaW5nLmhhc0F0dHJpYnV0ZSgnZHJhZ2dpbmcnKSkpIHtcbiAgICAgICAgICAgICAgZS50YXJnZXQuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdhZnRlcmVuZCcsIHRoaXMuZ2V0T3JDcmVhdGVDYW5kaWRhdGUoKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCEoZS50YXJnZXQucHJldmlvdXNFbGVtZW50U2libGluZyAmJiBlLnRhcmdldC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nLmhhc0F0dHJpYnV0ZSgnZHJhZ2dpbmcnKSkpIHtcbiAgICAgICAgICAgICAgZS50YXJnZXQuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KCdiZWZvcmViZWdpbicsIHRoaXMuZ2V0T3JDcmVhdGVDYW5kaWRhdGUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChlLnRhcmdldC5jbGFzc0xpc3QgJiYgZS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkcm9wLWFyZWEtZ3JpZCcpKSB7XG4gICAgICAgICAgICBjb25zdCBkcm9wQXJlYXMgPSBlLnRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKCdndi1mbG93LXN0ZXAnKTtcbiAgICAgICAgICAgIGlmIChkcm9wQXJlYXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgIGUudGFyZ2V0LnByZXBlbmQodGhpcy5nZXRPckNyZWF0ZUNhbmRpZGF0ZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVDYW5kaWRhdGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfb25EcmFnRW5kKCkge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgaWYgKHRoaXMuX2RyYWdnYWJsZVBvbGljeUltYWdlKSB7XG4gICAgICAgIHRoaXMuX2RyYWdnYWJsZVBvbGljeUltYWdlLnJlbW92ZSgpO1xuICAgICAgICB0aGlzLl9kcmFnZ2FibGVQb2xpY3lJbWFnZSA9IG51bGw7XG4gICAgICB9XG4gICAgICB0aGlzLmRyYWdQb2xpY3kgPSBudWxsO1xuICAgICAgdGhpcy5kcm9wUG9saWN5ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBfb25EcmFnU3RhcnQoc291cmNlRmxvd0tleSwgZmxvd1N0ZXAsIHNvdXJjZVBvc2l0aW9uLCBlKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICBjb25zdCBwb2xpY3kgPSB0aGlzLmZpbmRQb2xpY3koZmxvd1N0ZXAucG9saWN5KTtcbiAgICAgIGlmIChwb2xpY3kgIT0gbnVsbCkge1xuICAgICAgICAvLyBTaW11bGF0ZSBjbGljayBvbiB3aW5kb3cgZm9yIGNsb3NlIGFsbCBkcm9wZG93biBtZW51XG4gICAgICAgIGNvbnN0IHdpbmRvd0NsaWNrID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50cycpO1xuICAgICAgICB3aW5kb3dDbGljay5pbml0RXZlbnQoJ2NsaWNrJywgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudCh3aW5kb3dDbGljayk7XG4gICAgICAgIGUudGFyZ2V0LnNldEF0dHJpYnV0ZSgnZHJhZ2dpbmcnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wLWFyZWEtZ3JpZCcpLmNsYXNzTGlzdC5hZGQoJ2RyYWdnaW5nJyk7XG5cbiAgICAgICAgdGhpcy5kcm9wUG9saWN5ID0gbmV3IFBvbGljeURyYWdnYWJsZShwb2xpY3ksIHNvdXJjZVBvc2l0aW9uLCBzb3VyY2VGbG93S2V5LCB0aGlzLmZsb3cuX2lkLCBmbG93U3RlcCk7XG4gICAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQvcGxhaW4nLCB0aGlzLmRyb3BQb2xpY3kudG9TdHJpbmcoKSk7XG4gICAgICAgIGlmIChwb2xpY3kpIHtcbiAgICAgICAgICBjb25zdCBzaXplID0gMTAwO1xuICAgICAgICAgIHRoaXMuX2RyYWdnYWJsZVBvbGljeUltYWdlID0gYXBwZW5kRHJhZ2dhYmxlSW1hZ2UocG9saWN5Lmljb24sIHNpemUpO1xuICAgICAgICAgIGUuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZSh0aGlzLl9kcmFnZ2FibGVQb2xpY3lJbWFnZSwgc2l6ZSAvIDIsIHNpemUgLyAyKTtcbiAgICAgICAgfVxuICAgICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdkcmFnLXN0YXJ0JywgdGhpcy5kcm9wUG9saWN5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBwZXJmb3JtVXBkYXRlKCkge1xuICAgIHRoaXMuZ2V0Rmxvd1N0ZXBzKCkuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcy5yZXF1ZXN0VXBkYXRlKCk7XG4gICAgfSk7XG4gICAgc3VwZXIucGVyZm9ybVVwZGF0ZSgpO1xuICB9XG5cbiAgZ2V0IGRyYWdnaW5nQXJlYSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2d2LWZsb3ctc3RlcFtkcmFnZ2luZ10nKTtcbiAgfVxuXG4gIF9vbkRyb3AoZmxvd0tleSwgZSkge1xuICAgIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdndi1mbG93LXN0ZXAnKS5mb3JFYWNoKChzdGVwKSA9PiBzdGVwLnJlc2V0Q29uZmlybSgpKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBib3ggPSBlLnRhcmdldC5jbG9zZXN0KCcuZHJvcC1hcmVhLWdyaWQnKTtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSB0aGlzLmdldENhbmRpZGF0ZSgpO1xuICAgIGNvbnN0IGRyYWdnaW5nQXJlYSA9IHRoaXMuZHJhZ2dpbmdBcmVhO1xuICAgIGlmIChjYW5kaWRhdGUpIHtcbiAgICAgIGxldCBwb3NpdGlvbiA9IDA7XG4gICAgICBbLi4uYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ2d2LWZsb3ctc3RlcCcpXS5zb21lKChhcmVhKSA9PiB7XG4gICAgICAgIGlmICghYXJlYS5oYXNBdHRyaWJ1dGUoJ2VtcHR5JykpIHtcbiAgICAgICAgICBwb3NpdGlvbisrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcmVhLmhhc0F0dHJpYnV0ZSgnZW1wdHknKTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgeyBwb2xpY3ksIHNvdXJjZUZsb3dLZXksIHNvdXJjZUZsb3dJZCwgc291cmNlUG9zaXRpb24sIGZsb3dTdGVwIH0gPSB0aGlzLmRyb3BQb2xpY3k7XG4gICAgICBjb25zdCBtb3ZlID0gKCkgPT4ge1xuICAgICAgICBpZiAoZHJhZ2dpbmdBcmVhKSB7XG4gICAgICAgICAgZHJhZ2dpbmdBcmVhLnJlbW92ZUF0dHJpYnV0ZSgnZHJhZ2dpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICBjYW5kaWRhdGUucmVtb3ZlKCk7XG4gICAgICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2Ryb3AnLCB7XG4gICAgICAgICAgZmxvd0lkOiB0aGlzLmZsb3cuX2lkLFxuICAgICAgICAgIGZsb3dLZXksXG4gICAgICAgICAgcG9zaXRpb24sXG4gICAgICAgICAgZmxvd1N0ZXAsXG4gICAgICAgICAgcG9saWN5LFxuICAgICAgICAgIHNvdXJjZVBvc2l0aW9uLFxuICAgICAgICAgIHNvdXJjZUZsb3dLZXksXG4gICAgICAgICAgc291cmNlRmxvd0lkLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kcmFnUG9saWN5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5kcm9wUG9saWN5ID0gbnVsbDtcbiAgICAgIH07XG5cbiAgICAgIGlmIChzb3VyY2VGbG93SWQgIT0gbnVsbCAmJiB0aGlzLmZsb3cuX2lkICE9PSBzb3VyY2VGbG93SWQpIHtcbiAgICAgICAgY2FuZGlkYXRlLnNldEF0dHJpYnV0ZSgnY29uZmlybScsIHRydWUpO1xuICAgICAgICBjYW5kaWRhdGUuYWRkRXZlbnRMaXN0ZW5lcignZ3YtZmxvdy1zdGVwOmNvcHknLCAoKSA9PiB7XG4gICAgICAgICAgY2FuZGlkYXRlLnJlbW92ZSgpO1xuICAgICAgICAgIHRoaXMuZHJhZ1BvbGljeSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5kcm9wUG9saWN5ID0gbnVsbDtcbiAgICAgICAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdkcm9wJywge1xuICAgICAgICAgICAgZmxvd0lkOiB0aGlzLmZsb3cuX2lkLFxuICAgICAgICAgICAgZmxvd0tleSxcbiAgICAgICAgICAgIHBvc2l0aW9uLFxuICAgICAgICAgICAgcG9saWN5LFxuICAgICAgICAgICAgZmxvd1N0ZXAsXG4gICAgICAgICAgICBjYW5jZWxFZGl0OiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjYW5kaWRhdGUuYWRkRXZlbnRMaXN0ZW5lcignZ3YtZmxvdy1zdGVwOm1vdmUnLCAoKSA9PiB7XG4gICAgICAgICAgY2FuZGlkYXRlLnJlbW92ZSgpO1xuICAgICAgICAgIG1vdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb3ZlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkcmFnZ2luZ0FyZWEpIHtcbiAgICAgIGRyYWdnaW5nQXJlYS5yZW1vdmVBdHRyaWJ1dGUoJ2RyYWdnaW5nJyk7XG4gICAgICB0aGlzLmRyYWdQb2xpY3kgPSBudWxsO1xuICAgICAgdGhpcy5kcm9wUG9saWN5ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXRGbG93U3RlcChmbG93S2V5LCBwb3NpdGlvbikge1xuICAgIHJldHVybiB0aGlzLmZsb3dbZmxvd0tleV1bcG9zaXRpb25dO1xuICB9XG5cbiAgX29uRWRpdFN0ZXAoeyBkZXRhaWw6IHsgc3RlcCwgcG9saWN5LCBncm91cCB9IH0pIHtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdlZGl0JywgeyBmbG93OiB0aGlzLmZsb3csIHN0ZXAsIHBvbGljeSwgZ3JvdXAgfSk7XG4gIH1cblxuICBfb25EdXBsaWNhdGVTdGVwKGZsb3dLZXksIHBvc2l0aW9uKSB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0Rmxvd1N0ZXAoZmxvd0tleSwgcG9zaXRpb24pO1xuICAgIGNvbnN0IGR1cGxpY2F0ZVBvc2l0aW9uID0gcG9zaXRpb24gKyAxO1xuICAgIGNvbnN0IHBvbGljeSA9IHRoaXMuZmluZFBvbGljeShzdGVwLnBvbGljeSk7XG4gICAgY29uc3QgZHVwbGljYXRlU3RlcCA9IHsgLi4uc3RlcCwgX2lkOiB1dWlkKCkgfTtcbiAgICBkaXNwYXRjaEN1c3RvbUV2ZW50KHRoaXMsICdkcm9wJywge1xuICAgICAgZmxvd0lkOiB0aGlzLmZsb3cuX2lkLFxuICAgICAgZmxvd0tleSxcbiAgICAgIHBvc2l0aW9uOiBkdXBsaWNhdGVQb3NpdGlvbixcbiAgICAgIGZsb3dTdGVwOiBkdXBsaWNhdGVTdGVwLFxuICAgICAgcG9saWN5LFxuICAgIH0pO1xuICB9XG5cbiAgX2lzRWRpdGFibGUoc3RlcCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkU3RlcElkICYmIHRoaXMuc2VsZWN0ZWRTdGVwSWQgPT09IHN0ZXAuX2lkO1xuICB9XG5cbiAgX29uRGVsZXRlU3RlcChmbG93S2V5LCBwb3NpdGlvbiwgZSkge1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2RlbGV0ZScsIHsgZmxvd0tleSwgcG9zaXRpb24sIGZsb3dJZDogdGhpcy5mbG93Ll9pZCwgdGFyZ2V0OiBlLnRhcmdldCB9KTtcbiAgfVxuXG4gIF9vbkNoYW5nZVN0ZXBTdGF0ZShmbG93S2V5LCBwb3NpdGlvbiwgeyBkZXRhaWwgfSkge1xuICAgIGRpc3BhdGNoQ3VzdG9tRXZlbnQodGhpcywgJ2NoYW5nZS1zdGF0ZScsIHsgZmxvd0tleSwgcG9zaXRpb24sIGZsb3dJZDogdGhpcy5mbG93Ll9pZCwgLi4uZGV0YWlsIH0pO1xuICB9XG5cbiAgX3JlbmRlckRyb3BTdGVwKGdyb3VwLCBzdGVwLCBwb3NpdGlvbikge1xuICAgIGlmIChzdGVwKSB7XG4gICAgICByZXR1cm4gaHRtbGA8Z3YtZmxvdy1zdGVwXG4gICAgICAgIC5zdGVwPVwiJHtzdGVwfVwiXG4gICAgICAgIC5wb2xpY3k9XCIke3RoaXMuZmluZFBvbGljeShzdGVwLnBvbGljeSl9XCJcbiAgICAgICAgLmlkPVwiJHtzdGVwLl9pZH1cIlxuICAgICAgICAuZ3JvdXA9XCIke2dyb3VwfVwiXG4gICAgICAgIC5wYXJlbnQ9XCIke3RoaXMuZmxvdy5faWR9XCJcbiAgICAgICAgP2Rpc2FibGVkPVwiJHt0aGlzLmRpc2FibGVkfVwiXG4gICAgICAgID9yZWFkb25seT1cIiR7dGhpcy5yZWFkb25seX1cIlxuICAgICAgICAuZHJhZ2dhYmxlPVwiJHshdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkb25seX1cIlxuICAgICAgICA/ZWRpdGluZz1cIiR7dGhpcy5faXNFZGl0YWJsZShzdGVwKX1cIlxuICAgICAgICBAZHJhZ3N0YXJ0PVwiJHt0aGlzLl9vbkRyYWdTdGFydC5iaW5kKHRoaXMsIGdyb3VwLCBzdGVwLCBwb3NpdGlvbil9XCJcbiAgICAgICAgQGRyYWdlbmQ9XCIke3RoaXMuX29uRHJhZ0VuZH1cIlxuICAgICAgICBAZ3YtZmxvdy1zdGVwOmVkaXQ9XCIke3RoaXMuX29uRWRpdFN0ZXB9XCJcbiAgICAgICAgQGd2LWZsb3ctc3RlcDpjaGFuZ2Utc3RhdGU9XCIke3RoaXMuX29uQ2hhbmdlU3RlcFN0YXRlLmJpbmQodGhpcywgZ3JvdXAsIHBvc2l0aW9uKX1cIlxuICAgICAgICBAZ3YtZmxvdy1zdGVwOmRlbGV0ZT1cIiR7dGhpcy5fb25EZWxldGVTdGVwLmJpbmQodGhpcywgZ3JvdXAsIHBvc2l0aW9uKX1cIlxuICAgICAgICBAZ3YtZmxvdy1zdGVwOmR1cGxpY2F0ZT1cIiR7dGhpcy5fb25EdXBsaWNhdGVTdGVwLmJpbmQodGhpcywgZ3JvdXAsIHBvc2l0aW9uKX1cIlxuICAgICAgPjwvZ3YtZmxvdy1zdGVwPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBodG1sYGA7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgX2dldFVwZGF0ZUNvbXBsZXRlKCkge1xuICAgIGF3YWl0IHN1cGVyLl9nZXRVcGRhdGVDb21wbGV0ZSgpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuZ2V0Rmxvd1N0ZXBzKCkubWFwKChlKSA9PiBlLnVwZGF0ZUNvbXBsZXRlKSk7XG4gIH1cblxuICB1cGRhdGVkKHByb3BlcnRpZXMpIHtcbiAgICBpZiAocHJvcGVydGllcy5oYXMoJ2RhdGEnKSkge1xuICAgICAgdGhpcy5vbkRyYWdFbmQoKTtcbiAgICB9XG4gICAgaWYgKHByb3BlcnRpZXMuaGFzKCdkcm9wUG9saWN5JykgfHwgcHJvcGVydGllcy5oYXMoJ2RyYWdQb2xpY3knKSkge1xuICAgICAgaWYgKHRoaXMuZHJvcFBvbGljeSA9PSBudWxsICYmIHRoaXMuZHJhZ1BvbGljeSA9PSBudWxsKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2FuZGlkYXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25EcmFnRW5kKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wLWFyZWEtZ3JpZCcpLmNsYXNzTGlzdC5yZW1vdmUoJ2RyYWdnaW5nJyk7XG4gICAgICB0aGlzLnJlbW92ZUNhbmRpZGF0ZSgpO1xuICAgICAgY29uc3QgZHJhZ2dpbmdBcmVhID0gdGhpcy5kcmFnZ2luZ0FyZWE7XG4gICAgICBpZiAoZHJhZ2dpbmdBcmVhKSB7XG4gICAgICAgIGRyYWdnaW5nQXJlYS5yZW1vdmVBdHRyaWJ1dGUoJ2RyYWdnaW5nJyk7XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICBfZ2V0TGFiZWwoZmxvd0tleSkge1xuICAgIGlmICh0aGlzLmZsb3cudHlwZSkge1xuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWJveC10eXBlXCI+JHtmbG93S2V5fTwvZGl2PlxuICAgICAgICA8ZGl2PiR7dGhpcy5mbG93LnR5cGUudG9VcHBlckNhc2UoKSA9PT0gJ1JPT1QnID8gJ2Zsb3cnIDogdGhpcy5mbG93LnR5cGV9PC9kaXY+XG4gICAgICBgO1xuICAgIH0gZWxzZSBpZiAoZmxvd0tleSA9PT0gJ3ByZScpIHtcbiAgICAgIHJldHVybiAncmVxdWVzdCc7XG4gICAgfSBlbHNlIGlmIChmbG93S2V5ID09PSAncG9zdCcpIHtcbiAgICAgIHJldHVybiAncmVzcG9uc2UnO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBnZXQgY29sbGVjdGlvbk5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGxhbiAhPSBudWxsID8gdGhpcy5wbGFuLm5hbWUgOiB0aGlzLmZsb3dzVGl0bGU7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgcHJlVGFyZ2V0ID0gdGhpcy5kcmFnUG9saWN5ICYmICh0aGlzLmhhc1BvbGljeUZpbHRlciAhPT0gdHJ1ZSB8fCB0aGlzLmRyYWdQb2xpY3kucG9saWN5Lm9uUmVxdWVzdCk7XG4gICAgY29uc3QgcG9zdFRhcmdldCA9IHRoaXMuZHJhZ1BvbGljeSAmJiAodGhpcy5oYXNQb2xpY3lGaWx0ZXIgIT09IHRydWUgfHwgdGhpcy5kcmFnUG9saWN5LnBvbGljeS5vblJlc3BvbnNlKTtcblxuICAgIGNvbnN0IHByZUZvcmJpZGRlbiA9IHRoaXMuZHJhZ1BvbGljeSAmJiB0aGlzLmhhc1BvbGljeUZpbHRlciA9PT0gdHJ1ZSAmJiAhdGhpcy5kcmFnUG9saWN5LnBvbGljeS5vblJlcXVlc3Q7XG4gICAgY29uc3QgcG9zdEZvcmJpZGRlbiA9IHRoaXMuZHJhZ1BvbGljeSAmJiB0aGlzLmhhc1BvbGljeUZpbHRlciA9PT0gdHJ1ZSAmJiAhdGhpcy5kcmFnUG9saWN5LnBvbGljeS5vblJlc3BvbnNlO1xuICAgIGNvbnN0IGhhc1Bvc3QgPSB0aGlzLmZsb3cudHlwZSA9PSBudWxsIHx8ICh0aGlzLmZsb3cudHlwZSAmJiB0aGlzLmZsb3cudHlwZS50b0xvd2VyQ2FzZSgpICE9PSAncm9vdCcpO1xuICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJib3hcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPiR7Z2V0Rmxvd05hbWUodGhpcy5mbG93LCB0aGlzLmNvbGxlY3Rpb25OYW1lKX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgcHJlOiB0cnVlLCB0YXJnZXRlZDogcHJlVGFyZ2V0LCBmb3JiaWRkZW46IHByZUZvcmJpZGRlbiB9KX1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFycm93IGFycm93LXJpZ2h0XCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3AtYm94XCJcbiAgICAgICAgICAgICAgICBAZHJvcD1cIiR7dGhpcy5fb25Ecm9wLmJpbmQodGhpcywgJ3ByZScpfVwiXG4gICAgICAgICAgICAgICAgQGRyYWdlbmQ9XCIke3RoaXMub25EcmFnRW5kfVwiXG4gICAgICAgICAgICAgICAgQGRyYWdvdmVyPVwiJHt0aGlzLl9vbkRyYWdPdmVyLmJpbmQodGhpcywgJ3ByZScpfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1ib3gtdGl0bGVcIj4ke3ByZVRhcmdldCA/ICdkcm9wIGhlcmUnIDogdGhpcy5fZ2V0TGFiZWwoJ3ByZScpfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWFyZWEtZ3JpZFwiPiR7dGhpcy5mbG93LnByZS5tYXAoKGZsb3dTdGVwLCBpKSA9PiB0aGlzLl9yZW5kZXJEcm9wU3RlcCgncHJlJywgZmxvd1N0ZXAsIGkpKX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgJHtoYXNQb3N0XG4gICAgICAgICAgICAgID8gaHRtbGBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIke2NsYXNzTWFwKHsgcG9zdDogdHJ1ZSwgdGFyZ2V0ZWQ6IHBvc3RUYXJnZXQsIGZvcmJpZGRlbjogcG9zdEZvcmJpZGRlbiB9KX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nYXJyb3cgYXJyb3ctbGVmdCc+IDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWJveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZHJvcD1cIiR7dGhpcy5fb25Ecm9wLmJpbmQodGhpcywgJ3Bvc3QnKX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRyYWdlbmQ9XCIke3RoaXMub25EcmFnRW5kfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZHJhZ292ZXI9XCIke3RoaXMuX29uRHJhZ092ZXIuYmluZCh0aGlzLCAncG9zdCcpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtYXJlYS1ncmlkIGRyb3AtYXJlYS1ncmlkLXJldmVyc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5mbG93LnBvc3QubWFwKChmbG93U3RlcCwgaSkgPT4gdGhpcy5fcmVuZGVyRHJvcFN0ZXAoJ3Bvc3QnLCBmbG93U3RlcCwgaSkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1ib3gtdGl0bGVcIj4ke3Bvc3RUYXJnZXQgPyAnZHJvcCBoZXJlJyA6IHRoaXMuX2dldExhYmVsKCdwb3N0Jyl9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgICAgICAgOiAnJ31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5gO1xuICB9XG5cbiAgZmluZFBvbGljeShwb2xpY3lJZCkge1xuICAgIGNvbnN0IHBvbGljeSA9IHRoaXMucG9saWNpZXMuZmluZCgocCkgPT4gcC5pZCA9PT0gcG9saWN5SWQpO1xuICAgIGlmIChwb2xpY3kgPT0gbnVsbCkge1xuICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKGBQb2xpY3kgJHtwb2xpY3lJZH0gbm90IGZvdW5kYCk7XG4gICAgfVxuICAgIHJldHVybiBwb2xpY3k7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHN0eWxlcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgbWV0aG9kcyxcbiAgICAgIC8vIGxhbmd1YWdlPUNTU1xuICAgICAgY3NzYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZsb3cge1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3AtYXJlYS1ncmlkIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMzUwbXMgZWFzZS1pbi1vdXQ7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gNDBweCk7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBtaW4taGVpZ2h0OiAxNTBweDtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIHBhZGRpbmc6IDAgMzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YXJnZXRlZCAuZHJvcC1hcmVhLWdyaWQge1xuICAgICAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCAjZDlkOWQ5O1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcmJpZGRlbiAuZHJvcC1hcmVhLWdyaWQge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZmVmZWY7XG4gICAgICAgICAgb3BhY2l0eTogMC4yO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3YtZmxvdy1zdGVwIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1lc3NhZ2Uge1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgY29sb3I6ICNkOWQ5ZDk7XG4gICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDM1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLm1lc3NhZ2Uge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhcmdldGVkIC5tZXNzYWdlIHtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhcmdldGVkIC5kcm9wLWFyZWEtZW1wdHkge1xuICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDM1MG1zIGVhc2UtaW4tb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgLnByZSxcbiAgICAgICAgLnBvc3Qge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIH1cblxuICAgICAgICAuYXJyb3cge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkOWQ5ZDk7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDUwcHggKiAyIC0gMXB4KTtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIG1hcmdpbjogMCAzMHB4O1xuICAgICAgICAgIGNvbG9yOiAjMjYyNjI2O1xuICAgICAgICAgIHRvcDogY2FsYyg1MCUgLSAyMHB4KTtcbiAgICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYXJyb3ctcmlnaHQ6OmFmdGVyIHtcbiAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgYm9yZGVyLXRvcDogNDBweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiA0MHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgIGJvcmRlci1sZWZ0OiA0MHB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICByaWdodDogLTIwcHg7XG4gICAgICAgICAgdG9wOiAtMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5kcm9wLWJveC10eXBlIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLXRiO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZHJvcC1ib3gtdGl0bGUge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICB3cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyO1xuICAgICAgICAgIHRleHQtb3JpZW50YXRpb246IHVwcmlnaHQ7XG4gICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICBjb2xvcjogI2JmYmZiZjtcbiAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgbWF4LWhlaWdodDogMTQ1cHg7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEzcHg7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgIG1pbi13aWR0aDogMzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wcmUgLmRyb3AtYm94LXRpdGxlIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgbGVmdDogLTMwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuYXJyb3ctbGVmdDo6YWZ0ZXIge1xuICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICBib3JkZXItdG9wOiA0MHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDQwcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgYm9yZGVyLXJpZ2h0OiA0MHB4IHNvbGlkICNkOWQ5ZDk7XG4gICAgICAgICAgY29udGVudDogJyAnO1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBsZWZ0OiAtMjBweDtcbiAgICAgICAgICB0b3A6IC0yMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3AtYm94IHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgIG1hcmdpbjogMCAzMHB4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmRyb3AtYXJlYS1ncmlkLXJldmVyc2Uge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oZWFkZXIge1xuICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgbWluLWhlaWdodDogNDVweDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuaGVhZGVyIC50aXRsZSB7XG4gICAgICAgICAgY29sb3I6ICMyODQ0NGY7XG4gICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICBtYXJnaW46IDAgMC41cmVtO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlYWRlciAudGl0bGUgLmZsb3ctcGF0aCB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5ib3gge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgZmxleC1ncm93OiAxO1xuXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgICAgLyogZm9yIEZpcmVmb3ggKi9cbiAgICAgICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb250ZW50IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgICBmbGV4LWdyb3c6IDE7XG5cbiAgICAgICAgICBvdmVyZmxvdzogYXV0bztcblxuICAgICAgICAgIC8qIGZvciBGaXJlZm94ICovXG4gICAgICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIH1cbiAgICAgIGAsXG4gICAgXTtcbiAgfVxufVxuXG53aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdndi1mbG93JywgR3ZGbG93KTtcbiJdfQ==