@dcl/asset-packs 2.3.1 → 2.3.2-20250506093725.commit-19a869d

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 (61) hide show
  1. package/bin/index.js +3722 -1596
  2. package/catalog.json +127 -1
  3. package/dist/admin-toolkit-ui/Active.d.ts +11 -0
  4. package/dist/admin-toolkit-ui/Active.js +32 -0
  5. package/dist/admin-toolkit-ui/Button.d.ts +22 -9
  6. package/dist/admin-toolkit-ui/Button.js +45 -28
  7. package/dist/admin-toolkit-ui/Card.d.ts +6 -0
  8. package/dist/admin-toolkit-ui/Card.js +22 -0
  9. package/dist/admin-toolkit-ui/Error.d.ts +9 -0
  10. package/dist/admin-toolkit-ui/Error.js +31 -0
  11. package/dist/admin-toolkit-ui/Header.d.ts +8 -0
  12. package/dist/admin-toolkit-ui/Header.js +17 -0
  13. package/dist/admin-toolkit-ui/Loading.d.ts +11 -0
  14. package/dist/admin-toolkit-ui/Loading.js +31 -0
  15. package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.d.ts +7 -0
  16. package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.js +67 -0
  17. package/dist/admin-toolkit-ui/ModerationControl/AdminList.d.ts +10 -0
  18. package/dist/admin-toolkit-ui/ModerationControl/AdminList.js +192 -0
  19. package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.d.ts +8 -0
  20. package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.js +75 -0
  21. package/dist/admin-toolkit-ui/ModerationControl/api.d.ts +12 -0
  22. package/dist/admin-toolkit-ui/ModerationControl/api.js +28 -0
  23. package/dist/admin-toolkit-ui/ModerationControl/index.d.ts +23 -0
  24. package/dist/admin-toolkit-ui/ModerationControl/index.js +37 -0
  25. package/dist/admin-toolkit-ui/SmartItemsControl.js +34 -56
  26. package/dist/admin-toolkit-ui/TextAnnouncementsControl.js +50 -59
  27. package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.d.ts +7 -0
  28. package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.js +62 -0
  29. package/dist/admin-toolkit-ui/{VideoControl.d.ts → VideoControl/LiveStream/GenerateStreamKey.d.ts} +2 -3
  30. package/dist/admin-toolkit-ui/VideoControl/LiveStream/GenerateStreamKey.js +41 -0
  31. package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.d.ts +11 -0
  32. package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.js +112 -0
  33. package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.d.ts +10 -0
  34. package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.js +62 -0
  35. package/dist/admin-toolkit-ui/VideoControl/VideoUrl.d.ts +9 -0
  36. package/dist/admin-toolkit-ui/VideoControl/VideoUrl.js +125 -0
  37. package/dist/admin-toolkit-ui/VideoControl/VolumeControl.d.ts +8 -0
  38. package/dist/admin-toolkit-ui/VideoControl/VolumeControl.js +82 -0
  39. package/dist/admin-toolkit-ui/VideoControl/api.d.ts +12 -0
  40. package/dist/admin-toolkit-ui/VideoControl/api.js +17 -0
  41. package/dist/admin-toolkit-ui/VideoControl/index.d.ts +28 -0
  42. package/dist/admin-toolkit-ui/VideoControl/index.js +107 -0
  43. package/dist/admin-toolkit-ui/VideoControl/utils.d.ts +28 -0
  44. package/dist/admin-toolkit-ui/VideoControl/utils.js +87 -0
  45. package/dist/admin-toolkit-ui/fetch-utils.d.ts +14 -0
  46. package/dist/admin-toolkit-ui/fetch-utils.js +41 -0
  47. package/dist/admin-toolkit-ui/index.d.ts +11 -0
  48. package/dist/admin-toolkit-ui/index.js +200 -272
  49. package/dist/admin-toolkit-ui/types.d.ts +0 -2
  50. package/dist/admin-toolkit-ui/types.js +1 -1
  51. package/dist/admin-toolkit-ui/utils.d.ts +10 -2
  52. package/dist/admin-toolkit-ui/utils.js +31 -51
  53. package/dist/bin/index.js +3722 -1596
  54. package/dist/definitions.d.ts +18 -17
  55. package/dist/definitions.js +12 -10
  56. package/dist/enums.d.ts +5 -0
  57. package/dist/enums.js +7 -1
  58. package/dist/id.d.ts +2 -4
  59. package/dist/scene-entrypoint.js +1 -1
  60. package/package.json +6 -6
  61. package/dist/admin-toolkit-ui/VideoControl.js +0 -297
@@ -5,24 +5,12 @@ import { getExplorerComponents } from '../components';
5
5
  import { getScaleUIFactor } from '../ui';
6
6
  import { Button } from './Button';
7
7
  import { CONTENT_URL } from './constants';
8
+ import { Header } from './Header';
9
+ import { Card } from './Card';
10
+ import { getSmartItems } from '.';
8
11
  const ICONS = {
9
12
  SMART_ITEM_CONTROL: `${CONTENT_URL}/admin_toolkit/assets/icons/smart-item-control.png`,
10
13
  };
11
- function getAdminToolkitSmartItemsControl(engine) {
12
- const { AdminTools } = getComponents(engine);
13
- const adminToolkitEntities = Array.from(engine.getEntitiesWith(AdminTools));
14
- return adminToolkitEntities.length > 0
15
- ? adminToolkitEntities[0][1].smartItemsControl
16
- : null;
17
- }
18
- function getSmartItems(engine) {
19
- const adminToolkitSmartItemsControl = getAdminToolkitSmartItemsControl(engine);
20
- if (!adminToolkitSmartItemsControl ||
21
- !adminToolkitSmartItemsControl.smartItems ||
22
- adminToolkitSmartItemsControl.smartItems.length === 0)
23
- return [];
24
- return Array.from(adminToolkitSmartItemsControl.smartItems);
25
- }
26
14
  function getSmartItemActions(engine, smartItem) {
27
15
  const { Actions } = getComponents(engine);
28
16
  if (!smartItem || !Actions.has(smartItem.entity))
@@ -71,23 +59,6 @@ function handleHideShowEntity(engine, state, smartItems) {
71
59
  const visibility = VisibilityComponent.getOrCreateMutable(smartItemEntity);
72
60
  visibility.visible = toggleVisibility;
73
61
  }
74
- function Header({ engine }) {
75
- const scaleFactor = getScaleUIFactor(engine);
76
- return (ReactEcs.createElement(UiEntity, { uiTransform: {
77
- flexDirection: 'row',
78
- margin: { bottom: 10 * scaleFactor },
79
- height: 30 * scaleFactor,
80
- } },
81
- ReactEcs.createElement(UiEntity, { uiTransform: {
82
- height: 30 * scaleFactor,
83
- width: 30 * scaleFactor,
84
- }, uiBackground: {
85
- color: Color4.White(),
86
- textureMode: 'stretch',
87
- texture: { src: ICONS.SMART_ITEM_CONTROL },
88
- } }),
89
- ReactEcs.createElement(Label, { value: "<b>Smart Item Actions</b>", uiTransform: { margin: { bottom: 8, left: 20 } }, fontSize: 24 * scaleFactor, color: Color4.White() })));
90
- }
91
62
  function SmartItemSelector({ engine, smartItems, selectedIndex, onSelect, }) {
92
63
  const scaleFactor = getScaleUIFactor(engine);
93
64
  return (ReactEcs.createElement(UiEntity, { key: "SmartItemsControlDropdownWrapper", uiTransform: {
@@ -104,19 +75,19 @@ function SmartItemSelector({ engine, smartItems, selectedIndex, onSelect, }) {
104
75
  }
105
76
  function ActionSelector({ engine, actions, selectedIndex, disabled, onChange, }) {
106
77
  const scaleFactor = getScaleUIFactor(engine);
107
- return (ReactEcs.createElement(UiEntity, { key: "SmartItemActionsControlDropdownWrapper", uiTransform: {
78
+ return (ReactEcs.createElement(UiEntity, { uiTransform: {
108
79
  flexDirection: 'column',
109
80
  margin: { bottom: 32 * scaleFactor },
110
81
  } },
111
82
  ReactEcs.createElement(Label, { value: "<b>Actions</b>", fontSize: 16 * scaleFactor, color: Color4.White(), uiTransform: {
112
83
  margin: { bottom: 16 * scaleFactor },
113
84
  } }),
114
- ReactEcs.createElement(Dropdown, { key: "SmartItemActionsControlDropdownSelector", acceptEmpty: true, emptyLabel: "Select Action", options: actions.map((action) => action.name), selectedIndex: selectedIndex, onChange: onChange, disabled: disabled, textAlign: "middle-left", fontSize: 14 * scaleFactor, uiTransform: {
85
+ actions.length ? ReactEcs.createElement(Dropdown, { acceptEmpty: true, emptyLabel: "Select Action", options: actions.map((action) => action.name), selectedIndex: selectedIndex, onChange: onChange, disabled: disabled, textAlign: "middle-left", fontSize: 14 * scaleFactor, uiTransform: {
115
86
  height: 40 * scaleFactor,
116
87
  width: '100%',
117
88
  }, uiBackground: {
118
89
  color: disabled ? Color4.Gray() : Color4.White(),
119
- }, color: Color4.Black() })));
90
+ }, color: Color4.Black() }) : ReactEcs.createElement(UiEntity, null)));
120
91
  }
121
92
  function ActionButtons({ engine, state, smartItems, actions, selectedAction, }) {
122
93
  const scaleFactor = getScaleUIFactor(engine);
@@ -129,13 +100,18 @@ function ActionButtons({ engine, state, smartItems, actions, selectedAction, })
129
100
  return (ReactEcs.createElement(UiEntity, { uiTransform: {
130
101
  flexDirection: 'row',
131
102
  } },
132
- ReactEcs.createElement(Button, { id: "smart_items_control_restart", value: "<b>Play Action</b>", variant: "text", fontSize: 16 * scaleFactor, color: Color4.White(), uiTransform: { margin: { right: 8 * scaleFactor } }, disabled: !selectedSmartItem || !selectedAction, onMouseDown: () => {
103
+ ReactEcs.createElement(Button, { id: "smart_items_control_restart", value: "<b>Play Action</b>", variant: "text", fontSize: 16 * scaleFactor, color: Color4.White(), uiTransform: {
104
+ margin: { right: 8 * scaleFactor },
105
+ height: 40 * scaleFactor,
106
+ }, labelTransform: {
107
+ margin: { left: 10 * scaleFactor, right: 10 * scaleFactor },
108
+ }, disabled: !selectedSmartItem || !selectedAction, onMouseDown: () => {
133
109
  if (selectedSmartItem && selectedAction) {
134
110
  handleExecuteAction(selectedSmartItem, selectedAction);
135
111
  }
136
112
  } }),
137
- ReactEcs.createElement(Button, { id: "smart_items_control_hide_show", value: `<b>${isVisible ? 'Hide' : 'Show'} Entity</b>`, variant: "text", fontSize: 16 * scaleFactor, color: Color4.White(), onMouseDown: () => handleHideShowEntity(engine, state, smartItems), disabled: !selectedSmartItem, uiTransform: {
138
- margin: { right: 8 * scaleFactor },
113
+ ReactEcs.createElement(Button, { id: "smart_items_control_hide_show", value: `<b>${isVisible ? 'Hide' : 'Show'} Entity</b>`, variant: "text", fontSize: 16 * scaleFactor, color: Color4.White(), onMouseDown: () => handleHideShowEntity(engine, state, smartItems), disabled: !selectedSmartItem, uiTransform: { margin: { right: 8 * scaleFactor } }, labelTransform: {
114
+ margin: { left: 10 * scaleFactor, right: 10 * scaleFactor },
139
115
  } })));
140
116
  }
141
117
  export function SmartItemsControl({ engine, state, }) {
@@ -151,22 +127,24 @@ export function SmartItemsControl({ engine, state, }) {
151
127
  (stateSelectedAction ?? selectedSmartItem.defaultAction));
152
128
  })
153
129
  : undefined;
154
- return (ReactEcs.createElement(UiEntity, { key: "SmartItemsControl", uiTransform: {
155
- height: '100%',
156
- width: '100%',
157
- flexDirection: 'column',
158
- } },
159
- ReactEcs.createElement(Header, { engine: engine }),
160
- ReactEcs.createElement(SmartItemSelector, { engine: engine, smartItems: smartItems, selectedIndex: state.smartItemsControl.selectedSmartItem, onSelect: (idx) => {
161
- handleSelectSmartItem(state, smartItems, idx);
162
- } }),
163
- ReactEcs.createElement(ActionSelector, { engine: engine, actions: actions, selectedIndex: selectedActionIndex, disabled: state.smartItemsControl.selectedSmartItem === undefined, onChange: (idx) => {
164
- if (state.smartItemsControl.selectedSmartItem !== undefined) {
165
- handleSelectAction(state, smartItems[state.smartItemsControl.selectedSmartItem], actions[idx]);
166
- }
167
- } }),
168
- ReactEcs.createElement(ActionButtons, { engine: engine, state: state, smartItems: smartItems, actions: actions, selectedAction: selectedActionIndex !== undefined
169
- ? actions[selectedActionIndex]
170
- : undefined })));
130
+ const scaleFactor = getScaleUIFactor(engine);
131
+ return (ReactEcs.createElement(Card, { scaleFactor: scaleFactor },
132
+ ReactEcs.createElement(UiEntity, { key: "SmartItemsControl", uiTransform: {
133
+ height: '100%',
134
+ width: '100%',
135
+ flexDirection: 'column',
136
+ } },
137
+ ReactEcs.createElement(Header, { iconSrc: ICONS.SMART_ITEM_CONTROL, title: "Smart Item Actions", scaleFactor: scaleFactor }),
138
+ ReactEcs.createElement(SmartItemSelector, { engine: engine, smartItems: smartItems, selectedIndex: state.smartItemsControl.selectedSmartItem, onSelect: (idx) => {
139
+ handleSelectSmartItem(state, smartItems, idx);
140
+ } }),
141
+ ReactEcs.createElement(ActionSelector, { engine: engine, actions: actions, selectedIndex: selectedActionIndex, disabled: state.smartItemsControl.selectedSmartItem === undefined, onChange: (idx) => {
142
+ if (state.smartItemsControl.selectedSmartItem !== undefined) {
143
+ handleSelectAction(state, smartItems[state.smartItemsControl.selectedSmartItem], actions[idx]);
144
+ }
145
+ } }),
146
+ ReactEcs.createElement(ActionButtons, { engine: engine, state: state, smartItems: smartItems, actions: actions, selectedAction: selectedActionIndex !== undefined
147
+ ? actions[selectedActionIndex]
148
+ : undefined }))));
171
149
  }
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU21hcnRJdGVtc0NvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9TbWFydEl0ZW1zQ29udHJvbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdEMsT0FBTyxFQUdMLGVBQWUsRUFDZixhQUFhLEVBQ2IsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFJekMsTUFBTSxLQUFLLEdBQUc7SUFDWixrQkFBa0IsRUFBRSxHQUFHLFdBQVcsb0RBQW9EO0NBQzlFLENBQUE7QUFHVixTQUFTLGdDQUFnQyxDQUFDLE1BQWU7SUFDdkQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUM1QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQzNFLE9BQU8sb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDcEMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtRQUM5QyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQ1YsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixNQUFlO0lBRWYsTUFBTSw2QkFB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QUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDaEIsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQzVELGtCQUFrQixDQUNoQixLQUFLLEVBQ0wsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQ2IsQ0FBQTtnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxHQUNEO1FBRUYsdUJBQUMsYUFBYSxJQUNaLE1BQU0sRUFBRSxNQUFNLEVBQ2QsS0FBSyxFQUFFLEtBQUssRUFDWixVQUFVLEVBQUUsVUFBVSxFQUN0QixPQUFPLEVBQUUsT0FBTyxFQUNoQixjQUFjLEVBQ1osbUJBQW1CLEtBQUssU0FBUztnQkFDL0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLFNBQVMsR0FFZixDQUNPLENBQ1osQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIElFbmdpbmUgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCBSZWFjdEVjcywgeyBEcm9wZG93biwgTGFiZWwsIFVpRW50aXR5IH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnXG5pbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBBZG1pblRvb2xzLFxuICBnZXRBY3Rpb25FdmVudHMsXG4gIGdldENvbXBvbmVudHMsXG4gIGdldFBheWxvYWQsXG59IGZyb20gJy4uL2RlZmluaXRpb25zJ1xuaW1wb3J0IHsgZ2V0RXhwbG9yZXJDb21wb25lbnRzIH0gZnJvbSAnLi4vY29tcG9uZW50cydcbmltcG9ydCB7IGdldFNjYWxlVUlGYWN0b3IgfSBmcm9tICcuLi91aSdcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJ1xuaW1wb3J0IHsgQ09OVEVOVF9VUkwgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi90eXBlcydcblxuLy8gQ29uc3RhbnRzXG5jb25zdCBJQ09OUyA9IHtcbiAgU01BUlRfSVRFTV9DT05UUk9MOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvc21hcnQtaXRlbS1jb250cm9sLnBuZ2AsXG59IGFzIGNvbnN0XG5cbi8vIEhlbHBlciBGdW5jdGlvbnNcbmZ1bmN0aW9uIGdldEFkbWluVG9vbGtpdFNtYXJ0SXRlbXNDb250cm9sKGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCB7IEFkbWluVG9vbHMgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKVxuICBjb25zdCBhZG1pblRvb2xraXRFbnRpdGllcyA9IEFycmF5LmZyb20oZW5naW5lLmdldEVudGl0aWVzV2l0aChBZG1pblRvb2xzKSlcbiAgcmV0dXJuIGFkbWluVG9vbGtpdEVudGl0aWVzLmxlbmd0aCA+IDBcbiAgICA/IGFkbWluVG9vbGtpdEVudGl0aWVzWzBdWzFdLnNtYXJ0SXRlbXNDb250cm9sXG4gICAgOiBudWxsXG59XG5cbmZ1bmN0aW9uIGdldFNtYXJ0SXRlbXMoXG4gIGVuZ2luZTogSUVuZ2luZSxcbik6IE5vbk51bGxhYmxlPEFkbWluVG9vbHNbJ3NtYXJ0SXRlbXNDb250cm9sJ11bJ3NtYXJ0SXRlbXMnXT4ge1xuICBjb25zdCBhZG1pblRvb2xraXRTbWFydEl0ZW1zQ29udHJvbCA9IGdldEFkbWluVG9vbGtpdFNtYXJ0SXRlbXNDb250cm9sKGVuZ2luZSlcblxuICBpZiAoXG4gICAgIWFkbWluVG9vbGtpdFNtYXJ0SXRlbXNDb250cm9sIHx8XG4gICAgIWFkbWluVG9vbGtpdFNtYXJ0SXRlbXNDb250cm9sLnNtYXJ0SXRlbXMgfHxcbiAgICBhZG1pblRvb2xraXRTbWFydEl0ZW1zQ29udHJvbC5zbWFydEl0ZW1zLmxlbmd0aCA9PT0gMFxuICApXG4gICAgcmV0dXJuIFtdXG5cbiAgcmV0dXJuIEFycmF5LmZyb20oYWRtaW5Ub29sa2l0U21hcnRJdGVtc0NvbnRyb2wuc21hcnRJdGVtcylcbn1cblxuZnVuY3Rpb24gZ2V0U21hcnRJdGVtQWN0aW9ucyhcbiAgZW5naW5lOiBJRW5naW5lLFxuICBzbWFydEl0ZW06IE5vbk51bGxhYmxlPEFkbWluVG9vbHNbJ3NtYXJ0SXRlbXNDb250cm9sJ11bJ3NtYXJ0SXRlbXMnXT5bMF0sXG4pIHtcbiAgY29uc3QgeyBBY3Rpb25zIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSlcbiAgaWYgKCFzbWFydEl0ZW0gfHwgIUFjdGlvbnMuaGFzKHNtYXJ0SXRlbS5lbnRpdHkgYXMgRW50aXR5KSkgcmV0dXJuIFtdXG5cbiAgY29uc3QgYWN0aW9ucyA9IEFycmF5LmZyb20oQWN0aW9ucy5nZXQoc21hcnRJdGVtLmVudGl0eSBhcyBFbnRpdHkpLnZhbHVlKVxuICByZXR1cm4gYWN0aW9uc1xufVxuXG4vLyBFdmVudCBIYW5kbGVyc1xuZnVuY3Rpb24gaGFuZGxlRXhlY3V0ZUFjdGlvbihcbiAgc21hcnRJdGVtOiBOb25OdWxsYWJsZTxBZG1pblRvb2xzWydzbWFydEl0ZW1zQ29udHJvbCddWydzbWFydEl0ZW1zJ10+WzBdLFxuICBhY3Rpb246IEFjdGlvbixcbikge1xuICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoc21hcnRJdGVtLmVudGl0eSBhcyBFbnRpdHkpXG4gIGFjdGlvbkV2ZW50cy5lbWl0KGFjdGlvbi5uYW1lLCBnZXRQYXlsb2FkKGFjdGlvbikpXG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNlbGVjdFNtYXJ0SXRlbShcbiAgc3RhdGU6IFN0YXRlLFxuICBzbWFydEl0ZW1zOiBOb25OdWxsYWJsZTxBZG1pblRvb2xzWydzbWFydEl0ZW1zQ29udHJvbCddWydzbWFydEl0ZW1zJ10+LFxuICBpZHg6IG51bWJlcixcbikge1xuICBzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zZWxlY3RlZFNtYXJ0SXRlbSA9IGlkeFxuICBjb25zdCBzbWFydEl0ZW0gPSBzbWFydEl0ZW1zW2lkeF1cblxuICBpZiAoIXN0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNtYXJ0SXRlbXMuaGFzKHNtYXJ0SXRlbS5lbnRpdHkgYXMgRW50aXR5KSkge1xuICAgIGNvbnN0IHN0YXRlU21hcnRJdGVtcyA9IG5ldyBNYXAoc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc21hcnRJdGVtcylcbiAgICBzdGF0ZVNtYXJ0SXRlbXMuc2V0KHNtYXJ0SXRlbS5lbnRpdHkgYXMgRW50aXR5LCB7XG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgc2VsZWN0ZWRBY3Rpb246IHNtYXJ0SXRlbS5kZWZhdWx0QWN0aW9uLFxuICAgIH0pXG4gICAgc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wgPSB7XG4gICAgICAuLi5zdGF0ZS5zbWFydEl0ZW1zQ29udHJvbCxcbiAgICAgIHNtYXJ0SXRlbXM6IG5ldyBNYXAoc3RhdGVTbWFydEl0ZW1zKSxcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlU2VsZWN0QWN0aW9uKFxuICBzdGF0ZTogU3RhdGUsXG4gIHNtYXJ0SXRlbTogTm9uTnVsbGFibGU8QWRtaW5Ub29sc1snc21hcnRJdGVtc0NvbnRyb2wnXVsnc21hcnRJdGVtcyddPlswXSxcbiAgYWN0aW9uOiBBY3Rpb24sXG4pIHtcbiAgY29uc3Qgc3RhdGVTbWFydEl0ZW1zID0gbmV3IE1hcChzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zbWFydEl0ZW1zKVxuICBzdGF0ZVNtYXJ0SXRlbXMuc2V0KHNtYXJ0SXRlbS5lbnRpdHkgYXMgRW50aXR5LCB7XG4gICAgLi4uc3RhdGVTbWFydEl0ZW1zLmdldChzbWFydEl0ZW0uZW50aXR5IGFzIEVudGl0eSkhLFxuICAgIHNlbGVjdGVkQWN0aW9uOiBhY3Rpb24ubmFtZSxcbiAgfSlcblxuICBzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbCA9IHtcbiAgICAuLi5zdGF0ZS5zbWFydEl0ZW1zQ29udHJvbCxcbiAgICBzbWFydEl0ZW1zOiBuZXcgTWFwKHN0YXRlU21hcnRJdGVtcyksXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlSGlkZVNob3dFbnRpdHkoXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgc3RhdGU6IFN0YXRlLFxuICBzbWFydEl0ZW1zOiBOb25OdWxsYWJsZTxBZG1pblRvb2xzWydzbWFydEl0ZW1zQ29udHJvbCddWydzbWFydEl0ZW1zJ10+LFxuKSB7XG4gIGNvbnN0IHsgVmlzaWJpbGl0eUNvbXBvbmVudCB9ID0gZ2V0RXhwbG9yZXJDb21wb25lbnRzKGVuZ2luZSlcblxuICBjb25zdCBzbWFydEl0ZW1FbnRpdHkgPSBzbWFydEl0ZW1zW3N0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNlbGVjdGVkU21hcnRJdGVtIV1cbiAgICAuZW50aXR5IGFzIEVudGl0eVxuICBjb25zdCBzbWFydEl0ZW0gPSBzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zbWFydEl0ZW1zLmdldChzbWFydEl0ZW1FbnRpdHkpXG5cbiAgY29uc3QgdG9nZ2xlVmlzaWJpbGl0eSA9ICFzbWFydEl0ZW0hLnZpc2libGVcbiAgc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc21hcnRJdGVtcy5nZXQoc21hcnRJdGVtRW50aXR5KSEudmlzaWJsZSA9XG4gICAgdG9nZ2xlVmlzaWJpbGl0eVxuXG4gIGNvbnN0IHZpc2liaWxpdHkgPSBWaXNpYmlsaXR5Q29tcG9uZW50LmdldE9yQ3JlYXRlTXV0YWJsZShzbWFydEl0ZW1FbnRpdHkpXG4gIHZpc2liaWxpdHkudmlzaWJsZSA9IHRvZ2dsZVZpc2liaWxpdHlcbn1cblxuLy8gQ29tcG9uZW50c1xuZnVuY3Rpb24gSGVhZGVyKHsgZW5naW5lIH06IHsgZW5naW5lOiBJRW5naW5lIH0pIHtcbiAgY29uc3Qgc2NhbGVGYWN0b3IgPSBnZXRTY2FsZVVJRmFjdG9yKGVuZ2luZSlcbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICBtYXJnaW46IHsgYm90dG9tOiAxMCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgIGhlaWdodDogMzAgKiBzY2FsZUZhY3RvcixcbiAgICAgIH19XG4gICAgPlxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgaGVpZ2h0OiAzMCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIHdpZHRoOiAzMCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICB9fVxuICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICB0ZXh0dXJlOiB7IHNyYzogSUNPTlMuU01BUlRfSVRFTV9DT05UUk9MIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgPExhYmVsXG4gICAgICAgIHZhbHVlPVwiPGI+U21hcnQgSXRlbSBBY3Rpb25zPC9iPlwiXG4gICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyBib3R0b206IDgsIGxlZnQ6IDIwIH0gfX1cbiAgICAgICAgZm9udFNpemU9ezI0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgIC8+XG4gICAgPC9VaUVudGl0eT5cbiAgKVxufVxuXG5mdW5jdGlvbiBTbWFydEl0ZW1TZWxlY3Rvcih7XG4gIGVuZ2luZSxcbiAgc21hcnRJdGVtcyxcbiAgc2VsZWN0ZWRJbmRleCxcbiAgb25TZWxlY3QsXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZVxuICBzbWFydEl0ZW1zOiBOb25OdWxsYWJsZTxBZG1pblRvb2xzWydzbWFydEl0ZW1zQ29udHJvbCddWydzbWFydEl0ZW1zJ10+XG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZFxuICBvblNlbGVjdDogKGlkeDogbnVtYmVyKSA9PiB2b2lkXG59KSB7XG4gIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVVSUZhY3RvcihlbmdpbmUpXG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIGtleT1cIlNtYXJ0SXRlbXNDb250cm9sRHJvcGRvd25XcmFwcGVyXCJcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICBtYXJnaW46IHsgYm90dG9tOiAzMiAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIjxiPlNlbGVjdGVkIFNtYXJ0IEl0ZW08L2I+XCJcbiAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBtYXJnaW46IHsgYm90dG9tOiAxNiAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgPERyb3Bkb3duXG4gICAgICAgIGtleT1cIlNtYXJ0SXRlbXNDb250cm9sRHJvcGRvd25TZWxlY3RvclwiXG4gICAgICAgIGFjY2VwdEVtcHR5XG4gICAgICAgIGVtcHR5TGFiZWw9XCJTZWxlY3QgU21hcnQgSXRlbVwiXG4gICAgICAgIG9wdGlvbnM9e3NtYXJ0SXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmN1c3RvbU5hbWUpfVxuICAgICAgICBzZWxlY3RlZEluZGV4PXtzZWxlY3RlZEluZGV4ID8/IC0xfVxuICAgICAgICBvbkNoYW5nZT17b25TZWxlY3R9XG4gICAgICAgIHRleHRBbGlnbj1cIm1pZGRsZS1sZWZ0XCJcbiAgICAgICAgZm9udFNpemU9ezE0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgaGVpZ2h0OiA0MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH19XG4gICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LldoaXRlKCkgfX1cbiAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgLz5cbiAgICA8L1VpRW50aXR5PlxuICApXG59XG5cbmZ1bmN0aW9uIEFjdGlvblNlbGVjdG9yKHtcbiAgZW5naW5lLFxuICBhY3Rpb25zLFxuICBzZWxlY3RlZEluZGV4LFxuICBkaXNhYmxlZCxcbiAgb25DaGFuZ2UsXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZVxuICBhY3Rpb25zOiBBY3Rpb25bXVxuICBzZWxlY3RlZEluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgZGlzYWJsZWQ6IGJvb2xlYW5cbiAgb25DaGFuZ2U6IChpZHg6IG51bWJlcikgPT4gdm9pZFxufSkge1xuICBjb25zdCBzY2FsZUZhY3RvciA9IGdldFNjYWxlVUlGYWN0b3IoZW5naW5lKVxuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5XG4gICAgICBrZXk9XCJTbWFydEl0ZW1BY3Rpb25zQ29udHJvbERyb3Bkb3duV3JhcHBlclwiXG4gICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMzIgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8TGFiZWxcbiAgICAgICAgdmFsdWU9XCI8Yj5BY3Rpb25zPC9iPlwiXG4gICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICAgIDxEcm9wZG93blxuICAgICAgICBrZXk9XCJTbWFydEl0ZW1BY3Rpb25zQ29udHJvbERyb3Bkb3duU2VsZWN0b3JcIlxuICAgICAgICBhY2NlcHRFbXB0eVxuICAgICAgICBlbXB0eUxhYmVsPVwiU2VsZWN0IEFjdGlvblwiXG4gICAgICAgIG9wdGlvbnM9e2FjdGlvbnMubWFwKChhY3Rpb24pID0+IGFjdGlvbi5uYW1lKX1cbiAgICAgICAgc2VsZWN0ZWRJbmRleD17c2VsZWN0ZWRJbmRleH1cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIHRleHRBbGlnbj1cIm1pZGRsZS1sZWZ0XCJcbiAgICAgICAgZm9udFNpemU9ezE0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgaGVpZ2h0OiA0MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH19XG4gICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgIGNvbG9yOiBkaXNhYmxlZCA/IENvbG9yNC5HcmF5KCkgOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgfX1cbiAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgLz5cbiAgICA8L1VpRW50aXR5PlxuICApXG59XG5cbmZ1bmN0aW9uIEFjdGlvbkJ1dHRvbnMoe1xuICBlbmdpbmUsXG4gIHN0YXRlLFxuICBzbWFydEl0ZW1zLFxuICBhY3Rpb25zLFxuICBzZWxlY3RlZEFjdGlvbixcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lXG4gIHN0YXRlOiBTdGF0ZVxuICBzbWFydEl0ZW1zOiBOb25OdWxsYWJsZTxBZG1pblRvb2xzWydzbWFydEl0ZW1zQ29udHJvbCddWydzbWFydEl0ZW1zJ10+XG4gIGFjdGlvbnM6IEFjdGlvbltdXG4gIHNlbGVjdGVkQWN0aW9uOiBBY3Rpb24gfCB1bmRlZmluZWRcbn0pIHtcbiAgY29uc3Qgc2NhbGVGYWN0b3IgPSBnZXRTY2FsZVVJRmFjdG9yKGVuZ2luZSlcblxuICBjb25zdCBzZWxlY3RlZFNtYXJ0SXRlbSA9XG4gICAgc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc2VsZWN0ZWRTbWFydEl0ZW0gIT09IHVuZGVmaW5lZFxuICAgICAgPyBzbWFydEl0ZW1zW3N0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNlbGVjdGVkU21hcnRJdGVtXVxuICAgICAgOiB1bmRlZmluZWRcblxuICBjb25zdCBpc1Zpc2libGUgPVxuICAgIHNlbGVjdGVkU21hcnRJdGVtICYmXG4gICAgc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc21hcnRJdGVtcy5nZXQoc2VsZWN0ZWRTbWFydEl0ZW0uZW50aXR5IGFzIEVudGl0eSlcbiAgICAgID8udmlzaWJsZVxuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5XG4gICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBpZD1cInNtYXJ0X2l0ZW1zX2NvbnRyb2xfcmVzdGFydFwiXG4gICAgICAgIHZhbHVlPVwiPGI+UGxheSBBY3Rpb248L2I+XCJcbiAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICBmb250U2l6ZT17MTYgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9IH19XG4gICAgICAgIGRpc2FibGVkPXshc2VsZWN0ZWRTbWFydEl0ZW0gfHwgIXNlbGVjdGVkQWN0aW9ufVxuICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgIGlmIChzZWxlY3RlZFNtYXJ0SXRlbSAmJiBzZWxlY3RlZEFjdGlvbikge1xuICAgICAgICAgICAgaGFuZGxlRXhlY3V0ZUFjdGlvbihzZWxlY3RlZFNtYXJ0SXRlbSwgc2VsZWN0ZWRBY3Rpb24pXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgaWQ9XCJzbWFydF9pdGVtc19jb250cm9sX2hpZGVfc2hvd1wiXG4gICAgICAgIHZhbHVlPXtgPGI+JHtpc1Zpc2libGUgPyAnSGlkZScgOiAnU2hvdyd9IEVudGl0eTwvYj5gfVxuICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiBoYW5kbGVIaWRlU2hvd0VudGl0eShlbmdpbmUsIHN0YXRlLCBzbWFydEl0ZW1zKX1cbiAgICAgICAgZGlzYWJsZWQ9eyFzZWxlY3RlZFNtYXJ0SXRlbX1cbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICA8L1VpRW50aXR5PlxuICApXG59XG5cbi8vIE1haW4gQ29tcG9uZW50XG5leHBvcnQgZnVuY3Rpb24gU21hcnRJdGVtc0NvbnRyb2woe1xuICBlbmdpbmUsXG4gIHN0YXRlLFxufToge1xuICBlbmdpbmU6IElFbmdpbmVcbiAgc3RhdGU6IFN0YXRlXG59KSB7XG4gIGNvbnN0IHNtYXJ0SXRlbXMgPSBnZXRTbWFydEl0ZW1zKGVuZ2luZSlcbiAgY29uc3QgYWN0aW9ucyA9XG4gICAgc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc2VsZWN0ZWRTbWFydEl0ZW0gIT09IHVuZGVmaW5lZFxuICAgICAgPyBnZXRTbWFydEl0ZW1BY3Rpb25zKFxuICAgICAgICAgIGVuZ2luZSxcbiAgICAgICAgICBzbWFydEl0ZW1zW3N0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNlbGVjdGVkU21hcnRJdGVtXSxcbiAgICAgICAgKVxuICAgICAgOiBbXVxuXG4gIGNvbnN0IHNlbGVjdGVkQWN0aW9uSW5kZXggPVxuICAgIHN0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNlbGVjdGVkU21hcnRJdGVtICE9PSB1bmRlZmluZWRcbiAgICAgID8gYWN0aW9ucy5maW5kSW5kZXgoKGFjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkU21hcnRJdGVtID1cbiAgICAgICAgICAgIHNtYXJ0SXRlbXNbc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc2VsZWN0ZWRTbWFydEl0ZW0hXVxuICAgICAgICAgIGNvbnN0IHN0YXRlU2VsZWN0ZWRBY3Rpb24gPSBzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zbWFydEl0ZW1zLmdldChcbiAgICAgICAgICAgIHNlbGVjdGVkU21hcnRJdGVtLmVudGl0eSBhcyBFbnRpdHksXG4gICAgICAgICAgKT8uc2VsZWN0ZWRBY3Rpb25cblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBhY3Rpb24ubmFtZSA9PT1cbiAgICAgICAgICAgIChzdGF0ZVNlbGVjdGVkQWN0aW9uID8/IHNlbGVjdGVkU21hcnRJdGVtLmRlZmF1bHRBY3Rpb24pXG4gICAgICAgICAgKVxuICAgICAgICB9KVxuICAgICAgOiB1bmRlZmluZWRcblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eVxuICAgICAga2V5PVwiU21hcnRJdGVtc0NvbnRyb2xcIlxuICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8SGVhZGVyIGVuZ2luZT17ZW5naW5lfSAvPlxuXG4gICAgICA8U21hcnRJdGVtU2VsZWN0b3JcbiAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgIHNtYXJ0SXRlbXM9e3NtYXJ0SXRlbXN9XG4gICAgICAgIHNlbGVjdGVkSW5kZXg9e3N0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNlbGVjdGVkU21hcnRJdGVtfVxuICAgICAgICBvblNlbGVjdD17KGlkeCkgPT4ge1xuICAgICAgICAgIGhhbmRsZVNlbGVjdFNtYXJ0SXRlbShzdGF0ZSwgc21hcnRJdGVtcywgaWR4KVxuICAgICAgICB9fVxuICAgICAgLz5cblxuICAgICAgPEFjdGlvblNlbGVjdG9yXG4gICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICBhY3Rpb25zPXthY3Rpb25zfVxuICAgICAgICBzZWxlY3RlZEluZGV4PXtzZWxlY3RlZEFjdGlvbkluZGV4fVxuICAgICAgICBkaXNhYmxlZD17c3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc2VsZWN0ZWRTbWFydEl0ZW0gPT09IHVuZGVmaW5lZH1cbiAgICAgICAgb25DaGFuZ2U9eyhpZHgpID0+IHtcbiAgICAgICAgICBpZiAoc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc2VsZWN0ZWRTbWFydEl0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaGFuZGxlU2VsZWN0QWN0aW9uKFxuICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgc21hcnRJdGVtc1tzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zZWxlY3RlZFNtYXJ0SXRlbV0sXG4gICAgICAgICAgICAgIGFjdGlvbnNbaWR4XSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAvPlxuXG4gICAgICA8QWN0aW9uQnV0dG9uc1xuICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICBzbWFydEl0ZW1zPXtzbWFydEl0ZW1zfVxuICAgICAgICBhY3Rpb25zPXthY3Rpb25zfVxuICAgICAgICBzZWxlY3RlZEFjdGlvbj17XG4gICAgICAgICAgc2VsZWN0ZWRBY3Rpb25JbmRleCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGFjdGlvbnNbc2VsZWN0ZWRBY3Rpb25JbmRleF1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC9VaUVudGl0eT5cbiAgKVxufVxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU21hcnRJdGVtc0NvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9TbWFydEl0ZW1zQ29udHJvbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdEMsT0FBTyxFQUdMLGVBQWUsRUFDZixhQUFhLEVBQ2IsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUN4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFekMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxHQUFHLENBQUE7QUFHakMsTUFBTSxLQUFLLEdBQUc7SUFDWixrQkFBa0IsRUFBRSxHQUFHLFdBQVcsb0RBQW9EO0NBQzlFLENBQUE7QUFFVixTQUFTLG1CQUFtQixDQUMxQixNQUFlLEVBQ2YsU0FBd0U7SUFFeEUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN6QyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBZ0IsQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBRXJFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJ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QUFBO2dCQUMvQyxDQUFDLEdBQ0Q7WUFFRix1QkFBQyxjQUFjLElBQ2IsTUFBTSxFQUFFLE1BQU0sRUFDZCxPQUFPLEVBQUUsT0FBTyxFQUNoQixhQUFhLEVBQUUsbUJBQW1CLEVBQ2xDLFFBQVEsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEtBQUssU0FBUyxFQUNqRSxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDaEIsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEtBQUssU0FBUyxFQUFFLENBQUM7d0JBQzVELGtCQUFrQixDQUNoQixLQUFLLEVBQ0wsVUFBVSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUNyRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQ2IsQ0FBQTtvQkFDSCxDQUFDO2dCQUNILENBQUMsR0FDRDtZQUVGLHVCQUFDLGFBQWEsSUFDWixNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxLQUFLLEVBQ1osVUFBVSxFQUFFLFVBQVUsRUFDdEIsT0FBTyxFQUFFLE9BQU8sRUFDaEIsY0FBYyxFQUNaLG1CQUFtQixLQUFLLFNBQVM7b0JBQy9CLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUM7b0JBQzlCLENBQUMsQ0FBQyxTQUFTLEdBRWYsQ0FDTyxDQUNOLENBQ1IsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIElFbmdpbmUgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCBSZWFjdEVjcywgeyBEcm9wZG93biwgTGFiZWwsIFVpRW50aXR5IH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnXG5pbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBBZG1pblRvb2xzLFxuICBnZXRBY3Rpb25FdmVudHMsXG4gIGdldENvbXBvbmVudHMsXG4gIGdldFBheWxvYWQsXG59IGZyb20gJy4uL2RlZmluaXRpb25zJ1xuaW1wb3J0IHsgZ2V0RXhwbG9yZXJDb21wb25lbnRzIH0gZnJvbSAnLi4vY29tcG9uZW50cydcbmltcG9ydCB7IGdldFNjYWxlVUlGYWN0b3IgfSBmcm9tICcuLi91aSdcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJ1xuaW1wb3J0IHsgQ09OVEVOVF9VUkwgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IEhlYWRlciB9IGZyb20gJy4vSGVhZGVyJ1xuaW1wb3J0IHsgQ2FyZCB9IGZyb20gJy4vQ2FyZCdcbmltcG9ydCB7IGdldFNtYXJ0SXRlbXMgfSBmcm9tICcuJ1xuXG4vLyBDb25zdGFudHNcbmNvbnN0IElDT05TID0ge1xuICBTTUFSVF9JVEVNX0NPTlRST0w6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9zbWFydC1pdGVtLWNvbnRyb2wucG5nYCxcbn0gYXMgY29uc3RcblxuZnVuY3Rpb24gZ2V0U21hcnRJdGVtQWN0aW9ucyhcbiAgZW5naW5lOiBJRW5naW5lLFxuICBzbWFydEl0ZW06IE5vbk51bGxhYmxlPEFkbWluVG9vbHNbJ3NtYXJ0SXRlbXNDb250cm9sJ11bJ3NtYXJ0SXRlbXMnXT5bMF0sXG4pIHtcbiAgY29uc3QgeyBBY3Rpb25zIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSlcbiAgaWYgKCFzbWFydEl0ZW0gfHwgIUFjdGlvbnMuaGFzKHNtYXJ0SXRlbS5lbnRpdHkgYXMgRW50aXR5KSkgcmV0dXJuIFtdXG5cbiAgY29uc3QgYWN0aW9ucyA9IEFycmF5LmZyb20oQWN0aW9ucy5nZXQoc21hcnRJdGVtLmVudGl0eSBhcyBFbnRpdHkpLnZhbHVlKVxuICByZXR1cm4gYWN0aW9uc1xufVxuXG4vLyBFdmVudCBIYW5kbGVyc1xuZnVuY3Rpb24gaGFuZGxlRXhlY3V0ZUFjdGlvbihcbiAgc21hcnRJdGVtOiBOb25OdWxsYWJsZTxBZG1pblRvb2xzWydzbWFydEl0ZW1zQ29udHJvbCddWydzbWFydEl0ZW1zJ10+WzBdLFxuICBhY3Rpb246IEFjdGlvbixcbikge1xuICBjb25zdCBhY3Rpb25FdmVudHMgPSBnZXRBY3Rpb25FdmVudHMoc21hcnRJdGVtLmVudGl0eSBhcyBFbnRpdHkpXG4gIGFjdGlvbkV2ZW50cy5lbWl0KGFjdGlvbi5uYW1lLCBnZXRQYXlsb2FkKGFjdGlvbikpXG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNlbGVjdFNtYXJ0SXRlbShcbiAgc3RhdGU6IFN0YXRlLFxuICBzbWFydEl0ZW1zOiBOb25OdWxsYWJsZTxBZG1pblRvb2xzWydzbWFydEl0ZW1zQ29udHJvbCddWydzbWFydEl0ZW1zJ10+LFxuICBpZHg6IG51bWJlcixcbikge1xuICBzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zZWxlY3RlZFNtYXJ0SXRlbSA9IGlkeFxuICBjb25zdCBzbWFydEl0ZW0gPSBzbWFydEl0ZW1zW2lkeF1cblxuICBpZiAoIXN0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNtYXJ0SXRlbXMuaGFzKHNtYXJ0SXRlbS5lbnRpdHkgYXMgRW50aXR5KSkge1xuICAgIGNvbnN0IHN0YXRlU21hcnRJdGVtcyA9IG5ldyBNYXAoc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc21hcnRJdGVtcylcbiAgICBzdGF0ZVNtYXJ0SXRlbXMuc2V0KHNtYXJ0SXRlbS5lbnRpdHkgYXMgRW50aXR5LCB7XG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgc2VsZWN0ZWRBY3Rpb246IHNtYXJ0SXRlbS5kZWZhdWx0QWN0aW9uLFxuICAgIH0pXG4gICAgc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wgPSB7XG4gICAgICAuLi5zdGF0ZS5zbWFydEl0ZW1zQ29udHJvbCxcbiAgICAgIHNtYXJ0SXRlbXM6IG5ldyBNYXAoc3RhdGVTbWFydEl0ZW1zKSxcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlU2VsZWN0QWN0aW9uKFxuICBzdGF0ZTogU3RhdGUsXG4gIHNtYXJ0SXRlbTogTm9uTnVsbGFibGU8QWRtaW5Ub29sc1snc21hcnRJdGVtc0NvbnRyb2wnXVsnc21hcnRJdGVtcyddPlswXSxcbiAgYWN0aW9uOiBBY3Rpb24sXG4pIHtcbiAgY29uc3Qgc3RhdGVTbWFydEl0ZW1zID0gbmV3IE1hcChzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zbWFydEl0ZW1zKVxuICBzdGF0ZVNtYXJ0SXRlbXMuc2V0KHNtYXJ0SXRlbS5lbnRpdHkgYXMgRW50aXR5LCB7XG4gICAgLi4uc3RhdGVTbWFydEl0ZW1zLmdldChzbWFydEl0ZW0uZW50aXR5IGFzIEVudGl0eSkhLFxuICAgIHNlbGVjdGVkQWN0aW9uOiBhY3Rpb24ubmFtZSxcbiAgfSlcblxuICBzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbCA9IHtcbiAgICAuLi5zdGF0ZS5zbWFydEl0ZW1zQ29udHJvbCxcbiAgICBzbWFydEl0ZW1zOiBuZXcgTWFwKHN0YXRlU21hcnRJdGVtcyksXG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlSGlkZVNob3dFbnRpdHkoXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgc3RhdGU6IFN0YXRlLFxuICBzbWFydEl0ZW1zOiBOb25OdWxsYWJsZTxBZG1pblRvb2xzWydzbWFydEl0ZW1zQ29udHJvbCddWydzbWFydEl0ZW1zJ10+LFxuKSB7XG4gIGNvbnN0IHsgVmlzaWJpbGl0eUNvbXBvbmVudCB9ID0gZ2V0RXhwbG9yZXJDb21wb25lbnRzKGVuZ2luZSlcblxuICBjb25zdCBzbWFydEl0ZW1FbnRpdHkgPSBzbWFydEl0ZW1zW3N0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNlbGVjdGVkU21hcnRJdGVtIV1cbiAgICAuZW50aXR5IGFzIEVudGl0eVxuICBjb25zdCBzbWFydEl0ZW0gPSBzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zbWFydEl0ZW1zLmdldChzbWFydEl0ZW1FbnRpdHkpXG5cbiAgY29uc3QgdG9nZ2xlVmlzaWJpbGl0eSA9ICFzbWFydEl0ZW0hLnZpc2libGVcbiAgc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc21hcnRJdGVtcy5nZXQoc21hcnRJdGVtRW50aXR5KSEudmlzaWJsZSA9XG4gICAgdG9nZ2xlVmlzaWJpbGl0eVxuXG4gIGNvbnN0IHZpc2liaWxpdHkgPSBWaXNpYmlsaXR5Q29tcG9uZW50LmdldE9yQ3JlYXRlTXV0YWJsZShzbWFydEl0ZW1FbnRpdHkpXG4gIHZpc2liaWxpdHkudmlzaWJsZSA9IHRvZ2dsZVZpc2liaWxpdHlcbn1cblxuXG5mdW5jdGlvbiBTbWFydEl0ZW1TZWxlY3Rvcih7XG4gIGVuZ2luZSxcbiAgc21hcnRJdGVtcyxcbiAgc2VsZWN0ZWRJbmRleCxcbiAgb25TZWxlY3QsXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZVxuICBzbWFydEl0ZW1zOiBOb25OdWxsYWJsZTxBZG1pblRvb2xzWydzbWFydEl0ZW1zQ29udHJvbCddWydzbWFydEl0ZW1zJ10+XG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZFxuICBvblNlbGVjdDogKGlkeDogbnVtYmVyKSA9PiB2b2lkXG59KSB7XG4gIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVVSUZhY3RvcihlbmdpbmUpXG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIGtleT1cIlNtYXJ0SXRlbXNDb250cm9sRHJvcGRvd25XcmFwcGVyXCJcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICBtYXJnaW46IHsgYm90dG9tOiAzMiAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIjxiPlNlbGVjdGVkIFNtYXJ0IEl0ZW08L2I+XCJcbiAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBtYXJnaW46IHsgYm90dG9tOiAxNiAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgPERyb3Bkb3duXG4gICAgICAgIGtleT1cIlNtYXJ0SXRlbXNDb250cm9sRHJvcGRvd25TZWxlY3RvclwiXG4gICAgICAgIGFjY2VwdEVtcHR5XG4gICAgICAgIGVtcHR5TGFiZWw9XCJTZWxlY3QgU21hcnQgSXRlbVwiXG4gICAgICAgIG9wdGlvbnM9e3NtYXJ0SXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmN1c3RvbU5hbWUpfVxuICAgICAgICBzZWxlY3RlZEluZGV4PXtzZWxlY3RlZEluZGV4ID8/IC0xfVxuICAgICAgICBvbkNoYW5nZT17b25TZWxlY3R9XG4gICAgICAgIHRleHRBbGlnbj1cIm1pZGRsZS1sZWZ0XCJcbiAgICAgICAgZm9udFNpemU9ezE0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgaGVpZ2h0OiA0MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH19XG4gICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogQ29sb3I0LldoaXRlKCkgfX1cbiAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgLz5cbiAgICA8L1VpRW50aXR5PlxuICApXG59XG5cbmZ1bmN0aW9uIEFjdGlvblNlbGVjdG9yKHtcbiAgZW5naW5lLFxuICBhY3Rpb25zLFxuICBzZWxlY3RlZEluZGV4LFxuICBkaXNhYmxlZCxcbiAgb25DaGFuZ2UsXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZVxuICBhY3Rpb25zOiBBY3Rpb25bXVxuICBzZWxlY3RlZEluZGV4OiBudW1iZXIgfCB1bmRlZmluZWRcbiAgZGlzYWJsZWQ6IGJvb2xlYW5cbiAgb25DaGFuZ2U6IChpZHg6IG51bWJlcikgPT4gdm9pZFxufSkge1xuICBjb25zdCBzY2FsZUZhY3RvciA9IGdldFNjYWxlVUlGYWN0b3IoZW5naW5lKVxuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5XG4gICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMzIgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8TGFiZWxcbiAgICAgICAgdmFsdWU9XCI8Yj5BY3Rpb25zPC9iPlwiXG4gICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICAgIHthY3Rpb25zLmxlbmd0aCA/IDxEcm9wZG93blxuICAgICAgICBhY2NlcHRFbXB0eVxuICAgICAgICBlbXB0eUxhYmVsPVwiU2VsZWN0IEFjdGlvblwiXG4gICAgICAgIG9wdGlvbnM9e2FjdGlvbnMubWFwKChhY3Rpb24pID0+IGFjdGlvbi5uYW1lKX1cbiAgICAgICAgc2VsZWN0ZWRJbmRleD17c2VsZWN0ZWRJbmRleH1cbiAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgIHRleHRBbGlnbj1cIm1pZGRsZS1sZWZ0XCJcbiAgICAgICAgZm9udFNpemU9ezE0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgaGVpZ2h0OiA0MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH19XG4gICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgIGNvbG9yOiBkaXNhYmxlZCA/IENvbG9yNC5HcmF5KCkgOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgfX1cbiAgICAgICAgY29sb3I9e0NvbG9yNC5CbGFjaygpfVxuICAgICAgLz4gOiA8VWlFbnRpdHkgLz59XG4gICAgPC9VaUVudGl0eT5cbiAgKVxufVxuXG5mdW5jdGlvbiBBY3Rpb25CdXR0b25zKHtcbiAgZW5naW5lLFxuICBzdGF0ZSxcbiAgc21hcnRJdGVtcyxcbiAgYWN0aW9ucyxcbiAgc2VsZWN0ZWRBY3Rpb24sXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZVxuICBzdGF0ZTogU3RhdGVcbiAgc21hcnRJdGVtczogTm9uTnVsbGFibGU8QWRtaW5Ub29sc1snc21hcnRJdGVtc0NvbnRyb2wnXVsnc21hcnRJdGVtcyddPlxuICBhY3Rpb25zOiBBY3Rpb25bXVxuICBzZWxlY3RlZEFjdGlvbjogQWN0aW9uIHwgdW5kZWZpbmVkXG59KSB7XG4gIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVVSUZhY3RvcihlbmdpbmUpXG5cbiAgY29uc3Qgc2VsZWN0ZWRTbWFydEl0ZW0gPVxuICAgIHN0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNlbGVjdGVkU21hcnRJdGVtICE9PSB1bmRlZmluZWRcbiAgICAgID8gc21hcnRJdGVtc1tzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zZWxlY3RlZFNtYXJ0SXRlbV1cbiAgICAgIDogdW5kZWZpbmVkXG5cbiAgY29uc3QgaXNWaXNpYmxlID1cbiAgICBzZWxlY3RlZFNtYXJ0SXRlbSAmJlxuICAgIHN0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNtYXJ0SXRlbXMuZ2V0KHNlbGVjdGVkU21hcnRJdGVtLmVudGl0eSBhcyBFbnRpdHkpXG4gICAgICA/LnZpc2libGVcblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eVxuICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgaWQ9XCJzbWFydF9pdGVtc19jb250cm9sX3Jlc3RhcnRcIlxuICAgICAgICB2YWx1ZT1cIjxiPlBsYXkgQWN0aW9uPC9iPlwiXG4gICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgIGhlaWdodDogNDAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgfX1cbiAgICAgICAgbGFiZWxUcmFuc2Zvcm09e3tcbiAgICAgICAgICBtYXJnaW46IHsgbGVmdDogMTAgKiBzY2FsZUZhY3RvciwgcmlnaHQ6IDEwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgfX1cbiAgICAgICAgZGlzYWJsZWQ9eyFzZWxlY3RlZFNtYXJ0SXRlbSB8fCAhc2VsZWN0ZWRBY3Rpb259XG4gICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgaWYgKHNlbGVjdGVkU21hcnRJdGVtICYmIHNlbGVjdGVkQWN0aW9uKSB7XG4gICAgICAgICAgICBoYW5kbGVFeGVjdXRlQWN0aW9uKHNlbGVjdGVkU21hcnRJdGVtLCBzZWxlY3RlZEFjdGlvbilcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBpZD1cInNtYXJ0X2l0ZW1zX2NvbnRyb2xfaGlkZV9zaG93XCJcbiAgICAgICAgdmFsdWU9e2A8Yj4ke2lzVmlzaWJsZSA/ICdIaWRlJyA6ICdTaG93J30gRW50aXR5PC9iPmB9XG4gICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgb25Nb3VzZURvd249eygpID0+IGhhbmRsZUhpZGVTaG93RW50aXR5KGVuZ2luZSwgc3RhdGUsIHNtYXJ0SXRlbXMpfVxuICAgICAgICBkaXNhYmxlZD17IXNlbGVjdGVkU21hcnRJdGVtfVxuICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9IH19XG4gICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7XG4gICAgICAgICAgbWFyZ2luOiB7IGxlZnQ6IDEwICogc2NhbGVGYWN0b3IsIHJpZ2h0OiAxMCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgIDwvVWlFbnRpdHk+XG4gIClcbn1cblxuLy8gTWFpbiBDb21wb25lbnRcbmV4cG9ydCBmdW5jdGlvbiBTbWFydEl0ZW1zQ29udHJvbCh7XG4gIGVuZ2luZSxcbiAgc3RhdGUsXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZVxuICBzdGF0ZTogU3RhdGVcbn0pIHtcbiAgY29uc3Qgc21hcnRJdGVtcyA9IGdldFNtYXJ0SXRlbXMoZW5naW5lKVxuICBjb25zdCBhY3Rpb25zID1cbiAgICBzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zZWxlY3RlZFNtYXJ0SXRlbSAhPT0gdW5kZWZpbmVkXG4gICAgICA/IGdldFNtYXJ0SXRlbUFjdGlvbnMoXG4gICAgICAgICAgZW5naW5lLFxuICAgICAgICAgIHNtYXJ0SXRlbXNbc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc2VsZWN0ZWRTbWFydEl0ZW1dLFxuICAgICAgICApXG4gICAgICA6IFtdXG5cbiAgY29uc3Qgc2VsZWN0ZWRBY3Rpb25JbmRleCA9XG4gICAgc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc2VsZWN0ZWRTbWFydEl0ZW0gIT09IHVuZGVmaW5lZFxuICAgICAgPyBhY3Rpb25zLmZpbmRJbmRleCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRTbWFydEl0ZW0gPVxuICAgICAgICAgICAgc21hcnRJdGVtc1tzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zZWxlY3RlZFNtYXJ0SXRlbSFdXG4gICAgICAgICAgY29uc3Qgc3RhdGVTZWxlY3RlZEFjdGlvbiA9IHN0YXRlLnNtYXJ0SXRlbXNDb250cm9sLnNtYXJ0SXRlbXMuZ2V0KFxuICAgICAgICAgICAgc2VsZWN0ZWRTbWFydEl0ZW0uZW50aXR5IGFzIEVudGl0eSxcbiAgICAgICAgICApPy5zZWxlY3RlZEFjdGlvblxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGFjdGlvbi5uYW1lID09PVxuICAgICAgICAgICAgKHN0YXRlU2VsZWN0ZWRBY3Rpb24gPz8gc2VsZWN0ZWRTbWFydEl0ZW0uZGVmYXVsdEFjdGlvbilcbiAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgICA6IHVuZGVmaW5lZFxuICBjb25zdCBzY2FsZUZhY3RvciA9IGdldFNjYWxlVUlGYWN0b3IoZW5naW5lKVxuXG4gIHJldHVybiAoXG4gICAgPENhcmQgc2NhbGVGYWN0b3I9e3NjYWxlRmFjdG9yfT5cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICBrZXk9XCJTbWFydEl0ZW1zQ29udHJvbFwiXG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPEhlYWRlclxuICAgICAgICAgIGljb25TcmM9e0lDT05TLlNNQVJUX0lURU1fQ09OVFJPTH1cbiAgICAgICAgICB0aXRsZT1cIlNtYXJ0IEl0ZW0gQWN0aW9uc1wiXG4gICAgICAgICAgc2NhbGVGYWN0b3I9e3NjYWxlRmFjdG9yfVxuICAgICAgICAvPlxuXG4gICAgICAgIDxTbWFydEl0ZW1TZWxlY3RvclxuICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgIHNtYXJ0SXRlbXM9e3NtYXJ0SXRlbXN9XG4gICAgICAgICAgc2VsZWN0ZWRJbmRleD17c3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc2VsZWN0ZWRTbWFydEl0ZW19XG4gICAgICAgICAgb25TZWxlY3Q9eyhpZHgpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVNlbGVjdFNtYXJ0SXRlbShzdGF0ZSwgc21hcnRJdGVtcywgaWR4KVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG5cbiAgICAgICAgPEFjdGlvblNlbGVjdG9yXG4gICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgYWN0aW9ucz17YWN0aW9uc31cbiAgICAgICAgICBzZWxlY3RlZEluZGV4PXtzZWxlY3RlZEFjdGlvbkluZGV4fVxuICAgICAgICAgIGRpc2FibGVkPXtzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zZWxlY3RlZFNtYXJ0SXRlbSA9PT0gdW5kZWZpbmVkfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoaWR4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuc21hcnRJdGVtc0NvbnRyb2wuc2VsZWN0ZWRTbWFydEl0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RBY3Rpb24oXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgc21hcnRJdGVtc1tzdGF0ZS5zbWFydEl0ZW1zQ29udHJvbC5zZWxlY3RlZFNtYXJ0SXRlbV0sXG4gICAgICAgICAgICAgICAgYWN0aW9uc1tpZHhdLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cblxuICAgICAgICA8QWN0aW9uQnV0dG9uc1xuICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgIHN0YXRlPXtzdGF0ZX1cbiAgICAgICAgICBzbWFydEl0ZW1zPXtzbWFydEl0ZW1zfVxuICAgICAgICAgIGFjdGlvbnM9e2FjdGlvbnN9XG4gICAgICAgICAgc2VsZWN0ZWRBY3Rpb249e1xuICAgICAgICAgICAgc2VsZWN0ZWRBY3Rpb25JbmRleCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gYWN0aW9uc1tzZWxlY3RlZEFjdGlvbkluZGV4XVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9DYXJkPlxuICApXG59XG4iXX0=
@@ -4,6 +4,8 @@ import { getComponents } from '../definitions';
4
4
  import { getScaleUIFactor } from '../ui';
5
5
  import { Button } from './Button';
6
6
  import { CONTENT_URL } from './constants';
7
+ import { Header } from './Header';
8
+ import { Card } from './Card';
7
9
  const ICONS = {
8
10
  TEXT_ANNOUNCEMENT_CONTROL: `${CONTENT_URL}/admin_toolkit/assets/icons/text-announcement-control.png`,
9
11
  CHECK: `${CONTENT_URL}/admin_toolkit/assets/icons/text-announcement-check.png`,
@@ -13,68 +15,57 @@ const ICONS = {
13
15
  let ANNOUNCEMENT_STATE;
14
16
  export function TextAnnouncementsControl({ engine, state, player, }) {
15
17
  const scaleFactor = getScaleUIFactor(engine);
16
- return (ReactEcs.createElement(UiEntity, { uiTransform: {
17
- width: '100%',
18
- height: '100%',
19
- flexDirection: 'column',
20
- } },
18
+ return (ReactEcs.createElement(Card, { scaleFactor: scaleFactor },
21
19
  ReactEcs.createElement(UiEntity, { uiTransform: {
22
- flexDirection: 'row',
23
- display: 'flex',
24
- alignItems: 'center',
25
- margin: { bottom: 10 * scaleFactor },
26
- height: 30 * scaleFactor,
20
+ width: '100%',
21
+ height: '100%',
22
+ flexDirection: 'column',
27
23
  } },
28
- ReactEcs.createElement(UiEntity, { uiTransform: { width: 30 * scaleFactor, height: 30 * scaleFactor }, uiBackground: {
29
- color: Color4.White(),
30
- textureMode: 'stretch',
31
- texture: { src: ICONS.TEXT_ANNOUNCEMENT_CONTROL },
32
- } }),
33
- ReactEcs.createElement(Label, { value: "<b>Text Announcements</b>", uiTransform: { margin: { bottom: 8, left: 20 } }, fontSize: 24 * scaleFactor, color: Color4.White() })),
34
- ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column' } },
35
- ReactEcs.createElement(Label, { value: "<b>Message window</b>", fontSize: 16 * scaleFactor, color: Color4.White(), uiTransform: { margin: { bottom: 16 * scaleFactor } } }),
36
- ReactEcs.createElement(Input, { onSubmit: (value) => {
37
- handleSendTextAnnouncement(engine, state, value, player);
38
- }, onChange: (value) => {
39
- state.textAnnouncementControl.text = value;
40
- }, fontSize: 16 * scaleFactor, placeholder: 'Write your announcement here', placeholderColor: Color4.create(160 / 255, 155 / 255, 168 / 255, 1), color: Color4.Black(), uiBackground: { color: Color4.White() }, uiTransform: {
41
- width: '100%',
42
- height: 80 * scaleFactor,
43
- margin: { bottom: 16 * scaleFactor },
44
- } }),
45
- ReactEcs.createElement(UiEntity, { uiTransform: {
46
- width: '100%',
47
- height: 40 * scaleFactor,
48
- flexDirection: 'row',
49
- margin: {
50
- bottom: 10 * scaleFactor,
51
- top: 0,
52
- right: 0,
53
- left: 0,
54
- },
55
- } },
56
- ReactEcs.createElement(Label, { value: `${state.textAnnouncementControl.text?.length ?? 0} / 90`, fontSize: 14 * scaleFactor, color: Color4.create(187 / 255, 187 / 255, 187 / 255, 1), uiTransform: { flexGrow: 1 }, textAlign: "top-left" }),
57
- ReactEcs.createElement(Button, { id: "text_announcement_control_clear", value: "<b>Clear Announcements</b>", variant: "text", fontSize: 16 * scaleFactor, color: Color4.White(), uiTransform: {
24
+ ReactEcs.createElement(Header, { iconSrc: ICONS.TEXT_ANNOUNCEMENT_CONTROL, scaleFactor: scaleFactor, title: "Text Announcements" }),
25
+ ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column' } },
26
+ ReactEcs.createElement(Label, { value: "<b>Message window</b>", fontSize: 16 * scaleFactor, color: Color4.White(), uiTransform: { margin: { bottom: 16 * scaleFactor } } }),
27
+ ReactEcs.createElement(Input, { onSubmit: (value) => {
28
+ handleSendTextAnnouncement(engine, state, value, player);
29
+ }, onChange: (value) => {
30
+ state.textAnnouncementControl.text = value;
31
+ }, fontSize: 16 * scaleFactor, placeholder: 'Write your announcement here', placeholderColor: Color4.create(160 / 255, 155 / 255, 168 / 255, 1), color: Color4.Black(), uiBackground: { color: Color4.White() }, uiTransform: {
32
+ width: '100%',
33
+ height: 80 * scaleFactor,
34
+ margin: { bottom: 16 * scaleFactor },
35
+ } }),
36
+ ReactEcs.createElement(UiEntity, { uiTransform: {
37
+ width: '100%',
58
38
  height: 40 * scaleFactor,
59
- margin: { right: 8 * scaleFactor },
60
- }, onMouseDown: () => {
61
- handleClearTextAnnouncement(engine, state);
39
+ flexDirection: 'row',
40
+ margin: {
41
+ bottom: 10 * scaleFactor,
42
+ top: 0,
43
+ right: 0,
44
+ left: 0,
45
+ },
46
+ } },
47
+ ReactEcs.createElement(Label, { value: `${state.textAnnouncementControl.text?.length ?? 0} / 90`, fontSize: 14 * scaleFactor, color: Color4.create(187 / 255, 187 / 255, 187 / 255, 1), uiTransform: { flexGrow: 1 }, textAlign: "top-left" }),
48
+ ReactEcs.createElement(Button, { id: "text_announcement_control_clear", value: "<b>Clear Announcements</b>", variant: "text", fontSize: 16 * scaleFactor, color: Color4.White(), uiTransform: {
49
+ height: 40 * scaleFactor,
50
+ margin: { right: 8 * scaleFactor },
51
+ }, onMouseDown: () => {
52
+ handleClearTextAnnouncement(engine, state);
53
+ } }),
54
+ ReactEcs.createElement(Button, { id: "text_announcement_control_share", value: "<b>Share</b>", variant: "primary", fontSize: 16 * scaleFactor, labelTransform: { margin: { left: 20 * scaleFactor, right: 20 * scaleFactor } }, uiTransform: { height: 40 * scaleFactor }, onMouseDown: () => {
55
+ handleSendTextAnnouncement(engine, state, state.textAnnouncementControl.text, player);
56
+ } }))),
57
+ ReactEcs.createElement(UiEntity, { uiTransform: { minHeight: 30 * scaleFactor } },
58
+ ReactEcs.createElement(UiEntity, { uiTransform: {
59
+ display: ANNOUNCEMENT_STATE !== undefined ? 'flex' : 'none',
60
+ width: 30 * scaleFactor,
61
+ height: 30 * scaleFactor,
62
+ }, uiBackground: {
63
+ texture: { src: ICONS.CHECK },
64
+ textureMode: 'stretch',
62
65
  } }),
63
- ReactEcs.createElement(Button, { id: "text_announcement_control_share", value: "<b>Share</b>", variant: "primary", fontSize: 16 * scaleFactor, labelTransform: { margin: '0 20' }, uiTransform: { height: 40 * scaleFactor }, onMouseDown: () => {
64
- handleSendTextAnnouncement(engine, state, state.textAnnouncementControl.text, player);
65
- } }))),
66
- ReactEcs.createElement(UiEntity, { uiTransform: { minHeight: 30 * scaleFactor } },
67
- ReactEcs.createElement(UiEntity, { uiTransform: {
68
- display: ANNOUNCEMENT_STATE !== undefined ? 'flex' : 'none',
69
- width: 30 * scaleFactor,
70
- height: 30 * scaleFactor,
71
- }, uiBackground: {
72
- texture: { src: ICONS.CHECK },
73
- textureMode: 'stretch',
74
- } }),
75
- ReactEcs.createElement(Label, { uiTransform: {
76
- display: ANNOUNCEMENT_STATE !== undefined ? 'flex' : 'none',
77
- }, value: `Message ${ANNOUNCEMENT_STATE === 'sent' ? 'sent' : 'cleared'}!`, fontSize: 14 * scaleFactor, color: Color4.create(187 / 255, 187 / 255, 187 / 255, 1) }))));
66
+ ReactEcs.createElement(Label, { uiTransform: {
67
+ display: ANNOUNCEMENT_STATE !== undefined ? 'flex' : 'none',
68
+ }, value: `Message ${ANNOUNCEMENT_STATE === 'sent' ? 'sent' : 'cleared'}!`, fontSize: 14 * scaleFactor, color: Color4.create(187 / 255, 187 / 255, 187 / 255, 1) })))));
78
69
  }
79
70
  function handleClearTextAnnouncement(engine, state) {
80
71
  const { TextAnnouncements } = getComponents(engine);
@@ -104,4 +95,4 @@ function handleSendTextAnnouncement(engine, state, text, player) {
104
95
  ANNOUNCEMENT_STATE = 'sent';
105
96
  return;
106
97
  }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEFubm91bmNlbWVudHNDb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVGV4dEFubm91bmNlbWVudHNDb250cm9sLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRXhDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUd6QyxNQUFNLEtBQUssR0FBRztJQUNaLHlCQUF5QixFQUFFLEdBQUcsV0FBVywyREFBMkQ7SUFDcEcsS0FBSyxFQUFFLEdBQUcsV0FBVyx5REFBeUQ7SUFDOUUsMkJBQTJCLEVBQUUsR0FBRyxXQUFXLGdFQUFnRTtJQUMzRyxpQkFBaUIsRUFBRSxHQUFHLFdBQVcsZ0VBQWdFO0NBQ3pGLENBQUE7QUFFVixJQUFJLGtCQUFzQyxDQUFBO0FBRTFDLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxFQUN2QyxNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FLUDtJQUNDLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRTVDLE9BQU8sQ0FDTCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO1lBQ1gsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsTUFBTTtZQUNkLGFBQWEsRUFBRSxRQUFRO1NBQ3hCO1FBR0QsdUJBQUMsUUFBUSxJQUNQLFdBQVcsRUFBRTtnQkFDWCxhQUFhLEVBQUUsS0FBSztnQkFDcEIsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFO2dCQUNwQyxNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7YUFDekI7WUFFRCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUUsRUFDbEUsWUFBWSxFQUFFO29CQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFO29CQUNyQixXQUFXLEVBQUUsU0FBUztvQkFDdEIsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyx5QkFBeUIsRUFBRTtpQkFDbEQsR0FDRDtZQUNGLHVCQUFDLEtBQUssSUFDSixLQUFLLEVBQUMsMkJBQTJCLEVBQ2pDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQ2hELFFBQVEsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUMxQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUNyQixDQUNPO1FBQ1gsdUJBQUMsUUFBUSxJQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUU7WUFDaEQsdUJBQUMsS0FBSyxJQUNKLEtBQUssRUFBQyx1QkFBdUIsRUFDN0IsUUFBUSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQzFCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQ3JCLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFLEVBQUUsR0FDckQ7WUFFRix1QkFBQyxLQUFLLElBQ0osUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ2xCLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO2dCQUMxRCxDQUFDLEVBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ2xCLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFBO2dCQUM1QyxDQUFDLEVBQ0QsUUFBUSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQzFCLFdBQVcsRUFBRSw4QkFBOEIsRUFDM0MsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFDbkUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFDckIsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUN2QyxXQUFXLEVBQUU7b0JBQ1gsS0FBSyxFQUFFLE1BQU07b0JBQ2IsTUFBTSxFQUFFLEVBQUUsR0FBRyxXQUFXO29CQUN4QixNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFBRTtpQkFDckMsR0FDRDtZQUVGLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7b0JBQ1gsS0FBSyxFQUFFLE1BQU07b0JBQ2IsTUFBTSxFQUFFLEVBQUUsR0FBRyxXQUFXO29CQUN4QixhQUFhLEVBQUUsS0FBSztvQkFDcEIsTUFBTSxFQUFFO3dCQUNOLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVzt3QkFDeEIsR0FBRyxFQUFFLENBQUM7d0JBQ04sS0FBSyxFQUFFLENBQUM7d0JBQ1IsSUFBSSxFQUFFLENBQUM7cUJBQ1I7aUJBQ0Y7Z0JBRUQsdUJBQUMsS0FBSyxJQUNKLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUNoRSxRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQ3hELFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFDNUIsU0FBUyxFQUFDLFVBQVUsR0FDcEI7Z0JBQ0YsdUJBQUMsTUFBTSxJQUNMLEVBQUUsRUFBQyxpQ0FBaUMsRUFDcEMsS0FBSyxFQUFDLDRCQUE0QixFQUNsQyxPQUFPLEVBQUMsTUFBTSxFQUNkLFFBQVEsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUMxQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUNyQixXQUFXLEVBQUU7d0JBQ1gsTUFBTSxFQUFFLEVBQUUsR0FBRyxXQUFXO3dCQUN4QixNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRTtxQkFDbkMsRUFDRCxXQUFXLEVBQUUsR0FBRyxFQUFFO3dCQUNoQiwyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7b0JBQzVDLENBQUMsR0FDRDtnQkFDRix1QkFBQyxNQUFNLElBQ0wsRUFBRSxFQUFDLGlDQUFpQyxFQUNwQyxLQUFLLEVBQUMsY0FBYyxFQUNwQixPQUFPLEVBQUMsU0FBUyxFQUNqQixRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFDMUIsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUNsQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFBRSxFQUN6QyxXQUFXLEVBQUUsR0FBRyxFQUFFO3dCQUNoQiwwQkFBMEIsQ0FDeEIsTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxFQUNsQyxNQUFNLENBQ1AsQ0FBQTtvQkFDSCxDQUFDLEdBQ0QsQ0FDTyxDQUNGO1FBRVgsdUJBQUMsUUFBUSxJQUFDLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFO1lBQ3BELHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLGtCQUFrQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO29CQUMzRCxLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVc7b0JBQ3ZCLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVztpQkFDekIsRUFDRCxZQUFZLEVBQUU7b0JBQ1osT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUU7b0JBQzdCLFdBQVcsRUFBRSxTQUFTO2lCQUN2QixHQUNEO1lBQ0YsdUJBQUMsS0FBSyxJQUNKLFdBQVcsRUFBRTtvQkFDWCxPQUFPLEVBQUUsa0JBQWtCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU07aUJBQzVELEVBQ0QsS0FBSyxFQUFFLFdBQVcsa0JBQWtCLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUN2RSxRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQ3hELENBQ08sQ0FDRixDQUNaLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUywyQkFBMkIsQ0FBQyxNQUFlLEVBQUUsS0FBWTtJQUNoRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FDekQsS0FBSyxDQUFDLG9CQUFvQixDQUMzQixDQUFBO0lBQ0QsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JCLGdCQUFnQixDQUFDLElBQUksR0FBRyxFQUFFLENBQUE7UUFDMUIsZ0JBQWdCLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUN4QixnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFDRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQTtJQUNoRCxrQkFBa0IsR0FBRyxTQUFTLENBQUE7QUFDaEMsQ0FBQztBQUVELFNBQVMsMEJBQTBCLENBQ2pDLE1BQWUsRUFDZixLQUFZLEVBQ1osSUFBd0IsRUFDeEIsTUFBZ0M7SUFFaEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUV2RixJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLElBQUksQ0FBQTtRQUUzQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7UUFFMUIsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNoQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsR0FBRyxTQUFTLElBQUksTUFBTSxFQUFFLENBQUE7UUFDOUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFFRCxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUV2QyxrQkFBa0IsR0FBRyxNQUFNLENBQUE7SUFFM0IsT0FBTTtBQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgUmVhY3RFY3MsIHsgTGFiZWwsIFVpRW50aXR5LCBJbnB1dCB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJ1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCdcbmltcG9ydCB7IGdldENvbXBvbmVudHMgfSBmcm9tICcuLi9kZWZpbml0aW9ucydcbmltcG9ydCB7IGdldFNjYWxlVUlGYWN0b3IgfSBmcm9tICcuLi91aSdcbmltcG9ydCB7IEdldFBsYXllckRhdGFSZXMgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJ1xuaW1wb3J0IHsgQ09OVEVOVF9VUkwgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi90eXBlcydcblxuY29uc3QgSUNPTlMgPSB7XG4gIFRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0w6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy90ZXh0LWFubm91bmNlbWVudC1jb250cm9sLnBuZ2AsXG4gIENIRUNLOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdGV4dC1hbm5vdW5jZW1lbnQtY2hlY2sucG5nYCxcbiAgQlROX0NMT1NFX1RFWFRfQU5OT1VOQ0VNRU5UOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdGV4dC1hbm5vdW5jZW1lbnQtY2xvc2UtYnV0dG9uLnBuZ2AsXG4gIENIQVRfTUVTU0FHRV9JQ09OOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdGV4dC1hbm5vdW5jZW1lbnQtY2hhdC1tZXNzYWdlLnBuZ2AsXG59IGFzIGNvbnN0XG5cbmxldCBBTk5PVU5DRU1FTlRfU1RBVEU6ICdzZW50JyB8ICdjbGVhcmVkJ1xuXG5leHBvcnQgZnVuY3Rpb24gVGV4dEFubm91bmNlbWVudHNDb250cm9sKHtcbiAgZW5naW5lLFxuICBzdGF0ZSxcbiAgcGxheWVyLFxufToge1xuICBlbmdpbmU6IElFbmdpbmVcbiAgc3RhdGU6IFN0YXRlXG4gIHBsYXllcj86IEdldFBsYXllckRhdGFSZXMgfCBudWxsXG59KSB7XG4gIGNvbnN0IHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVVSUZhY3RvcihlbmdpbmUpXG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICBtYXJnaW46IHsgYm90dG9tOiAxMCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgaGVpZ2h0OiAzMCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICB1aVRyYW5zZm9ybT17eyB3aWR0aDogMzAgKiBzY2FsZUZhY3RvciwgaGVpZ2h0OiAzMCAqIHNjYWxlRmFjdG9yIH19XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgdGV4dHVyZTogeyBzcmM6IElDT05TLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0wgfSxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8TGFiZWxcbiAgICAgICAgICB2YWx1ZT1cIjxiPlRleHQgQW5ub3VuY2VtZW50czwvYj5cIlxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyBib3R0b206IDgsIGxlZnQ6IDIwIH0gfX1cbiAgICAgICAgICBmb250U2l6ZT17MjQgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgIC8+XG4gICAgICA8L1VpRW50aXR5PlxuICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICA8TGFiZWxcbiAgICAgICAgICB2YWx1ZT1cIjxiPk1lc3NhZ2Ugd2luZG93PC9iPlwiXG4gICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyBib3R0b206IDE2ICogc2NhbGVGYWN0b3IgfSB9fVxuICAgICAgICAvPlxuXG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIG9uU3VibWl0PXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVNlbmRUZXh0QW5ub3VuY2VtZW50KGVuZ2luZSwgc3RhdGUsIHZhbHVlLCBwbGF5ZXIpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0ID0gdmFsdWVcbiAgICAgICAgICB9fVxuICAgICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXsnV3JpdGUgeW91ciBhbm5vdW5jZW1lbnQgaGVyZSd9XG4gICAgICAgICAgcGxhY2Vob2xkZXJDb2xvcj17Q29sb3I0LmNyZWF0ZSgxNjAgLyAyNTUsIDE1NSAvIDI1NSwgMTY4IC8gMjU1LCAxKX1cbiAgICAgICAgICBjb2xvcj17Q29sb3I0LkJsYWNrKCl9XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuV2hpdGUoKSB9fVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgaGVpZ2h0OiA4MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBoZWlnaHQ6IDQwICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgIG1hcmdpbjoge1xuICAgICAgICAgICAgICBib3R0b206IDEwICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHZhbHVlPXtgJHtzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0Py5sZW5ndGggPz8gMH0gLyA5MGB9XG4gICAgICAgICAgICBmb250U2l6ZT17MTQgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuY3JlYXRlKDE4NyAvIDI1NSwgMTg3IC8gMjU1LCAxODcgLyAyNTUsIDEpfVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgZmxleEdyb3c6IDEgfX1cbiAgICAgICAgICAgIHRleHRBbGlnbj1cInRvcC1sZWZ0XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGlkPVwidGV4dF9hbm5vdW5jZW1lbnRfY29udHJvbF9jbGVhclwiXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPkNsZWFyIEFubm91bmNlbWVudHM8L2I+XCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGhhbmRsZUNsZWFyVGV4dEFubm91bmNlbWVudChlbmdpbmUsIHN0YXRlKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGlkPVwidGV4dF9hbm5vdW5jZW1lbnRfY29udHJvbF9zaGFyZVwiXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPlNoYXJlPC9iPlwiXG4gICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTYgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgIGxhYmVsVHJhbnNmb3JtPXt7IG1hcmdpbjogJzAgMjAnIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBoZWlnaHQ6IDQwICogc2NhbGVGYWN0b3IgfX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGhhbmRsZVNlbmRUZXh0QW5ub3VuY2VtZW50KFxuICAgICAgICAgICAgICAgIGVuZ2luZSxcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0LFxuICAgICAgICAgICAgICAgIHBsYXllcixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgPC9VaUVudGl0eT5cblxuICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IG1pbkhlaWdodDogMzAgKiBzY2FsZUZhY3RvciB9fT5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIGRpc3BsYXk6IEFOTk9VTkNFTUVOVF9TVEFURSAhPT0gdW5kZWZpbmVkID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgd2lkdGg6IDMwICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICBoZWlnaHQ6IDMwICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgIHRleHR1cmU6IHsgc3JjOiBJQ09OUy5DSEVDSyB9LFxuICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICA8TGFiZWxcbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgZGlzcGxheTogQU5OT1VOQ0VNRU5UX1NUQVRFICE9PSB1bmRlZmluZWQgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB2YWx1ZT17YE1lc3NhZ2UgJHtBTk5PVU5DRU1FTlRfU1RBVEUgPT09ICdzZW50JyA/ICdzZW50JyA6ICdjbGVhcmVkJ30hYH1cbiAgICAgICAgICBmb250U2l6ZT17MTQgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICBjb2xvcj17Q29sb3I0LmNyZWF0ZSgxODcgLyAyNTUsIDE4NyAvIDI1NSwgMTg3IC8gMjU1LCAxKX1cbiAgICAgICAgLz5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9VaUVudGl0eT5cbiAgKVxufVxuXG5mdW5jdGlvbiBoYW5kbGVDbGVhclRleHRBbm5vdW5jZW1lbnQoZW5naW5lOiBJRW5naW5lLCBzdGF0ZTogU3RhdGUpIHtcbiAgY29uc3QgeyBUZXh0QW5ub3VuY2VtZW50cyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpXG4gIGNvbnN0IHRleHRBbm5vdW5jZW1lbnQgPSBUZXh0QW5ub3VuY2VtZW50cy5nZXRNdXRhYmxlT3JOdWxsKFxuICAgIHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5LFxuICApXG4gIGlmICh0ZXh0QW5ub3VuY2VtZW50KSB7XG4gICAgdGV4dEFubm91bmNlbWVudC50ZXh0ID0gJydcbiAgICB0ZXh0QW5ub3VuY2VtZW50LmlkID0gJydcbiAgICB0ZXh0QW5ub3VuY2VtZW50LmF1dGhvciA9ICcnXG4gIH1cbiAgc3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wuYW5ub3VuY2VtZW50cyA9IFtdXG4gIEFOTk9VTkNFTUVOVF9TVEFURSA9ICdjbGVhcmVkJ1xufVxuXG5mdW5jdGlvbiBoYW5kbGVTZW5kVGV4dEFubm91bmNlbWVudChcbiAgZW5naW5lOiBJRW5naW5lLFxuICBzdGF0ZTogU3RhdGUsXG4gIHRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgcGxheWVyPzogR2V0UGxheWVyRGF0YVJlcyB8IG51bGwsXG4pIHtcbiAgaWYgKCF0ZXh0KSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCB7IFRleHRBbm5vdW5jZW1lbnRzIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSlcbiAgY29uc3QgdGV4dEFubm91bmNlbWVudCA9IFRleHRBbm5vdW5jZW1lbnRzLmdldE11dGFibGVPck51bGwoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpXG5cbiAgaWYgKHRleHRBbm5vdW5jZW1lbnQpIHtcbiAgICBjb25zdCBhdXRob3IgPSBwbGF5ZXI/Lm5hbWVcbiAgICAvLyBHZXQgY3VycmVudCB0aW1lc3RhbXAgYW5kIGVuc3VyZSB1bmlxdWVuZXNzXG4gICAgbGV0IHRpbWVzdGFtcCA9IERhdGUubm93KClcblxuICAgIHRleHRBbm5vdW5jZW1lbnQuYXV0aG9yID0gYXV0aG9yXG4gICAgdGV4dEFubm91bmNlbWVudC5pZCA9IGAke3RpbWVzdGFtcH0tJHthdXRob3J9YFxuICAgIHRleHRBbm5vdW5jZW1lbnQudGV4dCA9IHRleHQuc2xpY2UoMCwgOTApXG4gIH1cblxuICBzdGF0ZS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC50ZXh0ID0gJydcblxuICBBTk5PVU5DRU1FTlRfU1RBVEUgPSAnc2VudCdcblxuICByZXR1cm5cbn1cbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dEFubm91bmNlbWVudHNDb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVGV4dEFubm91bmNlbWVudHNDb250cm9sLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDakUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRXhDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFN0IsTUFBTSxLQUFLLEdBQUc7SUFDWix5QkFBeUIsRUFBRSxHQUFHLFdBQVcsMkRBQTJEO0lBQ3BHLEtBQUssRUFBRSxHQUFHLFdBQVcseURBQXlEO0lBQzlFLDJCQUEyQixFQUFFLEdBQUcsV0FBVyxnRUFBZ0U7SUFDM0csaUJBQWlCLEVBQUUsR0FBRyxXQUFXLGdFQUFnRTtDQUN6RixDQUFBO0FBRVYsSUFBSSxrQkFBc0MsQ0FBQTtBQUUxQyxNQUFNLFVBQVUsd0JBQXdCLENBQUMsRUFDdkMsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBS1A7SUFDQyxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUU1QyxPQUFPLENBQ0wsdUJBQUMsSUFBSSxJQUFDLFdBQVcsRUFBRSxXQUFXO1FBQzVCLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVB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QUFHLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBRXZGLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUNyQixNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsSUFBSSxDQUFBO1FBRTNCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUUxQixnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ2hDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxHQUFHLFNBQVMsSUFBSSxNQUFNLEVBQUUsQ0FBQTtRQUM5QyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBRXZDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQTtJQUUzQixPQUFNO0FBQ1IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCBSZWFjdEVjcywgeyBMYWJlbCwgVWlFbnRpdHksIElucHV0IH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnXG5pbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4uL2RlZmluaXRpb25zJ1xuaW1wb3J0IHsgZ2V0U2NhbGVVSUZhY3RvciB9IGZyb20gJy4uL3VpJ1xuaW1wb3J0IHsgR2V0UGxheWVyRGF0YVJlcyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi9CdXR0b24nXG5pbXBvcnQgeyBDT05URU5UX1VSTCB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgU3RhdGUgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgSGVhZGVyIH0gZnJvbSAnLi9IZWFkZXInXG5pbXBvcnQgeyBDYXJkIH0gZnJvbSAnLi9DYXJkJ1xuXG5jb25zdCBJQ09OUyA9IHtcbiAgVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTDogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3RleHQtYW5ub3VuY2VtZW50LWNvbnRyb2wucG5nYCxcbiAgQ0hFQ0s6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy90ZXh0LWFubm91bmNlbWVudC1jaGVjay5wbmdgLFxuICBCVE5fQ0xPU0VfVEVYVF9BTk5PVU5DRU1FTlQ6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy90ZXh0LWFubm91bmNlbWVudC1jbG9zZS1idXR0b24ucG5nYCxcbiAgQ0hBVF9NRVNTQUdFX0lDT046IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy90ZXh0LWFubm91bmNlbWVudC1jaGF0LW1lc3NhZ2UucG5nYCxcbn0gYXMgY29uc3RcblxubGV0IEFOTk9VTkNFTUVOVF9TVEFURTogJ3NlbnQnIHwgJ2NsZWFyZWQnXG5cbmV4cG9ydCBmdW5jdGlvbiBUZXh0QW5ub3VuY2VtZW50c0NvbnRyb2woe1xuICBlbmdpbmUsXG4gIHN0YXRlLFxuICBwbGF5ZXIsXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZVxuICBzdGF0ZTogU3RhdGVcbiAgcGxheWVyPzogR2V0UGxheWVyRGF0YVJlcyB8IG51bGxcbn0pIHtcbiAgY29uc3Qgc2NhbGVGYWN0b3IgPSBnZXRTY2FsZVVJRmFjdG9yKGVuZ2luZSlcblxuICByZXR1cm4gKFxuICAgIDxDYXJkIHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn0+XG4gICAgICA8VWlFbnRpdHlcbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7LyogSGVhZGVyICovfVxuICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgaWNvblNyYz17SUNPTlMuVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTH1cbiAgICAgICAgICBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9XG4gICAgICAgICAgdGl0bGU9XCJUZXh0IEFubm91bmNlbWVudHNcIlxuICAgICAgICAvPlxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPk1lc3NhZ2Ugd2luZG93PC9iPlwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTYgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyBib3R0b206IDE2ICogc2NhbGVGYWN0b3IgfSB9fVxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgIG9uU3VibWl0PXsodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlU2VuZFRleHRBbm5vdW5jZW1lbnQoZW5naW5lLCBzdGF0ZSwgdmFsdWUsIHBsYXllcilcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIHN0YXRlLnRleHRBbm5vdW5jZW1lbnRDb250cm9sLnRleHQgPSB2YWx1ZVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9eydXcml0ZSB5b3VyIGFubm91bmNlbWVudCBoZXJlJ31cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyQ29sb3I9e0NvbG9yNC5jcmVhdGUoMTYwIC8gMjU1LCAxNTUgLyAyNTUsIDE2OCAvIDI1NSwgMSl9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LkJsYWNrKCl9XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENvbG9yNC5XaGl0ZSgpIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDgwICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgIG1hcmdpbjogeyBib3R0b206IDE2ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAxMCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgdmFsdWU9e2Ake3N0YXRlLnRleHRBbm5vdW5jZW1lbnRDb250cm9sLnRleHQ/Lmxlbmd0aCA/PyAwfSAvIDkwYH1cbiAgICAgICAgICAgICAgZm9udFNpemU9ezE0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuY3JlYXRlKDE4NyAvIDI1NSwgMTg3IC8gMjU1LCAxODcgLyAyNTUsIDEpfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBmbGV4R3JvdzogMSB9fVxuICAgICAgICAgICAgICB0ZXh0QWxpZ249XCJ0b3AtbGVmdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInRleHRfYW5ub3VuY2VtZW50X2NvbnRyb2xfY2xlYXJcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkNsZWFyIEFubm91bmNlbWVudHM8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTYgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIGhlaWdodDogNDAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUNsZWFyVGV4dEFubm91bmNlbWVudChlbmdpbmUsIHN0YXRlKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJ0ZXh0X2Fubm91bmNlbWVudF9jb250cm9sX3NoYXJlXCJcbiAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5TaGFyZTwvYj5cIlxuICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICBsYWJlbFRyYW5zZm9ybT17eyBtYXJnaW46IHsgbGVmdDogMjAgKiBzY2FsZUZhY3RvciwgcmlnaHQ6IDIwICogc2NhbGVGYWN0b3IgfSB9fVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBoZWlnaHQ6IDQwICogc2NhbGVGYWN0b3IgfX1cbiAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVTZW5kVGV4dEFubm91bmNlbWVudChcbiAgICAgICAgICAgICAgICAgIGVuZ2luZSxcbiAgICAgICAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgICAgICAgc3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wudGV4dCxcbiAgICAgICAgICAgICAgICAgIHBsYXllcixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IG1pbkhlaWdodDogMzAgKiBzY2FsZUZhY3RvciB9fT5cbiAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IEFOTk9VTkNFTUVOVF9TVEFURSAhPT0gdW5kZWZpbmVkID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgICB3aWR0aDogMzAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgaGVpZ2h0OiAzMCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICB0ZXh0dXJlOiB7IHNyYzogSUNPTlMuQ0hFQ0sgfSxcbiAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IEFOTk9VTkNFTUVOVF9TVEFURSAhPT0gdW5kZWZpbmVkID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHZhbHVlPXtgTWVzc2FnZSAke0FOTk9VTkNFTUVOVF9TVEFURSA9PT0gJ3NlbnQnID8gJ3NlbnQnIDogJ2NsZWFyZWQnfSFgfVxuICAgICAgICAgICAgZm9udFNpemU9ezE0ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LmNyZWF0ZSgxODcgLyAyNTUsIDE4NyAvIDI1NSwgMTg3IC8gMjU1LCAxKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgPC9VaUVudGl0eT5cbiAgICA8L0NhcmQ+XG4gIClcbn1cblxuZnVuY3Rpb24gaGFuZGxlQ2xlYXJUZXh0QW5ub3VuY2VtZW50KGVuZ2luZTogSUVuZ2luZSwgc3RhdGU6IFN0YXRlKSB7XG4gIGNvbnN0IHsgVGV4dEFubm91bmNlbWVudHMgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKVxuICBjb25zdCB0ZXh0QW5ub3VuY2VtZW50ID0gVGV4dEFubm91bmNlbWVudHMuZ2V0TXV0YWJsZU9yTnVsbChcbiAgICBzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSxcbiAgKVxuICBpZiAodGV4dEFubm91bmNlbWVudCkge1xuICAgIHRleHRBbm5vdW5jZW1lbnQudGV4dCA9ICcnXG4gICAgdGV4dEFubm91bmNlbWVudC5pZCA9ICcnXG4gICAgdGV4dEFubm91bmNlbWVudC5hdXRob3IgPSAnJ1xuICB9XG4gIHN0YXRlLnRleHRBbm5vdW5jZW1lbnRDb250cm9sLmFubm91bmNlbWVudHMgPSBbXVxuICBBTk5PVU5DRU1FTlRfU1RBVEUgPSAnY2xlYXJlZCdcbn1cblxuZnVuY3Rpb24gaGFuZGxlU2VuZFRleHRBbm5vdW5jZW1lbnQoXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgc3RhdGU6IFN0YXRlLFxuICB0ZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHBsYXllcj86IEdldFBsYXllckRhdGFSZXMgfCBudWxsLFxuKSB7XG4gIGlmICghdGV4dCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgeyBUZXh0QW5ub3VuY2VtZW50cyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpXG4gIGNvbnN0IHRleHRBbm5vdW5jZW1lbnQgPSBUZXh0QW5ub3VuY2VtZW50cy5nZXRNdXRhYmxlT3JOdWxsKHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5KVxuXG4gIGlmICh0ZXh0QW5ub3VuY2VtZW50KSB7XG4gICAgY29uc3QgYXV0aG9yID0gcGxheWVyPy5uYW1lXG4gICAgLy8gR2V0IGN1cnJlbnQgdGltZXN0YW1wIGFuZCBlbnN1cmUgdW5pcXVlbmVzc1xuICAgIGxldCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpXG5cbiAgICB0ZXh0QW5ub3VuY2VtZW50LmF1dGhvciA9IGF1dGhvclxuICAgIHRleHRBbm5vdW5jZW1lbnQuaWQgPSBgJHt0aW1lc3RhbXB9LSR7YXV0aG9yfWBcbiAgICB0ZXh0QW5ub3VuY2VtZW50LnRleHQgPSB0ZXh0LnNsaWNlKDAsIDkwKVxuICB9XG5cbiAgc3RhdGUudGV4dEFubm91bmNlbWVudENvbnRyb2wudGV4dCA9ICcnXG5cbiAgQU5OT1VOQ0VNRU5UX1NUQVRFID0gJ3NlbnQnXG5cbiAgcmV0dXJuXG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { IEngine } from '@dcl/ecs';
2
+ import ReactEcs from '@dcl/react-ecs';
3
+ export declare function DeleteStreamKeyConfirmation({ scaleFactor, engine, onCancel, }: {
4
+ scaleFactor: number;
5
+ engine: IEngine;
6
+ onCancel(): void;
7
+ }): ReactEcs.JSX.Element;
@@ -0,0 +1,62 @@
1
+ import { Color4 } from '@dcl/ecs-math';
2
+ import ReactEcs, { UiEntity, Label } from '@dcl/react-ecs';
3
+ import { Button } from '../../Button';
4
+ import { LoadingDots } from '../../Loading';
5
+ import { Error } from '../../Error';
6
+ import { resetStreamKey } from '../api';
7
+ import { getComponents } from '../../../definitions';
8
+ import { state } from '../..';
9
+ export function DeleteStreamKeyConfirmation({ scaleFactor, engine, onCancel, }) {
10
+ const [isLoading, setIsLoading] = ReactEcs.useState(false);
11
+ const [error, setError] = ReactEcs.useState('');
12
+ const { VideoControlState } = getComponents(engine);
13
+ return (ReactEcs.createElement(UiEntity, { uiTransform: {
14
+ minHeight: 479 * scaleFactor,
15
+ display: 'flex',
16
+ flexDirection: 'column',
17
+ alignItems: 'center',
18
+ justifyContent: 'center',
19
+ borderRadius: 12 * scaleFactor,
20
+ } },
21
+ ReactEcs.createElement(Label, { value: "<b>Are you sure you want to reset your Stream Key?</b>", fontSize: 16 * scaleFactor, color: Color4.fromHexString('#FCFCFC') }),
22
+ ReactEcs.createElement(Label, { value: "Active streams using this stream key will be disconnected.", fontSize: 14 * scaleFactor, color: Color4.fromHexString('#FFFFFFB2'), uiTransform: {
23
+ margin: { top: 6 * scaleFactor, bottom: 24 * scaleFactor },
24
+ } }),
25
+ ReactEcs.createElement(UiEntity, { uiTransform: {
26
+ display: 'flex',
27
+ flexDirection: 'row',
28
+ justifyContent: 'center',
29
+ alignItems: 'center',
30
+ width: '100%',
31
+ } },
32
+ !isLoading && (ReactEcs.createElement(Button, { id: "stream_key_cancel_remove", value: "<b>Cancel</b>", variant: "primary", fontSize: 18 * scaleFactor, color: Color4.Black(), uiTransform: {
33
+ width: 90 * scaleFactor,
34
+ height: 40 * scaleFactor,
35
+ display: 'flex',
36
+ justifyContent: 'center',
37
+ alignItems: 'center',
38
+ margin: { right: 30 * scaleFactor, left: 30 * scaleFactor },
39
+ }, onMouseDown: () => onCancel() })),
40
+ !isLoading && (ReactEcs.createElement(Button, { id: "stream_key_confirm_remove", value: '<b>Reset</b>', variant: "primary", fontSize: 18 * scaleFactor, color: Color4.White(), uiTransform: {
41
+ padding: 8 * scaleFactor,
42
+ height: 40 * scaleFactor,
43
+ justifyContent: 'center',
44
+ alignItems: 'center',
45
+ }, uiBackground: { color: Color4.fromHexString('#FB3B3B') }, onMouseDown: async () => {
46
+ setIsLoading(true);
47
+ const [error, data] = await resetStreamKey();
48
+ if (error) {
49
+ setError(error);
50
+ setIsLoading(false);
51
+ }
52
+ else {
53
+ const videoControl = VideoControlState.getMutable(state.adminToolkitUiEntity);
54
+ videoControl.streamKey = data?.streamingKey;
55
+ videoControl.endsAt = data?.endsAt;
56
+ onCancel();
57
+ }
58
+ } }))),
59
+ isLoading && ReactEcs.createElement(LoadingDots, { scaleFactor: scaleFactor, engine: engine }),
60
+ error && ReactEcs.createElement(Error, { scaleFactor: scaleFactor, text: error })));
61
+ }
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVsZXRlU3RyZWFtS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVmlkZW9Db250cm9sL0xpdmVTdHJlYW0vRGVsZXRlU3RyZWFtS2V5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RDLE9BQU8sUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQW1CLE1BQU0sUUFBUSxDQUFBO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFBO0FBRTdCLE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxFQUMxQyxXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsR0FLVDtJQUNDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMxRCxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDL0MsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRW5ELE9BQU8sQ0FDTCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO1lBQ1gsU0FBUyxFQUFFLEdBQUcsR0FBRyxXQUFXO1lBQzVCLE9BQU8sRUFBRSxNQUFNO1lBQ2YsYUFBYSxFQUFFLFFBQVE7WUFDdkIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsY0FBYyxFQUFFLFFBQVE7WUFDeEIsWUFBWSxFQUFFLEVBQUUsR0FBRyxXQUFXO1NBQy9CO1FBRUQsdUJBQUMsS0FBSyxJQUNKLEtBQUssRUFBQyx3REFBd0QsRUFDOUQsUUFBUSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQzFCLEtBQUssRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUN0QztRQUVGLHVCQUFDLEtBQUssSUFDSixLQUFLLEVBQUMsNERBQTRELEVBQ2xFLFFBQVEsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUMxQixLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFDeEMsV0FBVyxFQUFFO2dCQUNYLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFO2FBQzNELEdBQ0Q7UUFFRix1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO2dCQUNYLE9BQU8sRUFBRSxNQUFNO2dCQUNmLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixjQUFjLEVBQUUsUUFBUTtnQkFDeEIsVUFBVSxFQUFFLFFBQVE7Z0JBQ3BCLEtBQUssRUFBRSxNQUFNO2FBQ2Q7WUFFQSxDQUFDLFNBQVMsSUFBSSxDQUNiLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsMEJBQTBCLEVBQzdCLEtBQUssRUFBQyxlQUFlLEVBQ3JCLE9BQU8sRUFBQyxTQUFTLEVBQ2pCLFFBQVEsRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUMxQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUNyQixXQUFXLEVBQUU7b0JBQ1gsS0FBSyxFQUFFLEVBQUUsR0FBRyxXQUFXO29CQUN2QixNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7b0JBQ3hCLE9BQU8sRUFBRSxNQUFNO29CQUNmLGNBQWMsRUFBRSxRQUFRO29CQUN4QixVQUFVLEVBQUUsUUFBUTtvQkFDcEIsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQUU7aUJBQzVELEVBQ0QsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUM3QixDQUNIO1lBQ0EsQ0FBQyxTQUFTLElBQUksQ0FDYix1QkFBQyxNQUFNLElBQ0wsRUFBRSxFQUFDLDJCQUEyQixFQUM5QixLQUFLLEVBQUUsY0FBYyxFQUNyQixPQUFPLEVBQUMsU0FBUyxFQUNqQixRQUFRLEVBQUUsRUFBRSxHQUFHLFdBQVcsRUFDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFDckIsV0FBVyxFQUFFO29CQUNYLE9BQU8sRUFBRSxDQUFDLEdBQUcsV0FBVztvQkFDeEIsTUFBTSxFQUFFLEVBQUUsR0FBRyxXQUFXO29CQUN4QixjQUFjLEVBQUUsUUFBUTtvQkFDeEIsVUFBVSxFQUFFLFFBQVE7aUJBQ3JCLEVBQ0QsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFDeEQsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFO29CQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQ2xCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxjQUFjLEVBQUUsQ0FBQTtvQkFDNUMsSUFBSSxLQUFLLEVBQUUsQ0FBQzt3QkFDVixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUE7d0JBQ2YsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO29CQUNyQixDQUFDO3lCQUFNLENBQUM7d0JBQ04sTUFBTSxZQUFZLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO3dCQUM3RSxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksRUFBRSxZQUFZLENBQUE7d0JBQzNDLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFLE1BQU0sQ0FBQTt3QkFHbEMsUUFBUSxFQUFFLENBQUE7b0JBQ1osQ0FBQztnQkFDSCxDQUFDLEdBQ0QsQ0FDSCxDQUNRO1FBQ1YsU0FBUyxJQUFJLHVCQUFDLFdBQVcsSUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUk7UUFDdEUsS0FBSyxJQUFJLHVCQUFDLEtBQUssSUFBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEdBQUksQ0FDakQsQ0FDWixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvZWNzLW1hdGgnXG5pbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHksIExhYmVsIH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnXG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbidcbmltcG9ydCB7IExvYWRpbmdEb3RzIH0gZnJvbSAnLi4vLi4vTG9hZGluZydcbmltcG9ydCB7IEVycm9yIH0gZnJvbSAnLi4vLi4vRXJyb3InXG5pbXBvcnQgeyByZXNldFN0cmVhbUtleSwgcmV2b2tlU3RyZWFtS2V5IH0gZnJvbSAnLi4vYXBpJ1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4uLy4uLy4uL2RlZmluaXRpb25zJ1xuaW1wb3J0IHsgc3RhdGUgfSBmcm9tICcuLi8uLidcblxuZXhwb3J0IGZ1bmN0aW9uIERlbGV0ZVN0cmVhbUtleUNvbmZpcm1hdGlvbih7XG4gIHNjYWxlRmFjdG9yLFxuICBlbmdpbmUsXG4gIG9uQ2FuY2VsLFxufToge1xuICBzY2FsZUZhY3RvcjogbnVtYmVyXG4gIGVuZ2luZTogSUVuZ2luZVxuICBvbkNhbmNlbCgpOiB2b2lkXG59KSB7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSBSZWFjdEVjcy51c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSBSZWFjdEVjcy51c2VTdGF0ZSgnJylcbiAgY29uc3QgeyBWaWRlb0NvbnRyb2xTdGF0ZSB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpXG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIG1pbkhlaWdodDogNDc5ICogc2NhbGVGYWN0b3IsXG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIGJvcmRlclJhZGl1czogMTIgKiBzY2FsZUZhY3RvcixcbiAgICAgIH19XG4gICAgPlxuICAgICAgPExhYmVsXG4gICAgICAgIHZhbHVlPVwiPGI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IHlvdXIgU3RyZWFtIEtleT88L2I+XCJcbiAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgIGNvbG9yPXtDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZDRkNGQycpfVxuICAgICAgLz5cblxuICAgICAgPExhYmVsXG4gICAgICAgIHZhbHVlPVwiQWN0aXZlIHN0cmVhbXMgdXNpbmcgdGhpcyBzdHJlYW0ga2V5IHdpbGwgYmUgZGlzY29ubmVjdGVkLlwiXG4gICAgICAgIGZvbnRTaXplPXsxNCAqIHNjYWxlRmFjdG9yfVxuICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNGRkZGRkZCMicpfVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDYgKiBzY2FsZUZhY3RvciwgYm90dG9tOiAyNCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuXG4gICAgICA8VWlFbnRpdHlcbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHshaXNMb2FkaW5nICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBpZD1cInN0cmVhbV9rZXlfY2FuY2VsX3JlbW92ZVwiXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPkNhbmNlbDwvYj5cIlxuICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgZm9udFNpemU9ezE4ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LkJsYWNrKCl9XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICB3aWR0aDogOTAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogMzAgKiBzY2FsZUZhY3RvciwgbGVmdDogMzAgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiBvbkNhbmNlbCgpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNMb2FkaW5nICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBpZD1cInN0cmVhbV9rZXlfY29uZmlybV9yZW1vdmVcIlxuICAgICAgICAgICAgdmFsdWU9eyc8Yj5SZXNldDwvYj4nfVxuICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgZm9udFNpemU9ezE4ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LldoaXRlKCl9XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBwYWRkaW5nOiA4ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgIGhlaWdodDogNDAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkIzQjNCJykgfX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIHNldElzTG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICBjb25zdCBbZXJyb3IsIGRhdGFdID0gYXdhaXQgcmVzZXRTdHJlYW1LZXkoKVxuICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzZXRFcnJvcihlcnJvcilcbiAgICAgICAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmlkZW9Db250cm9sID0gVmlkZW9Db250cm9sU3RhdGUuZ2V0TXV0YWJsZShzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSlcbiAgICAgICAgICAgICAgICB2aWRlb0NvbnRyb2wuc3RyZWFtS2V5ID0gZGF0YT8uc3RyZWFtaW5nS2V5XG4gICAgICAgICAgICAgICAgdmlkZW9Db250cm9sLmVuZHNBdCA9IGRhdGE/LmVuZHNBdFxuXG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRoaXMgcGFnZSBzbyBpdCBjYW4gZ2VuZXJhdGUgYSBuZXcga2V5IGlmIHRoZSB1c2VyIHdhbnRzXG4gICAgICAgICAgICAgICAgb25DYW5jZWwoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1VpRW50aXR5PlxuICAgICAge2lzTG9hZGluZyAmJiA8TG9hZGluZ0RvdHMgc2NhbGVGYWN0b3I9e3NjYWxlRmFjdG9yfSBlbmdpbmU9e2VuZ2luZX0gLz59XG4gICAgICB7ZXJyb3IgJiYgPEVycm9yIHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn0gdGV4dD17ZXJyb3J9IC8+fVxuICAgIDwvVWlFbnRpdHk+XG4gIClcbn1cbiJdfQ==
@@ -1,7 +1,6 @@
1
1
  import { IEngine } from '@dcl/ecs';
2
2
  import ReactEcs from '@dcl/react-ecs';
3
- import { State } from './types';
4
- export declare function VideoControl({ engine, state, }: {
3
+ export declare function GenerateStreamKey({ scaleFactor, engine, }: {
4
+ scaleFactor: number;
5
5
  engine: IEngine;
6
- state: State;
7
6
  }): ReactEcs.JSX.Element;