@dcl/asset-packs 2.12.0 → 2.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/bin/index.js +478 -595
  2. package/dist/admin-toolkit-ui/Active.d.ts +1 -2
  3. package/dist/admin-toolkit-ui/Active.js +7 -7
  4. package/dist/admin-toolkit-ui/Button.js +3 -4
  5. package/dist/admin-toolkit-ui/Card.d.ts +1 -2
  6. package/dist/admin-toolkit-ui/Card.js +8 -8
  7. package/dist/admin-toolkit-ui/Error.d.ts +1 -2
  8. package/dist/admin-toolkit-ui/Error.js +7 -7
  9. package/dist/admin-toolkit-ui/Header.d.ts +1 -2
  10. package/dist/admin-toolkit-ui/Header.js +6 -6
  11. package/dist/admin-toolkit-ui/Loading.d.ts +1 -2
  12. package/dist/admin-toolkit-ui/Loading.js +6 -6
  13. package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.d.ts +1 -2
  14. package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.js +8 -8
  15. package/dist/admin-toolkit-ui/ModerationControl/BanUserDescription.d.ts +1 -5
  16. package/dist/admin-toolkit-ui/ModerationControl/BanUserDescription.js +4 -4
  17. package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.d.ts +1 -2
  18. package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.js +20 -20
  19. package/dist/admin-toolkit-ui/ModerationControl/UsersList.d.ts +1 -2
  20. package/dist/admin-toolkit-ui/ModerationControl/UsersList.js +15 -15
  21. package/dist/admin-toolkit-ui/ModerationControl/index.js +8 -10
  22. package/dist/admin-toolkit-ui/ModerationControl/styles/AddUserInputStyles.d.ts +2 -2
  23. package/dist/admin-toolkit-ui/ModerationControl/styles/AddUserInputStyles.js +20 -20
  24. package/dist/admin-toolkit-ui/ModerationControl/styles/ModerationControlStyles.d.ts +1 -1
  25. package/dist/admin-toolkit-ui/ModerationControl/styles/ModerationControlStyles.js +9 -9
  26. package/dist/admin-toolkit-ui/ModerationControl/styles/UsersListStyles.d.ts +1 -1
  27. package/dist/admin-toolkit-ui/ModerationControl/styles/UsersListStyles.js +45 -45
  28. package/dist/admin-toolkit-ui/RewardsControl.js +15 -17
  29. package/dist/admin-toolkit-ui/SmartItemsControl.js +19 -24
  30. package/dist/admin-toolkit-ui/TextAnnouncements.js +16 -18
  31. package/dist/admin-toolkit-ui/TextAnnouncementsControl.js +20 -22
  32. package/dist/admin-toolkit-ui/VideoControl/DclCast/DclCastInfo.d.ts +1 -2
  33. package/dist/admin-toolkit-ui/VideoControl/DclCast/DclCastInfo.js +14 -14
  34. package/dist/admin-toolkit-ui/VideoControl/DclCast/index.js +10 -12
  35. package/dist/admin-toolkit-ui/VideoControl/DclCast/styles.d.ts +1 -1
  36. package/dist/admin-toolkit-ui/VideoControl/DclCast/styles.js +38 -38
  37. package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.d.ts +1 -2
  38. package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.js +16 -16
  39. package/dist/admin-toolkit-ui/VideoControl/LiveStream/GenerateStreamKey.d.ts +1 -2
  40. package/dist/admin-toolkit-ui/VideoControl/LiveStream/GenerateStreamKey.js +10 -10
  41. package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.d.ts +1 -2
  42. package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.js +48 -48
  43. package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.d.ts +1 -2
  44. package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.js +9 -9
  45. package/dist/admin-toolkit-ui/VideoControl/VideoUrl.d.ts +1 -2
  46. package/dist/admin-toolkit-ui/VideoControl/VideoUrl.js +38 -38
  47. package/dist/admin-toolkit-ui/VideoControl/VolumeControl.js +28 -30
  48. package/dist/admin-toolkit-ui/VideoControl/index.js +29 -31
  49. package/dist/admin-toolkit-ui/index.d.ts +0 -1
  50. package/dist/admin-toolkit-ui/index.js +29 -31
  51. package/dist/bin/index.js +478 -595
  52. package/dist/ui.d.ts +0 -1
  53. package/dist/ui.js +24 -34
  54. package/package.json +1 -1
@@ -1,6 +1,5 @@
1
1
  import ReactEcs, { Label, UiEntity, Dropdown } from '@dcl/react-ecs';
2
2
  import { Color4 } from '@dcl/sdk/math';
3
- import { getScaleUIFactor } from '../../ui';
4
3
  import { Button } from '../Button';
5
4
  import { CONTENT_URL } from '../constants';
6
5
  import { Header } from '../Header';
@@ -33,7 +32,6 @@ export const COLORS = {
33
32
  };
34
33
  export function VideoControl({ engine, state }) {
35
34
  const [selectedEntity, selectedVideo] = useSelectedVideoPlayer(engine) ?? [];
36
- const scaleFactor = getScaleUIFactor(engine);
37
35
  const videoPlayers = getVideoPlayers(engine);
38
36
  const [selected, setSelected] = ReactEcs.useState(undefined);
39
37
  ReactEcs.useEffect(() => {
@@ -44,12 +42,12 @@ export function VideoControl({ engine, state }) {
44
42
  : 'live');
45
43
  }, [state.videoControl.selectedVideoPlayer]);
46
44
  return (ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column', width: '100%', height: '100%' } },
47
- ReactEcs.createElement(Card, { scaleFactor: scaleFactor, uiTransform: {
45
+ ReactEcs.createElement(Card, { uiTransform: {
48
46
  padding: {
49
- top: 32 * scaleFactor,
50
- right: 32 * scaleFactor,
47
+ top: 32,
48
+ right: 32,
51
49
  bottom: 0,
52
- left: 32 * scaleFactor,
50
+ left: 32,
53
51
  },
54
52
  } },
55
53
  ReactEcs.createElement(UiEntity, { uiTransform: {
@@ -57,22 +55,22 @@ export function VideoControl({ engine, state }) {
57
55
  height: '100%',
58
56
  flexDirection: 'column',
59
57
  } },
60
- ReactEcs.createElement(Header, { iconSrc: ICONS.VIDEO_CONTROL, title: "<b>VIDEO SCREENS</b>", scaleFactor: scaleFactor }),
61
- videoPlayers.length > 1 && (ReactEcs.createElement(Label, { value: "<b>Current Screen</b>", fontSize: 16 * scaleFactor, color: Color4.White(), uiTransform: { margin: { bottom: 16 * scaleFactor } } })),
58
+ ReactEcs.createElement(Header, { iconSrc: ICONS.VIDEO_CONTROL, title: "<b>VIDEO SCREENS</b>" }),
59
+ videoPlayers.length > 1 && (ReactEcs.createElement(Label, { value: "<b>Current Screen</b>", fontSize: 16, color: Color4.White(), uiTransform: { margin: { bottom: 16 } } })),
62
60
  ReactEcs.createElement(UiEntity, { uiTransform: {
63
61
  flexDirection: 'column',
64
- margin: { bottom: 16 * scaleFactor },
62
+ margin: { bottom: 16 },
65
63
  } },
66
64
  videoPlayers.length > 1 && (ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column' } },
67
- ReactEcs.createElement(Dropdown, { options: videoPlayers.map((player) => `<b>${player.customName}</b>`), selectedIndex: state.videoControl.selectedVideoPlayer ?? 0, onChange: idx => (state.videoControl.selectedVideoPlayer = idx), textAlign: "middle-left", fontSize: 16 * scaleFactor, uiTransform: {
68
- margin: { right: 8 * scaleFactor },
65
+ ReactEcs.createElement(Dropdown, { options: videoPlayers.map((player) => `<b>${player.customName}</b>`), selectedIndex: state.videoControl.selectedVideoPlayer ?? 0, onChange: idx => (state.videoControl.selectedVideoPlayer = idx), textAlign: "middle-left", fontSize: 16, uiTransform: {
66
+ margin: { right: 8 },
69
67
  width: '100%',
70
68
  }, uiBackground: { color: Color4.White() } }))),
71
- ReactEcs.createElement(Label, { fontSize: 16 * scaleFactor, value: "<b>Media Source</b>", color: Color4.White(), uiTransform: {
72
- margin: { bottom: 2 * scaleFactor, top: 16 * scaleFactor },
69
+ ReactEcs.createElement(Label, { fontSize: 16, value: "<b>Media Source</b>", color: Color4.White(), uiTransform: {
70
+ margin: { bottom: 2, top: 16 },
73
71
  } }),
74
72
  ReactEcs.createElement(UiEntity, { uiTransform: {
75
- margin: { top: 10 * scaleFactor },
73
+ margin: { top: 10 },
76
74
  flexDirection: 'row',
77
75
  width: '100%',
78
76
  justifyContent: 'space-between',
@@ -80,42 +78,42 @@ export function VideoControl({ engine, state }) {
80
78
  ReactEcs.createElement(UiEntity, { uiTransform: {
81
79
  width: '30%',
82
80
  } },
83
- ReactEcs.createElement(CustomButton, { engine: engine, id: "video_control_url", value: "<b>VIDEO URL</b>", icon: ICONS.VIDEO_SOURCE, onClick: () => setSelected('video-url'), scaleFactor: scaleFactor, selected: selected === 'video-url', active: selectedVideo && isVideoUrl(selectedVideo.src) })),
81
+ ReactEcs.createElement(CustomButton, { engine: engine, id: "video_control_url", value: "<b>VIDEO URL</b>", icon: ICONS.VIDEO_SOURCE, onClick: () => setSelected('video-url'), selected: selected === 'video-url', active: selectedVideo && isVideoUrl(selectedVideo.src) })),
84
82
  ReactEcs.createElement(UiEntity, { uiTransform: {
85
83
  width: '30%',
86
84
  } },
87
- ReactEcs.createElement(CustomButton, { engine: engine, id: "video_control_dcl_cast", value: "<b>DCL CAST</b>", icon: ICONS.DCL_CAST_SOURCE, onClick: () => setSelected('dcl-cast'), scaleFactor: scaleFactor, selected: selected === 'dcl-cast', active: selectedVideo && isDclCast(selectedVideo.src) })),
85
+ ReactEcs.createElement(CustomButton, { engine: engine, id: "video_control_dcl_cast", value: "<b>DCL CAST</b>", icon: ICONS.DCL_CAST_SOURCE, onClick: () => setSelected('dcl-cast'), selected: selected === 'dcl-cast', active: selectedVideo && isDclCast(selectedVideo.src) })),
88
86
  ReactEcs.createElement(UiEntity, { uiTransform: {
89
87
  width: '30%',
90
88
  } },
91
- ReactEcs.createElement(CustomButton, { engine: engine, id: "video_control_live", value: "<b>STREAM</b>", icon: ICONS.LIVE_SOURCE, onClick: () => setSelected('live'), active: selectedVideo && isLiveStream(selectedVideo.src), scaleFactor: scaleFactor, selected: selected === 'live' })))))),
92
- selected && selectedEntity && (ReactEcs.createElement(Card, { scaleFactor: scaleFactor },
93
- selected === 'video-url' && (ReactEcs.createElement(VideoControlURL, { engine: engine, scaleFactor: scaleFactor, entity: selectedEntity, video: selectedVideo })),
94
- selected === 'live' && (ReactEcs.createElement(LiveStream, { engine: engine, scaleFactor: scaleFactor, entity: selectedEntity, video: selectedVideo })),
89
+ ReactEcs.createElement(CustomButton, { engine: engine, id: "video_control_live", value: "<b>STREAM</b>", icon: ICONS.LIVE_SOURCE, onClick: () => setSelected('live'), active: selectedVideo && isLiveStream(selectedVideo.src), selected: selected === 'live' })))))),
90
+ selected && selectedEntity && (ReactEcs.createElement(Card, null,
91
+ selected === 'video-url' && (ReactEcs.createElement(VideoControlURL, { engine: engine, entity: selectedEntity, video: selectedVideo })),
92
+ selected === 'live' && (ReactEcs.createElement(LiveStream, { engine: engine, entity: selectedEntity, video: selectedVideo })),
95
93
  selected === 'dcl-cast' && (ReactEcs.createElement(DclCast, { engine: engine, state: state, entity: selectedEntity, video: selectedVideo }))))));
96
94
  }
97
- function CustomButton({ active, scaleFactor, value, id, onClick, icon, selected, engine }) {
95
+ function CustomButton({ active, value, id, onClick, icon, selected, engine }) {
98
96
  return (ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column', height: '100%', width: '100%' } },
99
97
  ReactEcs.createElement(UiEntity, { uiTransform: { width: '100%' } },
100
- ReactEcs.createElement(Button, { id: id, onMouseDown: onClick, value: value, fontSize: 14 * scaleFactor, icon: icon, iconTransform: {
101
- width: 24 * scaleFactor,
102
- height: 24 * scaleFactor,
103
- margin: { right: 8 * scaleFactor },
98
+ ReactEcs.createElement(Button, { id: id, onMouseDown: onClick, value: value, fontSize: 14, icon: icon, iconTransform: {
99
+ width: 24,
100
+ height: 24,
101
+ margin: { right: 8 },
104
102
  }, color: selected ? Color4.Black() : Color4.fromHexString('#FCFCFC'), iconBackground: {
105
103
  color: selected ? Color4.Black() : Color4.fromHexString('#FCFCFC'),
106
104
  }, uiBackground: {
107
105
  color: selected ? Color4.White() : Color4.fromHexString('#43404A'),
108
106
  }, uiTransform: {
109
107
  padding: {
110
- top: 6 * scaleFactor,
111
- bottom: 6 * scaleFactor,
108
+ top: 6,
109
+ bottom: 6,
112
110
  },
113
- borderRadius: 6 * scaleFactor,
111
+ borderRadius: 6,
114
112
  alignItems: 'center',
115
113
  justifyContent: 'center',
116
114
  width: '100%',
117
- height: 36 * scaleFactor,
115
+ height: 36,
118
116
  } })),
119
- active && (ReactEcs.createElement(Active, { scaleFactor: scaleFactor, engine: engine, uiTransform: { width: '100%', margin: { top: 6 * scaleFactor } } }))));
117
+ active && (ReactEcs.createElement(Active, { engine: engine, uiTransform: { width: '100%', margin: { top: 6 } } }))));
120
118
  }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLHNCQUFzQixHQUN2QixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sT0FBTyxNQUFNLFdBQVcsQ0FBQztBQUdoQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDbkIsYUFBYSxFQUFFLEdBQUcsV0FBVywrQ0FBK0M7SUFDNUUsZUFBZSxFQUFFLEdBQUcsV0FBVywrREFBK0Q7SUFDOUYsY0FBYyxFQUFFLEdBQUcsV0FBVyw4REFBOEQ7SUFDNUYsV0FBVyxFQUFFLEdBQUcsV0FBVywyREFBMkQ7SUFDdEYsSUFBSSxFQUFFLEdBQUcsV0FBVyxvREFBb0Q7SUFDeEUsSUFB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QUUsQ0FBQyxHQUFHLFdBQVc7cUJBQ3hCO29CQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsV0FBVztvQkFDN0IsVUFBVSxFQUFFLFFBQVE7b0JBQ3BCLGNBQWMsRUFBRSxRQUFRO29CQUN4QixLQUFLLEVBQUUsTUFBTTtvQkFDYixNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7aUJBQ3pCLEdBQ0QsQ0FDTztRQUVWLE1BQU0sSUFBSSxDQUNULHVCQUFDLE1BQU0sSUFDTCxXQUFXLEVBQUUsV0FBVyxFQUN4QixNQUFNLEVBQUUsTUFBTSxFQUNkLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUUsRUFBRSxHQUNoRSxDQUNILENBQ1EsQ0FDWixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgUmVhY3RFY3MsIHsgTGFiZWwsIFVpRW50aXR5LCBEcm9wZG93biB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgZ2V0U2NhbGVVSUZhY3RvciB9IGZyb20gJy4uLy4uL3VpJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uL0J1dHRvbic7XG5pbXBvcnQgeyBDT05URU5UX1VSTCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgQWRtaW5Ub29scyB9IGZyb20gJy4uLy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IEhlYWRlciB9IGZyb20gJy4uL0hlYWRlcic7XG5pbXBvcnQge1xuICBnZXRWaWRlb1BsYXllcnMsXG4gIGlzRGNsQ2FzdCxcbiAgaXNMaXZlU3RyZWFtLFxuICBpc1ZpZGVvVXJsLFxuICB1c2VTZWxlY3RlZFZpZGVvUGxheWVyLFxufSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IENhcmQgfSBmcm9tICcuLi9DYXJkJztcbmltcG9ydCB7IFZpZGVvQ29udHJvbFVSTCB9IGZyb20gJy4vVmlkZW9VcmwnO1xuaW1wb3J0IHsgTGl2ZVN0cmVhbSB9IGZyb20gJy4vTGl2ZVN0cmVhbSc7XG5pbXBvcnQgeyBBY3RpdmUgfSBmcm9tICcuLi9BY3RpdmUnO1xuaW1wb3J0IERjbENhc3QgZnJvbSAnLi9EY2xDYXN0JztcblxuLy8gQ29uc3RhbnRzXG5leHBvcnQgY29uc3QgSUNPTlMgPSB7XG4gIFZJREVPX0NPTlRST0w6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLnBuZ2AsXG4gIFBSRVZJT1VTX0JVVFRPTjogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3ZpZGVvLWNvbnRyb2wtcHJldmlvdXMtYnV0dG9uLnBuZ2AsXG4gIEZPUldBUkRfQlVUVE9OOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC1mb3J3YXJkLWJ1dHRvbi5wbmdgLFxuICBQTEFZX0JVVFRPTjogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3ZpZGVvLWNvbnRyb2wtcGxheS1idXR0b24ucG5nYCxcbiAgTVVURTogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3ZpZGVvLWNvbnRyb2wtbXV0ZS5wbmdgLFxuICBMT09QOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC1sb29wLnBuZ2AsXG4gIFZPTFVNRV9NSU5VU19CVVRUT046IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLXZvbHVtZS1taW51cy1idXR0b24ucG5nYCxcbiAgVk9MVU1FX1BMVVNfQlVUVE9OOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC12b2x1bWUtcGx1cy1idXR0b24ucG5nYCxcbiAgVklERU9fU09VUkNFOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC12aWRlby1pY29uLnBuZ2AsXG4gIExJVkVfU09VUkNFOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC1saXZlLnBuZ2AsXG4gIERDTF9DQVNUX1NPVVJDRTogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3ZpZGVvLWNvbnRyb2wtZGNsLWNhc3QucG5nYCxcbiAgSU5GTzogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2luZm8ucG5nYCxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBWT0xVTUVfU1RFUCA9IDAuMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZPTFVNRSA9IDE7XG5cbmV4cG9ydCBjb25zdCBDT0xPUlMgPSB7XG4gIFdISVRFOiBDb2xvcjQuV2hpdGUoKSxcbiAgR1JBWTogQ29sb3I0LmNyZWF0ZSgxNjAgLyAyNTUsIDE1NSAvIDI1NSwgMTY4IC8gMjU1LCAxKSxcbiAgU1VDQ0VTUzogQ29sb3I0LmZyb21IZXhTdHJpbmcoJyMzNENFNzcnKSxcbn0gYXMgY29uc3Q7XG5cbi8vIE1haW4gY29tcG9uZW50XG5leHBvcnQgZnVuY3Rpb24gVmlkZW9Db250cm9sKHsgZW5naW5lLCBzdGF0ZSB9OiB7IGVuZ2luZTogSUVuZ2luZTsgc3RhdGU6IFN0YXRlIH0pIHtcbiAgY29uc3QgW3NlbGVjdGVkRW50aXR5LCBzZWxlY3RlZFZpZGVvXSA9IHVzZVNlbGVjdGVkVmlkZW9QbGF5ZXIoZW5naW5lKSA/PyBbXTtcbiAgY29uc3Qgc2NhbGVGYWN0b3IgPSBnZXRTY2FsZVVJRmFjdG9yKGVuZ2luZSk7XG4gIGNvbnN0IHZpZGVvUGxheWVycyA9IGdldFZpZGVvUGxheWVycyhlbmdpbmUpO1xuICBjb25zdCBbc2VsZWN0ZWQsIHNldFNlbGVjdGVkXSA9IFJlYWN0RWNzLnVzZVN0YXRlPCd2aWRlby11cmwnIHwgJ2xpdmUnIHwgJ2RjbC1jYXN0JyB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuXG4gIFJlYWN0RWNzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWQoXG4gICAgICBzZWxlY3RlZFZpZGVvICYmIGlzRGNsQ2FzdChzZWxlY3RlZFZpZGVvLnNyYylcbiAgICAgICAgPyAnZGNsLWNhc3QnXG4gICAgICAgIDogc2VsZWN0ZWRWaWRlbyAmJiBpc1ZpZGVvVXJsKHNlbGVjdGVkVmlkZW8uc3JjKVxuICAgICAgICAgID8gJ3ZpZGVvLXVybCdcbiAgICAgICAgICA6ICdsaXZlJyxcbiAgICApO1xuICB9LCBbc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkVmlkZW9QbGF5ZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScgfX0+XG4gICAgICA8Q2FyZFxuICAgICAgICBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgdG9wOiAzMiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgcmlnaHQ6IDMyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICBsZWZ0OiAzMiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICBpY29uU3JjPXtJQ09OUy5WSURFT19DT05UUk9MfVxuICAgICAgICAgICAgdGl0bGU9XCI8Yj5WSURFTyBTQ1JFRU5TPC9iPlwiXG4gICAgICAgICAgICBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7dmlkZW9QbGF5ZXJzLmxlbmd0aCA+IDEgJiYgKFxuICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+Q3VycmVudCBTY3JlZW48L2I+XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IGJvdHRvbTogMTYgKiBzY2FsZUZhY3RvciB9IH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBtYXJnaW46IHsgYm90dG9tOiAxNiAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt2aWRlb1BsYXllcnMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgICA8RHJvcGRvd25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3ZpZGVvUGxheWVycy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChwbGF5ZXI6IE5vbk51bGxhYmxlPEFkbWluVG9vbHNbJ3ZpZGVvQ29udHJvbCddWyd2aWRlb1BsYXllcnMnXT5bMF0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgYDxiPiR7cGxheWVyLmN1c3RvbU5hbWV9PC9iPmAsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleD17c3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkVmlkZW9QbGF5ZXIgPz8gMH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtpZHggPT4gKHN0YXRlLnZpZGVvQ29udHJvbC5zZWxlY3RlZFZpZGVvUGxheWVyID0gaWR4KX1cbiAgICAgICAgICAgICAgICAgIHRleHRBbGlnbj1cIm1pZGRsZS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXsxNiAqIHNjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENvbG9yNC5XaGl0ZSgpIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2ICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+TWVkaWEgU291cmNlPC9iPlwiXG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBtYXJnaW46IHsgYm90dG9tOiAyICogc2NhbGVGYWN0b3IsIHRvcDogMTYgKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDEwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzMwJScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDdXN0b21CdXR0b25cbiAgICAgICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICAgICAgaWQ9XCJ2aWRlb19jb250cm9sX3VybFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cIjxiPlZJREVPIFVSTDwvYj5cIlxuICAgICAgICAgICAgICAgICAgaWNvbj17SUNPTlMuVklERU9fU09VUkNFfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2VsZWN0ZWQoJ3ZpZGVvLXVybCcpfVxuICAgICAgICAgICAgICAgICAgc2NhbGVGYWN0b3I9e3NjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkID09PSAndmlkZW8tdXJsJ31cbiAgICAgICAgICAgICAgICAgIGFjdGl2ZT17c2VsZWN0ZWRWaWRlbyAmJiBpc1ZpZGVvVXJsKHNlbGVjdGVkVmlkZW8uc3JjKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgd2lkdGg6ICczMCUnLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q3VzdG9tQnV0dG9uXG4gICAgICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9kY2xfY2FzdFwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkRDTCBDQVNUPC9iPlwiXG4gICAgICAgICAgICAgICAgICBpY29uPXtJQ09OUy5EQ0xfQ0FTVF9TT1VSQ0V9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZCgnZGNsLWNhc3QnKX1cbiAgICAgICAgICAgICAgICAgIHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtzZWxlY3RlZCA9PT0gJ2RjbC1jYXN0J31cbiAgICAgICAgICAgICAgICAgIGFjdGl2ZT17c2VsZWN0ZWRWaWRlbyAmJiBpc0RjbENhc3Qoc2VsZWN0ZWRWaWRlby5zcmMpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzMwJScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDdXN0b21CdXR0b25cbiAgICAgICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICAgICAgaWQ9XCJ2aWRlb19jb250cm9sX2xpdmVcIlxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5TVFJFQU08L2I+XCJcbiAgICAgICAgICAgICAgICAgIGljb249e0lDT05TLkxJVkVfU09VUkNFfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0U2VsZWN0ZWQoJ2xpdmUnKX1cbiAgICAgICAgICAgICAgICAgIGFjdGl2ZT17c2VsZWN0ZWRWaWRlbyAmJiBpc0xpdmVTdHJlYW0oc2VsZWN0ZWRWaWRlby5zcmMpfVxuICAgICAgICAgICAgICAgICAgc2NhbGVGYWN0b3I9e3NjYWxlRmFjdG9yfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkID09PSAnbGl2ZSd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgIDwvQ2FyZD5cbiAgICAgIHtzZWxlY3RlZCAmJiBzZWxlY3RlZEVudGl0eSAmJiAoXG4gICAgICAgIDxDYXJkIHNjYWxlRmFjdG9yPXtzY2FsZUZhY3Rvcn0+XG4gICAgICAgICAge3NlbGVjdGVkID09PSAndmlkZW8tdXJsJyAmJiAoXG4gICAgICAgICAgICA8VmlkZW9Db250cm9sVVJMXG4gICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgIGVudGl0eT17c2VsZWN0ZWRFbnRpdHl9XG4gICAgICAgICAgICAgIHZpZGVvPXtzZWxlY3RlZFZpZGVvfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtzZWxlY3RlZCA9PT0gJ2xpdmUnICYmIChcbiAgICAgICAgICAgIDxMaXZlU3RyZWFtXG4gICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgIGVudGl0eT17c2VsZWN0ZWRFbnRpdHl9XG4gICAgICAgICAgICAgIHZpZGVvPXtzZWxlY3RlZFZpZGVvfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtzZWxlY3RlZCA9PT0gJ2RjbC1jYXN0JyAmJiAoXG4gICAgICAgICAgICA8RGNsQ2FzdFxuICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgICAgICBlbnRpdHk9e3NlbGVjdGVkRW50aXR5fVxuICAgICAgICAgICAgICB2aWRlbz17c2VsZWN0ZWRWaWRlb31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9DYXJkPlxuICAgICAgKX1cbiAgICA8L1VpRW50aXR5PlxuICApO1xufVxuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBpZDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBvbkNsaWNrKCk6IHZvaWQ7XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBzY2FsZUZhY3RvcjogbnVtYmVyO1xuICBpY29uOiBzdHJpbmc7XG4gIGVuZ2luZTogSUVuZ2luZTtcbiAgYWN0aXZlPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gQ3VzdG9tQnV0dG9uKHsgYWN0aXZlLCBzY2FsZUZhY3RvciwgdmFsdWUsIGlkLCBvbkNsaWNrLCBpY29uLCBzZWxlY3RlZCwgZW5naW5lIH06IFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6ICcxMDAlJywgd2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyB3aWR0aDogJzEwMCUnIH19PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgaWQ9e2lkfVxuICAgICAgICAgIG9uTW91c2VEb3duPXtvbkNsaWNrfVxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBmb250U2l6ZT17MTQgKiBzY2FsZUZhY3Rvcn1cbiAgICAgICAgICBpY29uPXtpY29ufVxuICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAyNCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgaGVpZ2h0OiAyNCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiA4ICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNvbG9yPXtzZWxlY3RlZCA/IENvbG9yNC5CbGFjaygpIDogQ29sb3I0LmZyb21IZXhTdHJpbmcoJyNGQ0ZDRkMnKX1cbiAgICAgICAgICBpY29uQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgY29sb3I6IHNlbGVjdGVkID8gQ29sb3I0LkJsYWNrKCkgOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZDRkNGQycpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICBjb2xvcjogc2VsZWN0ZWQgPyBDb2xvcjQuV2hpdGUoKSA6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjNDM0MDRBJyksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICB0b3A6IDYgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgYm90dG9tOiA2ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiA2ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBoZWlnaHQ6IDM2ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgIHthY3RpdmUgJiYgKFxuICAgICAgICA8QWN0aXZlXG4gICAgICAgICAgc2NhbGVGYWN0b3I9e3NjYWxlRmFjdG9yfVxuICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IHdpZHRoOiAnMTAwJScsIG1hcmdpbjogeyB0b3A6IDYgKiBzY2FsZUZhY3RvciB9IH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59XG4iXX0=
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvaW5kZXgudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUczQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1Ysc0JBQXNCLEdBQ3ZCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxPQUFPLE1BQU0sV0FBVyxDQUFDO0FBR2hDLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRztJQUNuQixhQUFhLEVBQUUsR0FBRyxXQUFXLCtDQUErQztJQUM1RSxlQUFlLEVBQUUsR0FBRyxXQUFXLCtEQUErRDtJQUM5RixjQUFjLEVBQUUsR0FBRyxXQUFXLDhEQUE4RDtJQUM1RixXQUFXLEVBQUUsR0FBRyxXQUFXLDJEQUEyRDtJQUN0RixJQUFJLEVBQUUsR0FBRyxXQUFXLG9EQUFvRDtJQUN4RSxJQUFJLEVBQUUsR0FBRyxXQUFXLG9EQUFvRDtJQUN4RSxtQkFBbUIsRUFBRSxH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TSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtpQkFDckIsRUFDRCxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQ2xFLGNBQWMsRUFBRTtvQkFDZCxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2lCQUNuRSxFQUNELFlBQVksRUFBRTtvQkFDWixLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2lCQUNuRSxFQUNELFdBQVcsRUFBRTtvQkFDWCxPQUFPLEVBQUU7d0JBQ1AsR0FBRyxFQUFFLENBQUM7d0JBQ04sTUFBTSxFQUFFLENBQUM7cUJBQ1Y7b0JBQ0QsWUFBWSxFQUFFLENBQUM7b0JBQ2YsVUFBVSxFQUFFLFFBQVE7b0JBQ3BCLGNBQWMsRUFBRSxRQUFRO29CQUN4QixLQUFLLEVBQUUsTUFBTTtvQkFDYixNQUFNLEVBQUUsRUFBRTtpQkFDWCxHQUNELENBQ087UUFFVixNQUFNLElBQUksQ0FDVCx1QkFBQyxNQUFNLElBQ0wsTUFBTSxFQUFFLE1BQU0sRUFDZCxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUNsRCxDQUNILENBQ1EsQ0FDWixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgUmVhY3RFY3MsIHsgTGFiZWwsIFVpRW50aXR5LCBEcm9wZG93biB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vQnV0dG9uJztcbmltcG9ydCB7IENPTlRFTlRfVVJMIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBBZG1pblRvb2xzIH0gZnJvbSAnLi4vLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgSGVhZGVyIH0gZnJvbSAnLi4vSGVhZGVyJztcbmltcG9ydCB7XG4gIGdldFZpZGVvUGxheWVycyxcbiAgaXNEY2xDYXN0LFxuICBpc0xpdmVTdHJlYW0sXG4gIGlzVmlkZW9VcmwsXG4gIHVzZVNlbGVjdGVkVmlkZW9QbGF5ZXIsXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQ2FyZCB9IGZyb20gJy4uL0NhcmQnO1xuaW1wb3J0IHsgVmlkZW9Db250cm9sVVJMIH0gZnJvbSAnLi9WaWRlb1VybCc7XG5pbXBvcnQgeyBMaXZlU3RyZWFtIH0gZnJvbSAnLi9MaXZlU3RyZWFtJztcbmltcG9ydCB7IEFjdGl2ZSB9IGZyb20gJy4uL0FjdGl2ZSc7XG5pbXBvcnQgRGNsQ2FzdCBmcm9tICcuL0RjbENhc3QnO1xuXG4vLyBDb25zdGFudHNcbmV4cG9ydCBjb25zdCBJQ09OUyA9IHtcbiAgVklERU9fQ09OVFJPTDogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3ZpZGVvLWNvbnRyb2wucG5nYCxcbiAgUFJFVklPVVNfQlVUVE9OOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC1wcmV2aW91cy1idXR0b24ucG5nYCxcbiAgRk9SV0FSRF9CVVRUT046IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLWZvcndhcmQtYnV0dG9uLnBuZ2AsXG4gIFBMQVlfQlVUVE9OOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC1wbGF5LWJ1dHRvbi5wbmdgLFxuICBNVVRFOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC1tdXRlLnBuZ2AsXG4gIExPT1A6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLWxvb3AucG5nYCxcbiAgVk9MVU1FX01JTlVTX0JVVFRPTjogYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL3ZpZGVvLWNvbnRyb2wtdm9sdW1lLW1pbnVzLWJ1dHRvbi5wbmdgLFxuICBWT0xVTUVfUExVU19CVVRUT046IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLXZvbHVtZS1wbHVzLWJ1dHRvbi5wbmdgLFxuICBWSURFT19TT1VSQ0U6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLXZpZGVvLWljb24ucG5nYCxcbiAgTElWRV9TT1VSQ0U6IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLWxpdmUucG5nYCxcbiAgRENMX0NBU1RfU09VUkNFOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC1kY2wtY2FzdC5wbmdgLFxuICBJTkZPOiBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvaW5mby5wbmdgLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFZPTFVNRV9TVEVQID0gMC4xO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVk9MVU1FID0gMTtcblxuZXhwb3J0IGNvbnN0IENPTE9SUyA9IHtcbiAgV0hJVEU6IENvbG9yNC5XaGl0ZSgpLFxuICBHUkFZOiBDb2xvcjQuY3JlYXRlKDE2MCAvIDI1NSwgMTU1IC8gMjU1LCAxNjggLyAyNTUsIDEpLFxuICBTVUNDRVNTOiBDb2xvcjQuZnJvbUhleFN0cmluZygnIzM0Q0U3NycpLFxufSBhcyBjb25zdDtcblxuLy8gTWFpbiBjb21wb25lbnRcbmV4cG9ydCBmdW5jdGlvbiBWaWRlb0NvbnRyb2woeyBlbmdpbmUsIHN0YXRlIH06IHsgZW5naW5lOiBJRW5naW5lOyBzdGF0ZTogU3RhdGUgfSkge1xuICBjb25zdCBbc2VsZWN0ZWRFbnRpdHksIHNlbGVjdGVkVmlkZW9dID0gdXNlU2VsZWN0ZWRWaWRlb1BsYXllcihlbmdpbmUpID8/IFtdO1xuICBjb25zdCB2aWRlb1BsYXllcnMgPSBnZXRWaWRlb1BsYXllcnMoZW5naW5lKTtcbiAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSBSZWFjdEVjcy51c2VTdGF0ZTwndmlkZW8tdXJsJyB8ICdsaXZlJyB8ICdkY2wtY2FzdCcgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZCxcbiAgKTtcblxuICBSZWFjdEVjcy51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFNlbGVjdGVkKFxuICAgICAgc2VsZWN0ZWRWaWRlbyAmJiBpc0RjbENhc3Qoc2VsZWN0ZWRWaWRlby5zcmMpXG4gICAgICAgID8gJ2RjbC1jYXN0J1xuICAgICAgICA6IHNlbGVjdGVkVmlkZW8gJiYgaXNWaWRlb1VybChzZWxlY3RlZFZpZGVvLnNyYylcbiAgICAgICAgICA/ICd2aWRlby11cmwnXG4gICAgICAgICAgOiAnbGl2ZScsXG4gICAgKTtcbiAgfSwgW3N0YXRlLnZpZGVvQ29udHJvbC5zZWxlY3RlZFZpZGVvUGxheWVyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnIH19PlxuICAgICAgPENhcmRcbiAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB0b3A6IDMyLFxuICAgICAgICAgICAgcmlnaHQ6IDMyLFxuICAgICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgICAgbGVmdDogMzIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7LyogSGVhZGVyICovfVxuICAgICAgICAgIDxIZWFkZXJcbiAgICAgICAgICAgIGljb25TcmM9e0lDT05TLlZJREVPX0NPTlRST0x9XG4gICAgICAgICAgICB0aXRsZT1cIjxiPlZJREVPIFNDUkVFTlM8L2I+XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIHt2aWRlb1BsYXllcnMubGVuZ3RoID4gMSAmJiAoXG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5DdXJyZW50IFNjcmVlbjwvYj5cIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgbWFyZ2luOiB7IGJvdHRvbTogMTYgfSB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3ZpZGVvUGxheWVycy5sZW5ndGggPiAxICYmIChcbiAgICAgICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICAgIDxEcm9wZG93blxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17dmlkZW9QbGF5ZXJzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHBsYXllcjogTm9uTnVsbGFibGU8QWRtaW5Ub29sc1sndmlkZW9Db250cm9sJ11bJ3ZpZGVvUGxheWVycyddPlswXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBgPGI+JHtwbGF5ZXIuY3VzdG9tTmFtZX08L2I+YCxcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4PXtzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRWaWRlb1BsYXllciA/PyAwfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2lkeCA9PiAoc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkVmlkZW9QbGF5ZXIgPSBpZHgpfVxuICAgICAgICAgICAgICAgICAgdGV4dEFsaWduPVwibWlkZGxlLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiA4IH0sXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuV2hpdGUoKSB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5NZWRpYSBTb3VyY2U8L2I+XCJcbiAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIG1hcmdpbjogeyBib3R0b206IDIsIHRvcDogMTYgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBtYXJnaW46IHsgdG9wOiAxMCB9LFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMzAlJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUJ1dHRvblxuICAgICAgICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICAgICAgICBpZD1cInZpZGVvX2NvbnRyb2xfdXJsXCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiPGI+VklERU8gVVJMPC9iPlwiXG4gICAgICAgICAgICAgICAgICBpY29uPXtJQ09OUy5WSURFT19TT1VSQ0V9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZCgndmlkZW8tdXJsJyl9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWQgPT09ICd2aWRlby11cmwnfVxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXtzZWxlY3RlZFZpZGVvICYmIGlzVmlkZW9Vcmwoc2VsZWN0ZWRWaWRlby5zcmMpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzMwJScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxDdXN0b21CdXR0b25cbiAgICAgICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICAgICAgaWQ9XCJ2aWRlb19jb250cm9sX2RjbF9jYXN0XCJcbiAgICAgICAgICAgICAgICAgIHZhbHVlPVwiPGI+RENMIENBU1Q8L2I+XCJcbiAgICAgICAgICAgICAgICAgIGljb249e0lDT05TLkRDTF9DQVNUX1NPVVJDRX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNlbGVjdGVkKCdkY2wtY2FzdCcpfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e3NlbGVjdGVkID09PSAnZGNsLWNhc3QnfVxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXtzZWxlY3RlZFZpZGVvICYmIGlzRGNsQ2FzdChzZWxlY3RlZFZpZGVvLnNyYyl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMzAlJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEN1c3RvbUJ1dHRvblxuICAgICAgICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICAgICAgICBpZD1cInZpZGVvX2NvbnRyb2xfbGl2ZVwiXG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cIjxiPlNUUkVBTTwvYj5cIlxuICAgICAgICAgICAgICAgICAgaWNvbj17SUNPTlMuTElWRV9TT1VSQ0V9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTZWxlY3RlZCgnbGl2ZScpfVxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXtzZWxlY3RlZFZpZGVvICYmIGlzTGl2ZVN0cmVhbShzZWxlY3RlZFZpZGVvLnNyYyl9XG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZD17c2VsZWN0ZWQgPT09ICdsaXZlJ31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgPC9DYXJkPlxuICAgICAge3NlbGVjdGVkICYmIHNlbGVjdGVkRW50aXR5ICYmIChcbiAgICAgICAgPENhcmQ+XG4gICAgICAgICAge3NlbGVjdGVkID09PSAndmlkZW8tdXJsJyAmJiAoXG4gICAgICAgICAgICA8VmlkZW9Db250cm9sVVJMXG4gICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICBlbnRpdHk9e3NlbGVjdGVkRW50aXR5fVxuICAgICAgICAgICAgICB2aWRlbz17c2VsZWN0ZWRWaWRlb31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2VsZWN0ZWQgPT09ICdsaXZlJyAmJiAoXG4gICAgICAgICAgICA8TGl2ZVN0cmVhbVxuICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgZW50aXR5PXtzZWxlY3RlZEVudGl0eX1cbiAgICAgICAgICAgICAgdmlkZW89e3NlbGVjdGVkVmlkZW99XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3NlbGVjdGVkID09PSAnZGNsLWNhc3QnICYmIChcbiAgICAgICAgICAgIDxEY2xDYXN0XG4gICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICBzdGF0ZT17c3RhdGV9XG4gICAgICAgICAgICAgIGVudGl0eT17c2VsZWN0ZWRFbnRpdHl9XG4gICAgICAgICAgICAgIHZpZGVvPXtzZWxlY3RlZFZpZGVvfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0NhcmQ+XG4gICAgICApfVxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGlkOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIG9uQ2xpY2soKTogdm9pZDtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIGljb246IHN0cmluZztcbiAgZW5naW5lOiBJRW5naW5lO1xuICBhY3RpdmU/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBDdXN0b21CdXR0b24oeyBhY3RpdmUsIHZhbHVlLCBpZCwgb25DbGljaywgaWNvbiwgc2VsZWN0ZWQsIGVuZ2luZSB9OiBQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAnMTAwJScsIHdpZHRoOiAnMTAwJScgfX0+XG4gICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgd2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICBvbk1vdXNlRG93bj17b25DbGlja31cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgZm9udFNpemU9ezE0fVxuICAgICAgICAgIGljb249e2ljb259XG4gICAgICAgICAgaWNvblRyYW5zZm9ybT17e1xuICAgICAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICAgICAgaGVpZ2h0OiAyNCxcbiAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCB9LFxuICAgICAgICAgIH19XG4gICAgICAgICAgY29sb3I9e3NlbGVjdGVkID8gQ29sb3I0LkJsYWNrKCkgOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZDRkNGQycpfVxuICAgICAgICAgIGljb25CYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICBjb2xvcjogc2VsZWN0ZWQgPyBDb2xvcjQuQmxhY2soKSA6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkNGQ0ZDJyksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgIGNvbG9yOiBzZWxlY3RlZCA/IENvbG9yNC5XaGl0ZSgpIDogQ29sb3I0LmZyb21IZXhTdHJpbmcoJyM0MzQwNEEnKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICAgIHRvcDogNixcbiAgICAgICAgICAgICAgYm90dG9tOiA2LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogNixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgIGhlaWdodDogMzYsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvVWlFbnRpdHk+XG5cbiAgICAgIHthY3RpdmUgJiYgKFxuICAgICAgICA8QWN0aXZlXG4gICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3sgd2lkdGg6ICcxMDAlJywgbWFyZ2luOiB7IHRvcDogNiB9IH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59XG4iXX0=
@@ -4,7 +4,6 @@ import { IEngine, PointerEventsSystem } from '@dcl/ecs';
4
4
  import { IPlayersHelper, ISDKHelpers } from '../definitions';
5
5
  import { State } from './types';
6
6
  export declare const nextTickFunctions: (() => void)[];
7
- export declare let scaleFactor: number;
8
7
  export declare let state: State;
9
8
  export declare const containerBackgroundColor: Color4.MutableColor4;
10
9
  export declare function fetchSceneAdmins(): Promise<void>;
@@ -1,7 +1,6 @@
1
1
  import { Color4 } from '@dcl/sdk/math';
2
2
  import ReactEcs, { Label, Button as DCLButton, UiEntity } from '@dcl/react-ecs';
3
3
  import { getComponents } from '../definitions';
4
- import { getScaleUIFactor } from '../ui';
5
4
  import { VideoControl } from './VideoControl';
6
5
  import { TextAnnouncementsControl } from './TextAnnouncementsControl';
7
6
  import { SmartItemsControl } from './SmartItemsControl';
@@ -14,7 +13,7 @@ import { getSceneAdmins, getSceneBans } from './ModerationControl/api';
14
13
  import { ModalUserList, UserListType } from './ModerationControl/UsersList';
15
14
  import { isPreview } from './fetch-utils';
16
15
  export const nextTickFunctions = [];
17
- export let scaleFactor;
16
+ const ADMIN_TOOLKIT_VIRTUAL_UI_SIZE = { virtualWidth: 1920, virtualHeight: 1080 };
18
17
  export let state = {
19
18
  adminToolkitUiEntity: 0,
20
19
  panelOpen: false,
@@ -126,7 +125,7 @@ export async function initializeAdminData(engine, sdkHelpers) {
126
125
  export function createAdminToolkitUI(engine, pointerEventsSystem, reactBasedUiSystem, sdkHelpers, playersHelper) {
127
126
  initializeAdminData(engine, sdkHelpers).then(() => {
128
127
  console.log('createAdminToolkitUI - initialized');
129
- reactBasedUiSystem.setUiRenderer(() => uiComponent(engine, pointerEventsSystem, sdkHelpers, playersHelper));
128
+ reactBasedUiSystem.setUiRenderer(() => uiComponent(engine, pointerEventsSystem, sdkHelpers, playersHelper), ADMIN_TOOLKIT_VIRTUAL_UI_SIZE);
130
129
  });
131
130
  }
132
131
  function isAllowedAdmin(_engine, adminToolkitEntitie, player) {
@@ -140,7 +139,6 @@ const uiComponent = (engine, pointerEventsSystem, sdkHelpers, playersHelper) =>
140
139
  const adminToolkitEntity = getAdminToolkitComponent(engine);
141
140
  const player = playersHelper?.getPlayer();
142
141
  const isPlayerAdmin = isAllowedAdmin(engine, adminToolkitEntity, player);
143
- scaleFactor = getScaleUIFactor(engine);
144
142
  return [
145
143
  ReactEcs.createElement(UiEntity, { uiTransform: {
146
144
  positionType: 'absolute',
@@ -150,34 +148,34 @@ const uiComponent = (engine, pointerEventsSystem, sdkHelpers, playersHelper) =>
150
148
  isPlayerAdmin ? (ReactEcs.createElement(UiEntity, { uiTransform: {
151
149
  positionType: 'absolute',
152
150
  flexDirection: 'row',
153
- position: { top: 120 * scaleFactor, right: 10 * scaleFactor },
151
+ position: { top: 120, right: 10 },
154
152
  } },
155
153
  ReactEcs.createElement(UiEntity, { uiTransform: {
156
154
  display: state.panelOpen ? 'flex' : 'none',
157
- width: 500 * scaleFactor,
155
+ width: 500,
158
156
  pointerFilter: 'block',
159
157
  flexDirection: 'column',
160
- margin: { right: 8 * scaleFactor },
158
+ margin: { right: 8 },
161
159
  } },
162
160
  ReactEcs.createElement(UiEntity, { uiTransform: {
163
161
  width: '100%',
164
- height: 50 * scaleFactor,
162
+ height: 50,
165
163
  flexDirection: 'row',
166
164
  alignItems: 'center',
167
- borderRadius: 12 * scaleFactor,
165
+ borderRadius: 12,
168
166
  padding: {
169
- left: 12 * scaleFactor,
170
- right: 12 * scaleFactor,
167
+ left: 12,
168
+ right: 12,
171
169
  },
172
170
  }, uiBackground: { color: containerBackgroundColor } },
173
- ReactEcs.createElement(Label, { value: "ADMIN TOOLS", fontSize: 20 * scaleFactor, color: Color4.create(160, 155, 168, 1), uiTransform: { flexGrow: 1 } }),
171
+ ReactEcs.createElement(Label, { value: "ADMIN TOOLS", fontSize: 20, color: Color4.create(160, 155, 168, 1), uiTransform: { flexGrow: 1 } }),
174
172
  ReactEcs.createElement(Button, { id: "admin_toolkit_moderation_control", variant: state.activeTab === TabType.MODERATION_CONTROL ? 'primary' : 'text', icon: BTN_MODERATION_CONTROL, onlyIcon: true, uiTransform: {
175
173
  display: adminToolkitEntity.moderationControl.isEnabled && !isPreview()
176
174
  ? 'flex'
177
175
  : 'none',
178
- width: 49 * scaleFactor,
179
- height: 42 * scaleFactor,
180
- margin: { right: 8 * scaleFactor },
176
+ width: 49,
177
+ height: 42,
178
+ margin: { right: 8 },
181
179
  alignItems: 'center',
182
180
  justifyContent: 'center',
183
181
  }, iconBackground: {
@@ -199,9 +197,9 @@ const uiComponent = (engine, pointerEventsSystem, sdkHelpers, playersHelper) =>
199
197
  color: state.activeTab === TabType.VIDEO_CONTROL ? Color4.Black() : Color4.White(),
200
198
  }, onlyIcon: true, uiTransform: {
201
199
  display: adminToolkitEntity.videoControl.isEnabled ? 'flex' : 'none',
202
- width: 49 * scaleFactor,
203
- height: 42 * scaleFactor,
204
- margin: { right: 8 * scaleFactor },
200
+ width: 49,
201
+ height: 42,
202
+ margin: { right: 8 },
205
203
  alignItems: 'center',
206
204
  justifyContent: 'center',
207
205
  }, iconTransform: {
@@ -224,9 +222,9 @@ const uiComponent = (engine, pointerEventsSystem, sdkHelpers, playersHelper) =>
224
222
  : Color4.White(),
225
223
  }, onlyIcon: true, uiTransform: {
226
224
  display: adminToolkitEntity.smartItemsControl.isEnabled ? 'flex' : 'none',
227
- width: 49 * scaleFactor,
228
- height: 42 * scaleFactor,
229
- margin: { right: 8 * scaleFactor },
225
+ width: 49,
226
+ height: 42,
227
+ margin: { right: 8 },
230
228
  alignItems: 'center',
231
229
  justifyContent: 'center',
232
230
  }, iconTransform: {
@@ -249,9 +247,9 @@ const uiComponent = (engine, pointerEventsSystem, sdkHelpers, playersHelper) =>
249
247
  : Color4.White(),
250
248
  }, onlyIcon: true, uiTransform: {
251
249
  display: adminToolkitEntity.textAnnouncementControl.isEnabled ? 'flex' : 'none',
252
- width: 49 * scaleFactor,
253
- height: 42 * scaleFactor,
254
- margin: { right: 8 * scaleFactor },
250
+ width: 49,
251
+ height: 42,
252
+ margin: { right: 8 },
255
253
  alignItems: 'center',
256
254
  justifyContent: 'center',
257
255
  }, iconTransform: {
@@ -274,8 +272,8 @@ const uiComponent = (engine, pointerEventsSystem, sdkHelpers, playersHelper) =>
274
272
  state.activeTab === TabType.MODERATION_CONTROL && (ReactEcs.createElement(ModerationControl, { engine: engine, player: player, sceneAdmins: sceneAdminsCache }))),
275
273
  ReactEcs.createElement(UiEntity, { uiTransform: {
276
274
  display: 'flex',
277
- height: 42 * scaleFactor,
278
- width: 42 * scaleFactor,
275
+ height: 42,
276
+ width: 42,
279
277
  alignItems: 'center',
280
278
  alignContent: 'center',
281
279
  justifyContent: 'center',
@@ -288,8 +286,8 @@ const uiComponent = (engine, pointerEventsSystem, sdkHelpers, playersHelper) =>
288
286
  color: Color4.create(1, 1, 1, 1),
289
287
  } },
290
288
  ReactEcs.createElement(DCLButton, { value: "", uiTransform: {
291
- height: 40 * scaleFactor,
292
- width: 40 * scaleFactor,
289
+ height: 40,
290
+ width: 40,
293
291
  alignItems: 'center',
294
292
  alignContent: 'center',
295
293
  justifyContent: 'center',
@@ -303,8 +301,8 @@ const uiComponent = (engine, pointerEventsSystem, sdkHelpers, playersHelper) =>
303
301
  state.panelOpen = !state.panelOpen;
304
302
  } })))) : null,
305
303
  ReactEcs.createElement(TextAnnouncements, { engine: engine, state: state })),
306
- moderationControlState.showModalAdminList && (ReactEcs.createElement(ModalUserList, { scaleFactor: scaleFactor, users: sceneAdminsCache ?? [], engine: engine, type: UserListType.ADMIN })),
307
- moderationControlState.showModalBanList && (ReactEcs.createElement(ModalUserList, { scaleFactor: scaleFactor, users: sceneBansCache ?? [], engine: engine, type: UserListType.BAN })),
304
+ moderationControlState.showModalAdminList && (ReactEcs.createElement(ModalUserList, { users: sceneAdminsCache ?? [], engine: engine, type: UserListType.ADMIN })),
305
+ moderationControlState.showModalBanList && (ReactEcs.createElement(ModalUserList, { users: sceneBansCache ?? [], engine: engine, type: UserListType.BAN })),
308
306
  ];
309
307
  };
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksU0FBUyxFQUFFLFFBQVEsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRyxPQUFPLEVBQUUsYUFBYSxFQUFpRCxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBUyxPQUFPLEVBQXFCLE1BQU0sU0FBUyxDQUFDO0FBQzVELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHNCQUFzQixHQUV2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFnQixNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBbUIsRUFBRSxDQUFDO0FBQ3BELE1BQU0sQ0FBQyxJQUFJLFdBQW1CLENBQUM7QUFFL0IsTUFBTSxDQUFDLElBQUksS0FBSyxHQUFVO0lBQ3hCLG9CQUFvQixFQUFFLENBQVc7SUFDakMsU0FBUyxFQUFFLEtBQUs7SUFDaEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxJQUFJO0lBQ3ZCLFlBQVksRUFBRTtRQUNaLG1CQUFtQixFQUFFLFNBQVM7UUFDOUIsY0FBYyxFQUFFLFNBQVM7UUFDekIsT0FBTyxFQUFFLFNBQVM7S0FDbkI7SUFDRCxpQkFBaUIsRUFBRTtRQUNqQixpQkFBaUIsRUFBRSxTQUFTO1FBQzVCLFVBQVUsRUFBRSxJQUFJLEdBQUcsRUFBNkI7S0FDakQ7SUFDRCx1QkFBdUIsRUFBRTtRQUN2QixNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLGtCQUFrQixFQUFFLElBQUksR0FBRyxFQUFrQjtRQUM3QyxhQUFhLEVBQUUsRUFBRTtRQUNqQixnQkFBZ0IsRUFBRSxDQUFDO0tBQ3BCO0lBQ0QsY0FBYyxFQUFFO1FBQ2Qsa0JBQWtCLEVBQUUsU0FBUztLQUM5QjtDQUNGLENBQUM7QUFFRixJQUFJLGdCQUFnQixHQUFpQixFQUFFLENBQUM7QUFDeEMsSUFBSSxjQUFjLEdBQW1CLEVBQUUsQ0FBQztBQUt4QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsV0FBVyxrRUFBa0UsQ0FBQztBQUUzRyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsV0FBVyx1RUFBdUUsQ0FBQztBQUVySCxNQUFNLDZCQUE2QixHQUFHLEdBQUcsV0FBVyw4RUFBOEUsQ0FBQztBQUVuSSxNQUFNLHlCQUF5QixHQUFHLEdBQUcsV0FBVyw0REFBNEQsQ0FBQztBQUM3RyxNQUFNLDRCQUE0QixHQUFHLEdBQUcsV0FBVyw2REFBNkQsQ0FBQztBQUVqSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBR3JFLE1BQU0sa0JBQWtCLEdBQUcsSUFBYyxDQUFDO0FBRTFDLFNBQVMscUJBQXFCLENBQUMsTUFBZTtJQUM1QyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQUMsTUFBZTtJQUMvQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCO0lBQ3BDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsTUFBTSxjQUFjLEVBQUUsQ0FBQztJQUVqRCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBRVYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixPQUFPO0lBQ1QsQ0FBQztJQUNELGdCQUFnQixHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztTQUNoQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1QsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1FBQ1osT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLO1FBQ2hCLElBQUksRUFBRSxPQUFnQjtRQUN0QixRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDL0IsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWTtLQUMvQixDQUFDLENBQUM7U0FDRixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWM7SUFDbEMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxNQUFNLFlBQVksRUFBRSxDQUFDO0lBRS9DLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLE9BQU87SUFDVCxDQUFDO0lBRUQsY0FBYyxHQUFHLFFBQVEsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDdEIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsTUFBZTtJQUMzQyxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRS9ELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUUsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLE1BQWU7SUFDakMsTUFBTSxxQkFBcUIsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUvRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxNQUFlO0lBQy9DLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwRCxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFO1FBQzVELElBQUksRUFBRSxFQUFFO1FBQ1IsTUFBTSxFQUFFLEVBQUU7UUFDVixFQUFFLEVBQUUsRUFBRTtLQUNQLENBQUMsQ0FBQztBQUNMLENBQUM7QUFHRCxJQUFJLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUNqQyxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLE1BQWUsRUFBRSxVQUF3QjtJQUNqRixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUMxQixNQUFNLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFHdkUsS0FBSyxDQUFDLG9CQUFvQixHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUdqRix3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUtqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7WUFDN0QsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQ3RCLEtBQUssQ0FBQyxvQkFBb0IsRUFDMUIsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQzlELGtCQUFrQixDQUNuQixDQUFDO1FBRUYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQyxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLFFBQVEsRUFBRSxDQUFDO2dCQUNiLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRzdCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFELG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUU1QixPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLE1BQWUsRUFDZixtQkFBd0MsRUFDeEMsa0JBQXNDLEVBQ3RDLFVBQXdCLEVBQ3hCLGFBQThCO0lBRzlCLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUNsRCxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQ3BDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUNwRSxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQ3JCLE9BQWdCLEVBQ2hCLG1CQUFnRSxFQUNoRSxNQUEyQztJQUUzQyxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRTFCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEQsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxhQUFhLENBQUMsQ0FBQztJQUV4RSxPQUFPLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQztBQUNoQyxDQUFDO0FBRUQsTUFBTSxXQUFXLEdBQUcsQ0FDbEIsTUFBZSxFQUNmLG1CQUF3QyxFQUN4QyxVQUF3QixFQUN4QixhQUE4QixFQUM5QixFQUFFO0lBQ0YsTUFBTSxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RCxNQUFNLE1BQU0sR0FBRyxhQUFhLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDMUMsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6RSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkMsT0FBTztRQUNMLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7Z0JBQ1gsWUFBWSxFQUFFLFVBQVU7Z0JBQ3hCLE1BQU0sRUFBRSxNQUFNO2dCQUNkLEtBQUssRUFBRSxNQUFNO2FBQ2Q7WUFFQSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQ2YsdUJBQUMsUUFBUSxJQUNQLFdBQVcsRUFBRTtvQkFDWCxZQUFZLEVBQUUsVUFBVTtvQkFDeEIsYUFBYSxFQUFFLEtBQUs7b0JBQ3BCLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsV0FBVyxFQUFFO2lCQUM5RDtnQkFFRCx1QkFBQyxRQUFRLElBQ1AsV0FBVyxFQUFFO3dCQUNYLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU07d0JBQzFDLEtBQUssRUFBRSxHQUFHLEdBQUcsV0FBVzt3QkFDeEIsYUFBYSxFQUFFLE9BQU87d0JBQ3RCLGFBQWEsRUFBRSxRQUFRO3dCQUN2QixNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRTtxQkFDbkM7b0JBRUQsdUJBQUMsUUFBUSxJQUNQLFdBQVcsRUFBRTs0QkFDWCxLQUFLLEVBQUUsTUFBTTs0QkFDYixNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7NEJBQ3hCLGFBQWEsRUFBRSxLQUFLOzRCQUNwQixVQUFVLEVBQUUsUUFBUTs0QkFDcEIsWUFBWSxFQUFFLEVBQUUsR0FBRyxXQUFXOzRCQUM5QixPQUFPLEVBQUU7Z0NBQ1AsSUFBSSxFQUFFLEVBQUUsR0FBRyxXQUFXO2dDQUN0QixLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVc7NkJBQ3hCO3lCQUNGLEVBQ0QsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFO3dCQUVqRCx1QkFBQyxLQUFLLElBQ0osS0FBSyxFQUFDLGFBQWEsRUFDbkIsUUFBUSxFQUFFLEVBQUUsR0FBRyxXQUFXLEVBQzFCLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUN0QyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEdBQzVCO3dCQUNGLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsa0NBQWtDLEVBQ3JDLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQzVFLElBQUksRUFBRSxzQkFBc0IsRUFDNUIsUUFBUSxRQUNSLFdBQVcsRUFBRTtnQ0FDWCxPQUFPLEVBQ0wsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxFQUFFO29DQUM1RCxDQUFDLENBQUMsTUFBTTtvQ0FDUixDQUFDLENBQUMsTUFBTTtnQ0FDWixLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVc7Z0NBQ3ZCLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVztnQ0FDeEIsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUU7Z0NBQ2xDLFVBQVUsRUFBRSxRQUFRO2dDQUNwQixjQUFjLEVBQUUsUUFBUTs2QkFDekIsRUFDRCxjQUFjLEVBQUU7Z0NBQ2QsS0FBSyxFQUNILEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLGtCQUFrQjtvQ0FDNUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0NBQ2hCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFOzZCQUNyQixFQUNELGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUNoRCxXQUFXLEVBQUUsR0FBRyxFQUFFO2dDQUNoQixJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0NBQ25ELEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztvQ0FDL0IsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTt3Q0FDMUIsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7b0NBQy9DLENBQUMsQ0FBQyxDQUFDO2dDQUNMLENBQUM7cUNBQU0sQ0FBQztvQ0FDTixLQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0NBQ2pDLENBQUM7NEJBQ0gsQ0FBQyxHQUNEO3dCQUNGLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsbUNBQW1DLEVBQ3RDLE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUN2RSxJQUFJLEVBQUUsaUJBQWlCLEVBQ3ZCLGNBQWMsRUFBRTtnQ0FDZCxLQUFLLEVBQ0gsS0FBSyxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7NkJBQzlFLEVBQ0QsUUFBUSxRQUNSLFdBQVcsRUFBRTtnQ0FDWCxPQUFPLEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO2dDQUNwRSxLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVc7Z0NBQ3ZCLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVztnQ0FDeEIsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUU7Z0NBQ2xDLFVBQVUsRUFBRSxRQUFRO2dDQUNwQixjQUFjLEVBQUUsUUFBUTs2QkFDekIsRUFDRCxhQUFhLEVBQUU7Z0NBQ2IsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsS0FBSyxFQUFFLE1BQU07NkJBQ2QsRUFDRCxXQUFXLEVBQUUsR0FBRyxFQUFFO2dDQUNoQixJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO29DQUM5QyxLQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0NBQy9CLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7d0NBQzFCLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztvQ0FDMUMsQ0FBQyxDQUFDLENBQUM7Z0NBQ0wsQ0FBQztxQ0FBTSxDQUFDO29DQUNOLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztnQ0FDakMsQ0FBQzs0QkFDSCxDQUFDLEdBQ0Q7d0JBQ0YsdUJBQUMsTUFBTSxJQUNMLEVBQUUsRUFBQyx5Q0FBeUMsRUFDNUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFDN0UsSUFBSSxFQUFFLHNCQUFzQixFQUM1QixjQUFjLEVBQUU7Z0NBQ2QsS0FBSyxFQUNILEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLG1CQUFtQjtvQ0FDN0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0NBQ2hCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFOzZCQUNyQixFQUNELFFBQVEsUUFDUixXQUFXLEVBQUU7Z0NBQ1gsT0FBTyxFQUFFLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO2dDQUN6RSxLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVc7Z0NBQ3ZCLE1BQU0sRUFBRSxFQUFFLEdBQUcsV0FBVztnQ0FDeEIsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxXQUFXLEVBQUU7Z0NBQ2xDLFVBQVUsRUFBRSxRQUFRO2dDQUNwQixjQUFjLEVBQUUsUUFBUTs2QkFDekIsRUFDRCxhQUFhLEVBQUU7Z0NBQ2IsTUFBTSxFQUFFLE1BQU07Z0NBQ2QsS0FBSyxFQUFFLE1BQU07NkJBQ2QsRUFDRCxXQUFXLEVBQUUsR0FBRyxFQUFFO2dDQUNoQixJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0NBQ3BELEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztvQ0FDL0IsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTt3Q0FDMUIsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7b0NBQ2hELENBQUMsQ0FBQyxDQUFDO2dDQUNMLENBQUM7cUNBQU0sQ0FBQztvQ0FDTixLQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0NBQ2pDLENBQUM7NEJBQ0gsQ0FBQyxHQUNEO3dCQUNGLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsK0NBQStDLEVBQ2xELE9BQU8sRUFBRSxLQUFLLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQ25GLElBQUksRUFBRSw2QkFBNkIsRUFDbkMsY0FBYyxFQUFFO2dDQUNkLEtBQUssRUFDSCxLQUFLLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyx5QkFBeUI7b0NBQ25ELENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO29DQUNoQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTs2QkFDckIsRUFDRCxRQUFRLFFBQ1IsV0FBVyxFQUFFO2dDQUNYLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtnQ0FDL0UsS0FBSyxFQUFFLEVBQUUsR0FBRyxXQUFXO2dDQUN2QixNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7Z0NBQ3hCLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFO2dDQUNsQyxVQUFVLEVBQUUsUUFBUTtnQ0FDcEIsY0FBYyxFQUFFLFFBQVE7NkJBQ3pCLEVBQ0QsYUFBYSxFQUFFO2dDQUNiLE1BQU0sRUFBRSxNQUFNO2dDQUNkLEtBQUssRUFBRSxNQUFNOzZCQUNkLEVBQ0QsV0FBVyxFQUFFLEdBQUcsRUFBRTtnQ0FDaEIsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO29DQUMxRCxLQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0NBQy9CLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7d0NBQzFCLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixDQUFDO29DQUN0RCxDQUFDLENBQUMsQ0FBQztnQ0FDTCxDQUFDO3FDQUFNLENBQUM7b0NBQ04sS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO2dDQUNqQyxDQUFDOzRCQUNILENBQUMsR0FDRCxDQUNPO29CQUNWLEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUN2RCx1QkFBQyx3QkFBd0IsSUFDdkIsTUFBTSxFQUFFLE1BQU0sRUFDZCxLQUFLLEVBQUUsS0FBSyxFQUNaLE1BQU0sRUFBRSxNQUFNLEdBQ2QsQ0FDSCxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNQLEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FDM0MsdUJBQUMsWUFBWSxJQUNYLE1BQU0sRUFBRSxNQUFNLEVBQ2QsS0FBSyxFQUFFLEtBQUssR0FDWixDQUNILENBQUMsQ0FBQyxDQUFDLElBQUk7b0JBQ1AsS0FBSyxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQ2pELHVCQUFDLGlCQUFpQixJQUNoQixNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxLQUFLLEdBQ1osQ0FDSCxDQUFDLENBQUMsQ0FBQyxJQUFJO29CQUNQLEtBQUssQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLGtCQUFrQixJQUFJLENBQ2pELHVCQUFDLGlCQUFpQixJQUNoQixNQUFNLEVBQUUsTUFBTSxFQUNkLE1BQU0sRUFBRSxNQUFNLEVBQ2QsV0FBVyxFQUFFLGdCQUFnQixHQUM3QixDQUNILENBQ1E7Z0JBQ1gsdUJBQUMsUUFBUSxJQUNQLFdBQVcsRUFBRTt3QkFDWCxPQUFPLEVBQUUsTUFBTTt3QkFDZixNQUFNLEVBQUUsRUFBRSxHQUFHLFdBQVc7d0JBQ3hCLEtBQUssRUFBRSxFQUFFLEdBQUcsV0FBVzt3QkFDdkIsVUFBVSxFQUFFLFFBQVE7d0JBQ3BCLFlBQVksRUFBRSxRQUFRO3dCQUN0QixjQUFjLEVBQUUsUUFBUTt3QkFDeEIsYUFBYSxFQUFFLE9BQU87cUJBQ3ZCLEVBQ0QsWUFBWSxFQUFFO3dCQUNaLE9BQU8sRUFBRTs0QkFDUCxHQUFHLEVBQUUsNEJBQTRCO3lCQUNsQzt3QkFDRCxXQUFXLEVBQUUsU0FBUzt3QkFDdEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNqQztvQkFFRCx1QkFBQyxTQUFTLElBQ1IsS0FBSyxFQUFDLEVBQUUsRUFDUixXQUFXLEVBQUU7NEJBQ1gsTUFBTSxFQUFFLEVBQUUsR0FBRyxXQUFXOzRCQUN4QixLQUFLLEVBQUUsRUFBRSxHQUFHLFdBQVc7NEJBQ3ZCLFVBQVUsRUFBRSxRQUFROzRCQUNwQixZQUFZLEVBQUUsUUFBUTs0QkFDdEIsY0FBYyxFQUFFLFFBQVE7eUJBQ3pCLEVBQ0QsWUFBWSxFQUFFOzRCQUNaLE9BQU8sRUFBRTtnQ0FDUCxHQUFHLEVBQUUseUJBQXlCOzZCQUMvQjs0QkFDRCxXQUFXLEVBQUUsU0FBUzs0QkFDdEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3lCQUNqQyxFQUNELFdBQVcsRUFBRSxHQUFHLEVBQUU7NEJBQ2hCLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO3dCQUNyQyxDQUFDLEdBQ0QsQ0FDTyxDQUNGLENBQ1osQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUNSLHVCQUFDLGlCQUFpQixJQUNoQixNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxLQUFLLEdBQ1osQ0FDTztRQUNYLHNCQUFzQixDQUFDLGtCQUFrQixJQUFJLENBQzNDLHVCQUFDLGFBQWEsSUFDWixXQUFXLEVBQUUsV0FBVyxFQUN4QixLQUFLLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxFQUM3QixNQUFNLEVBQUUsTUFBTSxFQUNkLElBQUksRUFBRSxZQUFZLENBQUMsS0FBSyxHQUN4QixDQUNIO1FBQ0Qsc0JBQXNCLENBQUMsZ0JBQWdCLElBQUksQ0FDekMsdUJBQUMsYUFBYSxJQUNaLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLEtBQUssRUFBRSxjQUFjLElBQUksRUFBRSxFQUMzQixNQUFNLEVBQUUsTUFBTSxFQUNkLElBQUksRUFBRSxZQUFZLENBQUMsR0FBRyxHQUN0QixDQUNIO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IFJlYWN0RWNzLCB7IExhYmVsLCBCdXR0b24gYXMgRENMQnV0dG9uLCBVaUVudGl0eSwgUmVhY3RCYXNlZFVpU3lzdGVtIH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnO1xuaW1wb3J0IHsgRW50aXR5LCBJRW5naW5lLCBQb2ludGVyRXZlbnRzU3lzdGVtIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cywgR2V0UGxheWVyRGF0YVJlcywgSVBsYXllcnNIZWxwZXIsIElTREtIZWxwZXJzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgZ2V0U2NhbGVVSUZhY3RvciB9IGZyb20gJy4uL3VpJztcbmltcG9ydCB7IFZpZGVvQ29udHJvbCB9IGZyb20gJy4vVmlkZW9Db250cm9sJztcbmltcG9ydCB7IFRleHRBbm5vdW5jZW1lbnRzQ29udHJvbCB9IGZyb20gJy4vVGV4dEFubm91bmNlbWVudHNDb250cm9sJztcbmltcG9ydCB7IFNtYXJ0SXRlbXNDb250cm9sIH0gZnJvbSAnLi9TbWFydEl0ZW1zQ29udHJvbCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBUZXh0QW5ub3VuY2VtZW50cyB9IGZyb20gJy4vVGV4dEFubm91bmNlbWVudHMnO1xuaW1wb3J0IHsgQ09OVEVOVF9VUkwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTdGF0ZSwgVGFiVHlwZSwgU2VsZWN0ZWRTbWFydEl0ZW0gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIEJUTl9NT0RFUkFUSU9OX0NPTlRST0wsXG4gIE1vZGVyYXRpb25Db250cm9sLFxuICBtb2RlcmF0aW9uQ29udHJvbFN0YXRlLFxuICBTY2VuZUFkbWluLFxufSBmcm9tICcuL01vZGVyYXRpb25Db250cm9sJztcbmltcG9ydCB7IGdldFNjZW5lQWRtaW5zLCBnZXRTY2VuZUJhbnMsIFNjZW5lQmFuVXNlciB9IGZyb20gJy4vTW9kZXJhdGlvbkNvbnRyb2wvYXBpJztcbmltcG9ydCB7IE1vZGFsVXNlckxpc3QsIFVzZXJMaXN0VHlwZSB9IGZyb20gJy4vTW9kZXJhdGlvbkNvbnRyb2wvVXNlcnNMaXN0JztcbmltcG9ydCB7IGlzUHJldmlldyB9IGZyb20gJy4vZmV0Y2gtdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgbmV4dFRpY2tGdW5jdGlvbnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG5leHBvcnQgbGV0IHNjYWxlRmFjdG9yOiBudW1iZXI7XG5cbmV4cG9ydCBsZXQgc3RhdGU6IFN0YXRlID0ge1xuICBhZG1pblRvb2xraXRVaUVudGl0eTogMCBhcyBFbnRpdHksXG4gIHBhbmVsT3BlbjogZmFsc2UsXG4gIGFjdGl2ZVRhYjogVGFiVHlwZS5OT05FLFxuICB2aWRlb0NvbnRyb2w6IHtcbiAgICBzZWxlY3RlZFZpZGVvUGxheWVyOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWRTdHJlYW06IHVuZGVmaW5lZCxcbiAgICBkY2xDYXN0OiB1bmRlZmluZWQsXG4gIH0sXG4gIHNtYXJ0SXRlbXNDb250cm9sOiB7XG4gICAgc2VsZWN0ZWRTbWFydEl0ZW06IHVuZGVmaW5lZCxcbiAgICBzbWFydEl0ZW1zOiBuZXcgTWFwPEVudGl0eSwgU2VsZWN0ZWRTbWFydEl0ZW0+KCksXG4gIH0sXG4gIHRleHRBbm5vdW5jZW1lbnRDb250cm9sOiB7XG4gICAgZW50aXR5OiB1bmRlZmluZWQsXG4gICAgdGV4dDogdW5kZWZpbmVkLFxuICAgIG1lc3NhZ2VSYXRlVHJhY2tlcjogbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSxcbiAgICBhbm5vdW5jZW1lbnRzOiBbXSxcbiAgICBtYXhBbm5vdW5jZW1lbnRzOiA0LFxuICB9LFxuICByZXdhcmRzQ29udHJvbDoge1xuICAgIHNlbGVjdGVkUmV3YXJkSXRlbTogdW5kZWZpbmVkLFxuICB9LFxufTtcblxubGV0IHNjZW5lQWRtaW5zQ2FjaGU6IFNjZW5lQWRtaW5bXSA9IFtdO1xubGV0IHNjZW5lQmFuc0NhY2hlOiBTY2VuZUJhblVzZXJbXSA9IFtdO1xuXG4vLyBjb25zdCBCVE5fUkVXQVJEU19DT05UUk9MID0gYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2FkbWluLXBhbmVsLXJld2FyZHMtY29udHJvbC1idXR0b24ucG5nYFxuLy8gY29uc3QgQlROX1JFV0FSRFNfQ09OVFJPTF9BQ1RJVkUgPSBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvYWRtaW4tcGFuZWwtcmV3YXJkcy1jb250cm9sLWFjdGl2ZS1idXR0b24ucG5nYFxuXG5jb25zdCBCVE5fVklERU9fQ09OVFJPTCA9IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9hZG1pbi1wYW5lbC12aWRlby1jb250cm9sLWJ1dHRvbi5wbmdgO1xuXG5jb25zdCBCVE5fU01BUlRfSVRFTV9DT05UUk9MID0gYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2FkbWluLXBhbmVsLXNtYXJ0LWl0ZW0tY29udHJvbC1idXR0b24ucG5nYDtcblxuY29uc3QgQlROX1RFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0wgPSBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvYWRtaW4tcGFuZWwtdGV4dC1hbm5vdW5jZW1lbnQtY29udHJvbC1idXR0b24ucG5nYDtcblxuY29uc3QgQlROX0FETUlOX1RPT0xLSVRfQ09OVFJPTCA9IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9hZG1pbi1wYW5lbC1jb250cm9sLWJ1dHRvbi5wbmdgO1xuY29uc3QgQlROX0FETUlOX1RPT0xLSVRfQkFDS0dST1VORCA9IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9iYWNrZ3JvdW5kcy9hZG1pbi10b29sLWJhY2tncm91bmQucG5nYDtcblxuZXhwb3J0IGNvbnN0IGNvbnRhaW5lckJhY2tncm91bmRDb2xvciA9IENvbG9yNC5jcmVhdGUoMCwgMCwgMCwgMC43NSk7XG5cbi8vIFRoZSBlZGl0b3Igc3RhcnRzIHVzaW5nIGVudGl0aWVzIGZyb20gWzgwMDFdLlxuY29uc3QgQURNSU5fVE9PTFNfRU5USVRZID0gODAwMCBhcyBFbnRpdHk7XG5cbmZ1bmN0aW9uIGdldEFkbWluVG9vbGtpdEVudGl0eShlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgeyBBZG1pblRvb2xzIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSk7XG4gIHJldHVybiBBcnJheS5mcm9tKGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoQWRtaW5Ub29scykpWzBdWzBdO1xufVxuXG5mdW5jdGlvbiBnZXRBZG1pblRvb2xraXRDb21wb25lbnQoZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IHsgQWRtaW5Ub29scyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuICByZXR1cm4gQXJyYXkuZnJvbShlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKEFkbWluVG9vbHMpKVswXVsxXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoU2NlbmVBZG1pbnMoKSB7XG4gIGNvbnN0IFtlcnJvciwgcmVzcG9uc2VdID0gYXdhaXQgZ2V0U2NlbmVBZG1pbnMoKTtcblxuICBpZiAoZXJyb3IpIHtcbiAgICAvLyB1c2VyIGRvZXNudCBoYXZlIHBlcm1pc3Npb25zXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBlcnJvciB9KSk7XG4gICAgc2NlbmVBZG1pbnNDYWNoZSA9IFtdO1xuICAgIHJldHVybjtcbiAgfVxuICBzY2VuZUFkbWluc0NhY2hlID0gKHJlc3BvbnNlID8/IFtdKVxuICAgIC5tYXAoJCA9PiAoe1xuICAgICAgbmFtZTogJC5uYW1lLFxuICAgICAgYWRkcmVzczogJC5hZG1pbixcbiAgICAgIHJvbGU6ICdhZG1pbicgYXMgY29uc3QsXG4gICAgICB2ZXJpZmllZDogISQubmFtZS5pbmNsdWRlcygnIycpLFxuICAgICAgY2FuQmVSZW1vdmVkOiAhISQuY2FuQmVSZW1vdmVkLFxuICAgIH0pKVxuICAgIC5zb3J0KGEgPT4gKGEuY2FuQmVSZW1vdmVkID8gMSA6IC0xKSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFNjZW5lQmFucygpIHtcbiAgY29uc3QgW2Vycm9yLCByZXNwb25zZV0gPSBhd2FpdCBnZXRTY2VuZUJhbnMoKTtcblxuICBpZiAoZXJyb3IpIHtcbiAgICBzY2VuZUJhbnNDYWNoZSA9IFtdO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNjZW5lQmFuc0NhY2hlID0gcmVzcG9uc2U/LnJlc3VsdHMgPz8gW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclNjZW5lQmFuc0NhY2hlKCkge1xuICBzY2VuZUJhbnNDYWNoZSA9IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U21hcnRJdGVtcyhlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgYWRtaW5Ub29sa2l0Q29tcG9uZW50ID0gZ2V0QWRtaW5Ub29sa2l0Q29tcG9uZW50KGVuZ2luZSk7XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oYWRtaW5Ub29sa2l0Q29tcG9uZW50LnNtYXJ0SXRlbXNDb250cm9sLnNtYXJ0SXRlbXMgPz8gW10pO1xufVxuXG5mdW5jdGlvbiBnZXRSZXdhcmRzKGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCBhZG1pblRvb2xraXRDb21wb25lbnQgPSBnZXRBZG1pblRvb2xraXRDb21wb25lbnQoZW5naW5lKTtcblxuICByZXR1cm4gQXJyYXkuZnJvbShhZG1pblRvb2xraXRDb21wb25lbnQ/LnJld2FyZHNDb250cm9sPy5yZXdhcmRJdGVtcyA/PyBbXSk7XG59XG5cbmZ1bmN0aW9uIGluaXRUZXh0QW5ub3VuY2VtZW50U3luYyhlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgeyBUZXh0QW5ub3VuY2VtZW50cyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuXG4gIFRleHRBbm5vdW5jZW1lbnRzLmNyZWF0ZU9yUmVwbGFjZShzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSwge1xuICAgIHRleHQ6ICcnLFxuICAgIGF1dGhvcjogJycsXG4gICAgaWQ6ICcnLFxuICB9KTtcbn1cblxuLy8gSW5pdGlhbGl6ZSBhZG1pbiBkYXRhIGJlZm9yZSBVSSByZW5kZXJpbmdcbmxldCBhZG1pbkRhdGFJbml0aWFsaXplZCA9IGZhbHNlO1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemVBZG1pbkRhdGEoZW5naW5lOiBJRW5naW5lLCBzZGtIZWxwZXJzPzogSVNES0hlbHBlcnMpIHtcbiAgaWYgKCFhZG1pbkRhdGFJbml0aWFsaXplZCkge1xuICAgIGNvbnN0IHsgVGV4dEFubm91bmNlbWVudHMsIFZpZGVvQ29udHJvbFN0YXRlIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSk7XG5cbiAgICAvLyBJbml0aWFsaXplIEFkbWluVG9vbGtpdFVpRW50aXR5XG4gICAgc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkgPSBnZXRBZG1pblRvb2xraXRFbnRpdHkoZW5naW5lKSA/PyBlbmdpbmUuYWRkRW50aXR5KCk7XG5cbiAgICAvLyBJbml0aWFsaXplIFRleHRBbm5vdW5jZW1lbnRzIHN5bmMgY29tcG9uZW50XG4gICAgaW5pdFRleHRBbm5vdW5jZW1lbnRTeW5jKGVuZ2luZSk7XG5cbiAgICAvLyAvLyBJbml0aWFsaXplIFJld2FyZHMgc3luY1xuICAgIC8vIGluaXRSZXdhcmRzU3luYyhlbmdpbmUsIHNka0hlbHBlcnMpXG5cbiAgICBpZiAoIVZpZGVvQ29udHJvbFN0YXRlLmdldE9yTnVsbChzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSkpIHtcbiAgICAgIFZpZGVvQ29udHJvbFN0YXRlLmNyZWF0ZShzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSk7XG4gICAgfVxuXG4gICAgc2RrSGVscGVycz8uc3luY0VudGl0eT8uKFxuICAgICAgc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHksXG4gICAgICBbVmlkZW9Db250cm9sU3RhdGUuY29tcG9uZW50SWQsIFRleHRBbm5vdW5jZW1lbnRzLmNvbXBvbmVudElkXSxcbiAgICAgIEFETUlOX1RPT0xTX0VOVElUWSxcbiAgICApO1xuXG4gICAgZW5naW5lLmFkZFN5c3RlbSgoKSA9PiB7XG4gICAgICBpZiAobmV4dFRpY2tGdW5jdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBuZXh0VGljayA9IG5leHRUaWNrRnVuY3Rpb25zLnNoaWZ0KCk7XG4gICAgICAgIGlmIChuZXh0VGljaykge1xuICAgICAgICAgIG5leHRUaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBzY2VuZSBkYXRhXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW2ZldGNoU2NlbmVBZG1pbnMoKSwgZmV0Y2hTY2VuZUJhbnMoKV0pO1xuXG4gICAgYWRtaW5EYXRhSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgY29uc29sZS5sb2coJ2luaXRpYWxpemVBZG1pbkRhdGEgLSBpbml0aWFsaXplZCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZG1pblRvb2xraXRVSShcbiAgZW5naW5lOiBJRW5naW5lLFxuICBwb2ludGVyRXZlbnRzU3lzdGVtOiBQb2ludGVyRXZlbnRzU3lzdGVtLFxuICByZWFjdEJhc2VkVWlTeXN0ZW06IFJlYWN0QmFzZWRVaVN5c3RlbSxcbiAgc2RrSGVscGVycz86IElTREtIZWxwZXJzLFxuICBwbGF5ZXJzSGVscGVyPzogSVBsYXllcnNIZWxwZXIsXG4pIHtcbiAgLy8gSW5pdGlhbGl6ZSBhZG1pbiBkYXRhIGJlZm9yZSBzZXR0aW5nIHVwIHRoZSBVSVxuICBpbml0aWFsaXplQWRtaW5EYXRhKGVuZ2luZSwgc2RrSGVscGVycykudGhlbigoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2NyZWF0ZUFkbWluVG9vbGtpdFVJIC0gaW5pdGlhbGl6ZWQnKTtcbiAgICByZWFjdEJhc2VkVWlTeXN0ZW0uc2V0VWlSZW5kZXJlcigoKSA9PlxuICAgICAgdWlDb21wb25lbnQoZW5naW5lLCBwb2ludGVyRXZlbnRzU3lzdGVtLCBzZGtIZWxwZXJzLCBwbGF5ZXJzSGVscGVyKSxcbiAgICApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaXNBbGxvd2VkQWRtaW4oXG4gIF9lbmdpbmU6IElFbmdpbmUsXG4gIGFkbWluVG9vbGtpdEVudGl0aWU6IFJldHVyblR5cGU8dHlwZW9mIGdldEFkbWluVG9vbGtpdENvbXBvbmVudD4sXG4gIHBsYXllcjogR2V0UGxheWVyRGF0YVJlcyB8IG51bGwgfCB1bmRlZmluZWQsXG4pIHtcbiAgaWYgKCFwbGF5ZXIpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBwbGF5ZXJBZGRyZXNzID0gcGxheWVyLnVzZXJJZC50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBpc0FkbWluID0gc2NlbmVBZG1pbnNDYWNoZS5maW5kKCQgPT4gJC5hZGRyZXNzID09PSBwbGF5ZXJBZGRyZXNzKTtcblxuICByZXR1cm4gaXNBZG1pbiB8fCBpc1ByZXZpZXcoKTtcbn1cblxuY29uc3QgdWlDb21wb25lbnQgPSAoXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgcG9pbnRlckV2ZW50c1N5c3RlbTogUG9pbnRlckV2ZW50c1N5c3RlbSxcbiAgc2RrSGVscGVycz86IElTREtIZWxwZXJzLFxuICBwbGF5ZXJzSGVscGVyPzogSVBsYXllcnNIZWxwZXIsXG4pID0+IHtcbiAgY29uc3QgYWRtaW5Ub29sa2l0RW50aXR5ID0gZ2V0QWRtaW5Ub29sa2l0Q29tcG9uZW50KGVuZ2luZSk7XG4gIGNvbnN0IHBsYXllciA9IHBsYXllcnNIZWxwZXI/LmdldFBsYXllcigpO1xuICBjb25zdCBpc1BsYXllckFkbWluID0gaXNBbGxvd2VkQWRtaW4oZW5naW5lLCBhZG1pblRvb2xraXRFbnRpdHksIHBsYXllcik7XG4gIHNjYWxlRmFjdG9yID0gZ2V0U2NhbGVVSUZhY3RvcihlbmdpbmUpO1xuXG4gIHJldHVybiBbXG4gICAgPFVpRW50aXR5XG4gICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICBwb3NpdGlvblR5cGU6ICdhYnNvbHV0ZScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7aXNQbGF5ZXJBZG1pbiA/IChcbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgIHBvc2l0aW9uVHlwZTogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgICAgcG9zaXRpb246IHsgdG9wOiAxMjAgKiBzY2FsZUZhY3RvciwgcmlnaHQ6IDEwICogc2NhbGVGYWN0b3IgfSxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiBzdGF0ZS5wYW5lbE9wZW4gPyAnZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgIHdpZHRoOiA1MDAgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgcG9pbnRlckZpbHRlcjogJ2Jsb2NrJyxcbiAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogMTIgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICAgICAgICBsZWZ0OiAxMiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgICAgcmlnaHQ6IDEyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBjb250YWluZXJCYWNrZ3JvdW5kQ29sb3IgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJBRE1JTiBUT09MU1wiXG4gICAgICAgICAgICAgICAgZm9udFNpemU9ezIwICogc2NhbGVGYWN0b3J9XG4gICAgICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5jcmVhdGUoMTYwLCAxNTUsIDE2OCwgMSl9XG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgZmxleEdyb3c6IDEgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiYWRtaW5fdG9vbGtpdF9tb2RlcmF0aW9uX2NvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9e3N0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5NT0RFUkFUSU9OX0NPTlRST0wgPyAncHJpbWFyeScgOiAndGV4dCd9XG4gICAgICAgICAgICAgICAgaWNvbj17QlROX01PREVSQVRJT05fQ09OVFJPTH1cbiAgICAgICAgICAgICAgICBvbmx5SWNvblxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OlxuICAgICAgICAgICAgICAgICAgICBhZG1pblRvb2xraXRFbnRpdHkubW9kZXJhdGlvbkNvbnRyb2wuaXNFbmFibGVkICYmICFpc1ByZXZpZXcoKVxuICAgICAgICAgICAgICAgICAgICAgID8gJ2ZsZXgnXG4gICAgICAgICAgICAgICAgICAgICAgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogNDkgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogNDIgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGljb25CYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLk1PREVSQVRJT05fQ09OVFJPTFxuICAgICAgICAgICAgICAgICAgICAgID8gQ29sb3I0LkJsYWNrKClcbiAgICAgICAgICAgICAgICAgICAgICA6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaWNvblRyYW5zZm9ybT17eyBoZWlnaHQ6ICcxMDAlJywgd2lkdGg6ICcxMDAlJyB9fVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuYWN0aXZlVGFiICE9PSBUYWJUeXBlLk1PREVSQVRJT05fQ09OVFJPTCkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLk5PTkU7XG4gICAgICAgICAgICAgICAgICAgIG5leHRUaWNrRnVuY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9IFRhYlR5cGUuTU9ERVJBVElPTl9DT05UUk9MO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9IFRhYlR5cGUuTk9ORTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJhZG1pbl90b29sa2l0X3BhbmVsX3ZpZGVvX2NvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9e3N0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5WSURFT19DT05UUk9MID8gJ3ByaW1hcnknIDogJ3RleHQnfVxuICAgICAgICAgICAgICAgIGljb249e0JUTl9WSURFT19DT05UUk9MfVxuICAgICAgICAgICAgICAgIGljb25CYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlZJREVPX0NPTlRST0wgPyBDb2xvcjQuQmxhY2soKSA6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25seUljb25cbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgZGlzcGxheTogYWRtaW5Ub29sa2l0RW50aXR5LnZpZGVvQ29udHJvbC5pc0VuYWJsZWQgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogNDkgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogNDIgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuYWN0aXZlVGFiICE9PSBUYWJUeXBlLlZJREVPX0NPTlRST0wpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5OT05FO1xuICAgICAgICAgICAgICAgICAgICBuZXh0VGlja0Z1bmN0aW9ucy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLlZJREVPX0NPTlRST0w7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5OT05FO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImFkbWluX3Rvb2xraXRfcGFuZWxfc21hcnRfaXRlbXNfY29udHJvbFwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD17c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlNNQVJUX0lURU1TX0NPTlRST0wgPyAncHJpbWFyeScgOiAndGV4dCd9XG4gICAgICAgICAgICAgICAgaWNvbj17QlROX1NNQVJUX0lURU1fQ09OVFJPTH1cbiAgICAgICAgICAgICAgICBpY29uQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgICAgY29sb3I6XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5TTUFSVF9JVEVNU19DT05UUk9MXG4gICAgICAgICAgICAgICAgICAgICAgPyBDb2xvcjQuQmxhY2soKVxuICAgICAgICAgICAgICAgICAgICAgIDogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBvbmx5SWNvblxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBhZG1pblRvb2xraXRFbnRpdHkuc21hcnRJdGVtc0NvbnRyb2wuaXNFbmFibGVkID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6IDQ5ICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggKiBzY2FsZUZhY3RvciB9LFxuICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBpY29uVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmFjdGl2ZVRhYiAhPT0gVGFiVHlwZS5TTUFSVF9JVEVNU19DT05UUk9MKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9IFRhYlR5cGUuTk9ORTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFRpY2tGdW5jdGlvbnMucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5TTUFSVF9JVEVNU19DT05UUk9MO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9IFRhYlR5cGUuTk9ORTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJhZG1pbl90b29sa2l0X3BhbmVsX3RleHRfYW5ub3VuY2VtZW50X2NvbnRyb2xcIlxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9e3N0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5URVhUX0FOTk9VTkNFTUVOVF9DT05UUk9MID8gJ3ByaW1hcnknIDogJ3RleHQnfVxuICAgICAgICAgICAgICAgIGljb249e0JUTl9URVhUX0FOTk9VTkNFTUVOVF9DT05UUk9MfVxuICAgICAgICAgICAgICAgIGljb25CYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0xcbiAgICAgICAgICAgICAgICAgICAgICA/IENvbG9yNC5CbGFjaygpXG4gICAgICAgICAgICAgICAgICAgICAgOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9ubHlJY29uXG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGFkbWluVG9vbGtpdEVudGl0eS50ZXh0QW5ub3VuY2VtZW50Q29udHJvbC5pc0VuYWJsZWQgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogNDkgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogNDIgKiBzY2FsZUZhY3RvcixcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCAqIHNjYWxlRmFjdG9yIH0sXG4gICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuYWN0aXZlVGFiICE9PSBUYWJUeXBlLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0wpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5OT05FO1xuICAgICAgICAgICAgICAgICAgICBuZXh0VGlja0Z1bmN0aW9ucy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0w7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5OT05FO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgICAge3N0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5URVhUX0FOTk9VTkNFTUVOVF9DT05UUk9MID8gKFxuICAgICAgICAgICAgICA8VGV4dEFubm91bmNlbWVudHNDb250cm9sXG4gICAgICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgICAgICAgIHBsYXllcj17cGxheWVyfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlZJREVPX0NPTlRST0wgPyAoXG4gICAgICAgICAgICAgIDxWaWRlb0NvbnRyb2xcbiAgICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgICBzdGF0ZT17c3RhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuU01BUlRfSVRFTVNfQ09OVFJPTCA/IChcbiAgICAgICAgICAgICAgPFNtYXJ0SXRlbXNDb250cm9sXG4gICAgICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLk1PREVSQVRJT05fQ09OVFJPTCAmJiAoXG4gICAgICAgICAgICAgIDxNb2RlcmF0aW9uQ29udHJvbFxuICAgICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICAgIHBsYXllcj17cGxheWVyfVxuICAgICAgICAgICAgICAgIHNjZW5lQWRtaW5zPXtzY2VuZUFkbWluc0NhY2hlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDQyICogc2NhbGVGYWN0b3IsXG4gICAgICAgICAgICAgIHdpZHRoOiA0MiAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgYWxpZ25Db250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBwb2ludGVyRmlsdGVyOiAnYmxvY2snLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgc3JjOiBCVE5fQURNSU5fVE9PTEtJVF9CQUNLR1JPVU5ELFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LmNyZWF0ZSgxLCAxLCAxLCAxKSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPERDTEJ1dHRvblxuICAgICAgICAgICAgICB2YWx1ZT1cIlwiXG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgIHdpZHRoOiA0MCAqIHNjYWxlRmFjdG9yLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGFsaWduQ29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgICBzcmM6IEJUTl9BRE1JTl9UT09MS0lUX0NPTlRST0wsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuY3JlYXRlKDEsIDEsIDEsIDEpLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhbmVsT3BlbiA9ICFzdGF0ZS5wYW5lbE9wZW47XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxUZXh0QW5ub3VuY2VtZW50c1xuICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgLz5cbiAgICA8L1VpRW50aXR5PixcbiAgICBtb2RlcmF0aW9uQ29udHJvbFN0YXRlLnNob3dNb2RhbEFkbWluTGlzdCAmJiAoXG4gICAgICA8TW9kYWxVc2VyTGlzdFxuICAgICAgICBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9XG4gICAgICAgIHVzZXJzPXtzY2VuZUFkbWluc0NhY2hlID8/IFtdfVxuICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgdHlwZT17VXNlckxpc3RUeXBlLkFETUlOfVxuICAgICAgLz5cbiAgICApLFxuICAgIG1vZGVyYXRpb25Db250cm9sU3RhdGUuc2hvd01vZGFsQmFuTGlzdCAmJiAoXG4gICAgICA8TW9kYWxVc2VyTGlzdFxuICAgICAgICBzY2FsZUZhY3Rvcj17c2NhbGVGYWN0b3J9XG4gICAgICAgIHVzZXJzPXtzY2VuZUJhbnNDYWNoZSA/PyBbXX1cbiAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgIHR5cGU9e1VzZXJMaXN0VHlwZS5CQU59XG4gICAgICAvPlxuICAgICksXG4gIF07XG59O1xuIl19
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksU0FBUyxFQUFFLFFBQVEsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRyxPQUFPLEVBQUUsYUFBYSxFQUFpRCxNQUFNLGdCQUFnQixDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFTLE9BQU8sRUFBcUIsTUFBTSxTQUFTLENBQUM7QUFDNUQsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsc0JBQXNCLEdBRXZCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQWdCLE1BQU0seUJBQXlCLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFtQixFQUFFLENBQUM7QUFDcEQsTUFBTSw2QkFBNkIsR0FBRyxFQUFFLFlBQVksRUFBRSxJQUFJLEVB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QUk7WUFDUix1QkFBQyxpQkFBaUIsSUFDaEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxLQUFLLEVBQUUsS0FBSyxHQUNaLENBQ087UUFDWCxzQkFBc0IsQ0FBQyxrQkFBa0IsSUFBSSxDQUMzQyx1QkFBQyxhQUFhLElBQ1osS0FBSyxFQUFFLGdCQUFnQixJQUFJLEVBQUUsRUFDN0IsTUFBTSxFQUFFLE1BQU0sRUFDZCxJQUFJLEVBQUUsWUFBWSxDQUFDLEtBQUssR0FDeEIsQ0FDSDtRQUNELHNCQUFzQixDQUFDLGdCQUFnQixJQUFJLENBQ3pDLHVCQUFDLGFBQWEsSUFDWixLQUFLLEVBQUUsY0FBYyxJQUFJLEVBQUUsRUFDM0IsTUFBTSxFQUFFLE1BQU0sRUFDZCxJQUFJLEVBQUUsWUFBWSxDQUFDLEdBQUcsR0FDdEIsQ0FDSDtLQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL3Nkay9tYXRoJztcbmltcG9ydCBSZWFjdEVjcywgeyBMYWJlbCwgQnV0dG9uIGFzIERDTEJ1dHRvbiwgVWlFbnRpdHksIFJlYWN0QmFzZWRVaVN5c3RlbSB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IEVudGl0eSwgSUVuZ2luZSwgUG9pbnRlckV2ZW50c1N5c3RlbSB9IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB7IGdldENvbXBvbmVudHMsIEdldFBsYXllckRhdGFSZXMsIElQbGF5ZXJzSGVscGVyLCBJU0RLSGVscGVycyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IFZpZGVvQ29udHJvbCB9IGZyb20gJy4vVmlkZW9Db250cm9sJztcbmltcG9ydCB7IFRleHRBbm5vdW5jZW1lbnRzQ29udHJvbCB9IGZyb20gJy4vVGV4dEFubm91bmNlbWVudHNDb250cm9sJztcbmltcG9ydCB7IFNtYXJ0SXRlbXNDb250cm9sIH0gZnJvbSAnLi9TbWFydEl0ZW1zQ29udHJvbCc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgeyBUZXh0QW5ub3VuY2VtZW50cyB9IGZyb20gJy4vVGV4dEFubm91bmNlbWVudHMnO1xuaW1wb3J0IHsgQ09OVEVOVF9VUkwgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTdGF0ZSwgVGFiVHlwZSwgU2VsZWN0ZWRTbWFydEl0ZW0gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIEJUTl9NT0RFUkFUSU9OX0NPTlRST0wsXG4gIE1vZGVyYXRpb25Db250cm9sLFxuICBtb2RlcmF0aW9uQ29udHJvbFN0YXRlLFxuICBTY2VuZUFkbWluLFxufSBmcm9tICcuL01vZGVyYXRpb25Db250cm9sJztcbmltcG9ydCB7IGdldFNjZW5lQWRtaW5zLCBnZXRTY2VuZUJhbnMsIFNjZW5lQmFuVXNlciB9IGZyb20gJy4vTW9kZXJhdGlvbkNvbnRyb2wvYXBpJztcbmltcG9ydCB7IE1vZGFsVXNlckxpc3QsIFVzZXJMaXN0VHlwZSB9IGZyb20gJy4vTW9kZXJhdGlvbkNvbnRyb2wvVXNlcnNMaXN0JztcbmltcG9ydCB7IGlzUHJldmlldyB9IGZyb20gJy4vZmV0Y2gtdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgbmV4dFRpY2tGdW5jdGlvbnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG5jb25zdCBBRE1JTl9UT09MS0lUX1ZJUlRVQUxfVUlfU0laRSA9IHsgdmlydHVhbFdpZHRoOiAxOTIwLCB2aXJ0dWFsSGVpZ2h0OiAxMDgwIH07XG5cbmV4cG9ydCBsZXQgc3RhdGU6IFN0YXRlID0ge1xuICBhZG1pblRvb2xraXRVaUVudGl0eTogMCBhcyBFbnRpdHksXG4gIHBhbmVsT3BlbjogZmFsc2UsXG4gIGFjdGl2ZVRhYjogVGFiVHlwZS5OT05FLFxuICB2aWRlb0NvbnRyb2w6IHtcbiAgICBzZWxlY3RlZFZpZGVvUGxheWVyOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWRTdHJlYW06IHVuZGVmaW5lZCxcbiAgICBkY2xDYXN0OiB1bmRlZmluZWQsXG4gIH0sXG4gIHNtYXJ0SXRlbXNDb250cm9sOiB7XG4gICAgc2VsZWN0ZWRTbWFydEl0ZW06IHVuZGVmaW5lZCxcbiAgICBzbWFydEl0ZW1zOiBuZXcgTWFwPEVudGl0eSwgU2VsZWN0ZWRTbWFydEl0ZW0+KCksXG4gIH0sXG4gIHRleHRBbm5vdW5jZW1lbnRDb250cm9sOiB7XG4gICAgZW50aXR5OiB1bmRlZmluZWQsXG4gICAgdGV4dDogdW5kZWZpbmVkLFxuICAgIG1lc3NhZ2VSYXRlVHJhY2tlcjogbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSxcbiAgICBhbm5vdW5jZW1lbnRzOiBbXSxcbiAgICBtYXhBbm5vdW5jZW1lbnRzOiA0LFxuICB9LFxuICByZXdhcmRzQ29udHJvbDoge1xuICAgIHNlbGVjdGVkUmV3YXJkSXRlbTogdW5kZWZpbmVkLFxuICB9LFxufTtcblxubGV0IHNjZW5lQWRtaW5zQ2FjaGU6IFNjZW5lQWRtaW5bXSA9IFtdO1xubGV0IHNjZW5lQmFuc0NhY2hlOiBTY2VuZUJhblVzZXJbXSA9IFtdO1xuXG4vLyBjb25zdCBCVE5fUkVXQVJEU19DT05UUk9MID0gYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2FkbWluLXBhbmVsLXJld2FyZHMtY29udHJvbC1idXR0b24ucG5nYFxuLy8gY29uc3QgQlROX1JFV0FSRFNfQ09OVFJPTF9BQ1RJVkUgPSBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvYWRtaW4tcGFuZWwtcmV3YXJkcy1jb250cm9sLWFjdGl2ZS1idXR0b24ucG5nYFxuXG5jb25zdCBCVE5fVklERU9fQ09OVFJPTCA9IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9hZG1pbi1wYW5lbC12aWRlby1jb250cm9sLWJ1dHRvbi5wbmdgO1xuXG5jb25zdCBCVE5fU01BUlRfSVRFTV9DT05UUk9MID0gYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2FkbWluLXBhbmVsLXNtYXJ0LWl0ZW0tY29udHJvbC1idXR0b24ucG5nYDtcblxuY29uc3QgQlROX1RFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0wgPSBgJHtDT05URU5UX1VSTH0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvYWRtaW4tcGFuZWwtdGV4dC1hbm5vdW5jZW1lbnQtY29udHJvbC1idXR0b24ucG5nYDtcblxuY29uc3QgQlROX0FETUlOX1RPT0xLSVRfQ09OVFJPTCA9IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9hZG1pbi1wYW5lbC1jb250cm9sLWJ1dHRvbi5wbmdgO1xuY29uc3QgQlROX0FETUlOX1RPT0xLSVRfQkFDS0dST1VORCA9IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9iYWNrZ3JvdW5kcy9hZG1pbi10b29sLWJhY2tncm91bmQucG5nYDtcblxuZXhwb3J0IGNvbnN0IGNvbnRhaW5lckJhY2tncm91bmRDb2xvciA9IENvbG9yNC5jcmVhdGUoMCwgMCwgMCwgMC43NSk7XG5cbi8vIFRoZSBlZGl0b3Igc3RhcnRzIHVzaW5nIGVudGl0aWVzIGZyb20gWzgwMDFdLlxuY29uc3QgQURNSU5fVE9PTFNfRU5USVRZID0gODAwMCBhcyBFbnRpdHk7XG5cbmZ1bmN0aW9uIGdldEFkbWluVG9vbGtpdEVudGl0eShlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgeyBBZG1pblRvb2xzIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSk7XG4gIHJldHVybiBBcnJheS5mcm9tKGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoQWRtaW5Ub29scykpWzBdWzBdO1xufVxuXG5mdW5jdGlvbiBnZXRBZG1pblRvb2xraXRDb21wb25lbnQoZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IHsgQWRtaW5Ub29scyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuICByZXR1cm4gQXJyYXkuZnJvbShlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKEFkbWluVG9vbHMpKVswXVsxXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoU2NlbmVBZG1pbnMoKSB7XG4gIGNvbnN0IFtlcnJvciwgcmVzcG9uc2VdID0gYXdhaXQgZ2V0U2NlbmVBZG1pbnMoKTtcblxuICBpZiAoZXJyb3IpIHtcbiAgICAvLyB1c2VyIGRvZXNudCBoYXZlIHBlcm1pc3Npb25zXG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBlcnJvciB9KSk7XG4gICAgc2NlbmVBZG1pbnNDYWNoZSA9IFtdO1xuICAgIHJldHVybjtcbiAgfVxuICBzY2VuZUFkbWluc0NhY2hlID0gKHJlc3BvbnNlID8/IFtdKVxuICAgIC5tYXAoJCA9PiAoe1xuICAgICAgbmFtZTogJC5uYW1lLFxuICAgICAgYWRkcmVzczogJC5hZG1pbixcbiAgICAgIHJvbGU6ICdhZG1pbicgYXMgY29uc3QsXG4gICAgICB2ZXJpZmllZDogISQubmFtZS5pbmNsdWRlcygnIycpLFxuICAgICAgY2FuQmVSZW1vdmVkOiAhISQuY2FuQmVSZW1vdmVkLFxuICAgIH0pKVxuICAgIC5zb3J0KGEgPT4gKGEuY2FuQmVSZW1vdmVkID8gMSA6IC0xKSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFNjZW5lQmFucygpIHtcbiAgY29uc3QgW2Vycm9yLCByZXNwb25zZV0gPSBhd2FpdCBnZXRTY2VuZUJhbnMoKTtcblxuICBpZiAoZXJyb3IpIHtcbiAgICBzY2VuZUJhbnNDYWNoZSA9IFtdO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHNjZW5lQmFuc0NhY2hlID0gcmVzcG9uc2U/LnJlc3VsdHMgPz8gW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhclNjZW5lQmFuc0NhY2hlKCkge1xuICBzY2VuZUJhbnNDYWNoZSA9IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U21hcnRJdGVtcyhlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgYWRtaW5Ub29sa2l0Q29tcG9uZW50ID0gZ2V0QWRtaW5Ub29sa2l0Q29tcG9uZW50KGVuZ2luZSk7XG5cbiAgcmV0dXJuIEFycmF5LmZyb20oYWRtaW5Ub29sa2l0Q29tcG9uZW50LnNtYXJ0SXRlbXNDb250cm9sLnNtYXJ0SXRlbXMgPz8gW10pO1xufVxuXG5mdW5jdGlvbiBnZXRSZXdhcmRzKGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCBhZG1pblRvb2xraXRDb21wb25lbnQgPSBnZXRBZG1pblRvb2xraXRDb21wb25lbnQoZW5naW5lKTtcblxuICByZXR1cm4gQXJyYXkuZnJvbShhZG1pblRvb2xraXRDb21wb25lbnQ/LnJld2FyZHNDb250cm9sPy5yZXdhcmRJdGVtcyA/PyBbXSk7XG59XG5cbmZ1bmN0aW9uIGluaXRUZXh0QW5ub3VuY2VtZW50U3luYyhlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgeyBUZXh0QW5ub3VuY2VtZW50cyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuXG4gIFRleHRBbm5vdW5jZW1lbnRzLmNyZWF0ZU9yUmVwbGFjZShzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSwge1xuICAgIHRleHQ6ICcnLFxuICAgIGF1dGhvcjogJycsXG4gICAgaWQ6ICcnLFxuICB9KTtcbn1cblxuLy8gSW5pdGlhbGl6ZSBhZG1pbiBkYXRhIGJlZm9yZSBVSSByZW5kZXJpbmdcbmxldCBhZG1pbkRhdGFJbml0aWFsaXplZCA9IGZhbHNlO1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemVBZG1pbkRhdGEoZW5naW5lOiBJRW5naW5lLCBzZGtIZWxwZXJzPzogSVNES0hlbHBlcnMpIHtcbiAgaWYgKCFhZG1pbkRhdGFJbml0aWFsaXplZCkge1xuICAgIGNvbnN0IHsgVGV4dEFubm91bmNlbWVudHMsIFZpZGVvQ29udHJvbFN0YXRlIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSk7XG5cbiAgICAvLyBJbml0aWFsaXplIEFkbWluVG9vbGtpdFVpRW50aXR5XG4gICAgc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkgPSBnZXRBZG1pblRvb2xraXRFbnRpdHkoZW5naW5lKSA/PyBlbmdpbmUuYWRkRW50aXR5KCk7XG5cbiAgICAvLyBJbml0aWFsaXplIFRleHRBbm5vdW5jZW1lbnRzIHN5bmMgY29tcG9uZW50XG4gICAgaW5pdFRleHRBbm5vdW5jZW1lbnRTeW5jKGVuZ2luZSk7XG5cbiAgICAvLyAvLyBJbml0aWFsaXplIFJld2FyZHMgc3luY1xuICAgIC8vIGluaXRSZXdhcmRzU3luYyhlbmdpbmUsIHNka0hlbHBlcnMpXG5cbiAgICBpZiAoIVZpZGVvQ29udHJvbFN0YXRlLmdldE9yTnVsbChzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSkpIHtcbiAgICAgIFZpZGVvQ29udHJvbFN0YXRlLmNyZWF0ZShzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSk7XG4gICAgfVxuXG4gICAgc2RrSGVscGVycz8uc3luY0VudGl0eT8uKFxuICAgICAgc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHksXG4gICAgICBbVmlkZW9Db250cm9sU3RhdGUuY29tcG9uZW50SWQsIFRleHRBbm5vdW5jZW1lbnRzLmNvbXBvbmVudElkXSxcbiAgICAgIEFETUlOX1RPT0xTX0VOVElUWSxcbiAgICApO1xuXG4gICAgZW5naW5lLmFkZFN5c3RlbSgoKSA9PiB7XG4gICAgICBpZiAobmV4dFRpY2tGdW5jdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBuZXh0VGljayA9IG5leHRUaWNrRnVuY3Rpb25zLnNoaWZ0KCk7XG4gICAgICAgIGlmIChuZXh0VGljaykge1xuICAgICAgICAgIG5leHRUaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBzY2VuZSBkYXRhXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW2ZldGNoU2NlbmVBZG1pbnMoKSwgZmV0Y2hTY2VuZUJhbnMoKV0pO1xuXG4gICAgYWRtaW5EYXRhSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgY29uc29sZS5sb2coJ2luaXRpYWxpemVBZG1pbkRhdGEgLSBpbml0aWFsaXplZCcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZG1pblRvb2xraXRVSShcbiAgZW5naW5lOiBJRW5naW5lLFxuICBwb2ludGVyRXZlbnRzU3lzdGVtOiBQb2ludGVyRXZlbnRzU3lzdGVtLFxuICByZWFjdEJhc2VkVWlTeXN0ZW06IFJlYWN0QmFzZWRVaVN5c3RlbSxcbiAgc2RrSGVscGVycz86IElTREtIZWxwZXJzLFxuICBwbGF5ZXJzSGVscGVyPzogSVBsYXllcnNIZWxwZXIsXG4pIHtcbiAgLy8gSW5pdGlhbGl6ZSBhZG1pbiBkYXRhIGJlZm9yZSBzZXR0aW5nIHVwIHRoZSBVSVxuICBpbml0aWFsaXplQWRtaW5EYXRhKGVuZ2luZSwgc2RrSGVscGVycykudGhlbigoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2NyZWF0ZUFkbWluVG9vbGtpdFVJIC0gaW5pdGlhbGl6ZWQnKTtcbiAgICByZWFjdEJhc2VkVWlTeXN0ZW0uc2V0VWlSZW5kZXJlcihcbiAgICAgICgpID0+IHVpQ29tcG9uZW50KGVuZ2luZSwgcG9pbnRlckV2ZW50c1N5c3RlbSwgc2RrSGVscGVycywgcGxheWVyc0hlbHBlciksXG4gICAgICBBRE1JTl9UT09MS0lUX1ZJUlRVQUxfVUlfU0laRSxcbiAgICApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaXNBbGxvd2VkQWRtaW4oXG4gIF9lbmdpbmU6IElFbmdpbmUsXG4gIGFkbWluVG9vbGtpdEVudGl0aWU6IFJldHVyblR5cGU8dHlwZW9mIGdldEFkbWluVG9vbGtpdENvbXBvbmVudD4sXG4gIHBsYXllcjogR2V0UGxheWVyRGF0YVJlcyB8IG51bGwgfCB1bmRlZmluZWQsXG4pIHtcbiAgaWYgKCFwbGF5ZXIpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBwbGF5ZXJBZGRyZXNzID0gcGxheWVyLnVzZXJJZC50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBpc0FkbWluID0gc2NlbmVBZG1pbnNDYWNoZS5maW5kKCQgPT4gJC5hZGRyZXNzID09PSBwbGF5ZXJBZGRyZXNzKTtcblxuICByZXR1cm4gaXNBZG1pbiB8fCBpc1ByZXZpZXcoKTtcbn1cblxuY29uc3QgdWlDb21wb25lbnQgPSAoXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgcG9pbnRlckV2ZW50c1N5c3RlbTogUG9pbnRlckV2ZW50c1N5c3RlbSxcbiAgc2RrSGVscGVycz86IElTREtIZWxwZXJzLFxuICBwbGF5ZXJzSGVscGVyPzogSVBsYXllcnNIZWxwZXIsXG4pID0+IHtcbiAgY29uc3QgYWRtaW5Ub29sa2l0RW50aXR5ID0gZ2V0QWRtaW5Ub29sa2l0Q29tcG9uZW50KGVuZ2luZSk7XG4gIGNvbnN0IHBsYXllciA9IHBsYXllcnNIZWxwZXI/LmdldFBsYXllcigpO1xuICBjb25zdCBpc1BsYXllckFkbWluID0gaXNBbGxvd2VkQWRtaW4oZW5naW5lLCBhZG1pblRvb2xraXRFbnRpdHksIHBsYXllcik7XG5cbiAgcmV0dXJuIFtcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogJ2Fic29sdXRlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtpc1BsYXllckFkbWluID8gKFxuICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgcG9zaXRpb25UeXBlOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICAgICAgICBwb3NpdGlvbjogeyB0b3A6IDEyMCwgcmlnaHQ6IDEwIH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgZGlzcGxheTogc3RhdGUucGFuZWxPcGVuID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgICB3aWR0aDogNTAwLFxuICAgICAgICAgICAgICBwb2ludGVyRmlsdGVyOiAnYmxvY2snLFxuICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiA4IH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1MCxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDEyLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IDEyLFxuICAgICAgICAgICAgICAgICAgcmlnaHQ6IDEyLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogY29udGFpbmVyQmFja2dyb3VuZENvbG9yIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgIHZhbHVlPVwiQURNSU4gVE9PTFNcIlxuICAgICAgICAgICAgICAgIGZvbnRTaXplPXsyMH1cbiAgICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LmNyZWF0ZSgxNjAsIDE1NSwgMTY4LCAxKX1cbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBmbGV4R3JvdzogMSB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJhZG1pbl90b29sa2l0X21vZGVyYXRpb25fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD17c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLk1PREVSQVRJT05fQ09OVFJPTCA/ICdwcmltYXJ5JyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICBpY29uPXtCVE5fTU9ERVJBVElPTl9DT05UUk9MfVxuICAgICAgICAgICAgICAgIG9ubHlJY29uXG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6XG4gICAgICAgICAgICAgICAgICAgIGFkbWluVG9vbGtpdEVudGl0eS5tb2RlcmF0aW9uQ29udHJvbC5pc0VuYWJsZWQgJiYgIWlzUHJldmlldygpXG4gICAgICAgICAgICAgICAgICAgICAgPyAnZmxleCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA0OSxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogNDIsXG4gICAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggfSxcbiAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuTU9ERVJBVElPTl9DT05UUk9MXG4gICAgICAgICAgICAgICAgICAgICAgPyBDb2xvcjQuQmxhY2soKVxuICAgICAgICAgICAgICAgICAgICAgIDogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBpY29uVHJhbnNmb3JtPXt7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH19XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5hY3RpdmVUYWIgIT09IFRhYlR5cGUuTU9ERVJBVElPTl9DT05UUk9MKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9IFRhYlR5cGUuTk9ORTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFRpY2tGdW5jdGlvbnMucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5NT0RFUkFUSU9OX0NPTlRST0w7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5OT05FO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImFkbWluX3Rvb2xraXRfcGFuZWxfdmlkZW9fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD17c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlZJREVPX0NPTlRST0wgPyAncHJpbWFyeScgOiAndGV4dCd9XG4gICAgICAgICAgICAgICAgaWNvbj17QlROX1ZJREVPX0NPTlRST0x9XG4gICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuVklERU9fQ09OVFJPTCA/IENvbG9yNC5CbGFjaygpIDogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBvbmx5SWNvblxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBhZG1pblRvb2xraXRFbnRpdHkudmlkZW9Db250cm9sLmlzRW5hYmxlZCA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA0OSxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogNDIsXG4gICAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggfSxcbiAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaWNvblRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5hY3RpdmVUYWIgIT09IFRhYlR5cGUuVklERU9fQ09OVFJPTCkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLk5PTkU7XG4gICAgICAgICAgICAgICAgICAgIG5leHRUaWNrRnVuY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9IFRhYlR5cGUuVklERU9fQ09OVFJPTDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLk5PTkU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiYWRtaW5fdG9vbGtpdF9wYW5lbF9zbWFydF9pdGVtc19jb250cm9sXCJcbiAgICAgICAgICAgICAgICB2YXJpYW50PXtzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuU01BUlRfSVRFTVNfQ09OVFJPTCA/ICdwcmltYXJ5JyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICBpY29uPXtCVE5fU01BUlRfSVRFTV9DT05UUk9MfVxuICAgICAgICAgICAgICAgIGljb25CYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlNNQVJUX0lURU1TX0NPTlRST0xcbiAgICAgICAgICAgICAgICAgICAgICA/IENvbG9yNC5CbGFjaygpXG4gICAgICAgICAgICAgICAgICAgICAgOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9ubHlJY29uXG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGFkbWluVG9vbGtpdEVudGl0eS5zbWFydEl0ZW1zQ29udHJvbC5pc0VuYWJsZWQgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogNDksXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQyLFxuICAgICAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiA4IH0sXG4gICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuYWN0aXZlVGFiICE9PSBUYWJUeXBlLlNNQVJUX0lURU1TX0NPTlRST0wpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5OT05FO1xuICAgICAgICAgICAgICAgICAgICBuZXh0VGlja0Z1bmN0aW9ucy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLlNNQVJUX0lURU1TX0NPTlRST0w7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5OT05FO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImFkbWluX3Rvb2xraXRfcGFuZWxfdGV4dF9hbm5vdW5jZW1lbnRfY29udHJvbFwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD17c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0wgPyAncHJpbWFyeScgOiAndGV4dCd9XG4gICAgICAgICAgICAgICAgaWNvbj17QlROX1RFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0x9XG4gICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTFxuICAgICAgICAgICAgICAgICAgICAgID8gQ29sb3I0LkJsYWNrKClcbiAgICAgICAgICAgICAgICAgICAgICA6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25seUljb25cbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgZGlzcGxheTogYWRtaW5Ub29sa2l0RW50aXR5LnRleHRBbm5vdW5jZW1lbnRDb250cm9sLmlzRW5hYmxlZCA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA0OSxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogNDIsXG4gICAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggfSxcbiAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaWNvblRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5hY3RpdmVUYWIgIT09IFRhYlR5cGUuVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTCkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLk5PTkU7XG4gICAgICAgICAgICAgICAgICAgIG5leHRUaWNrRnVuY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9IFRhYlR5cGUuVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLk5PTkU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICB7c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0wgPyAoXG4gICAgICAgICAgICAgIDxUZXh0QW5ub3VuY2VtZW50c0NvbnRyb2xcbiAgICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgICBzdGF0ZT17c3RhdGV9XG4gICAgICAgICAgICAgICAgcGxheWVyPXtwbGF5ZXJ9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuVklERU9fQ09OVFJPTCA/IChcbiAgICAgICAgICAgICAgPFZpZGVvQ29udHJvbFxuICAgICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICAgIHN0YXRlPXtzdGF0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge3N0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5TTUFSVF9JVEVNU19DT05UUk9MID8gKFxuICAgICAgICAgICAgICA8U21hcnRJdGVtc0NvbnRyb2xcbiAgICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgICBzdGF0ZT17c3RhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuTU9ERVJBVElPTl9DT05UUk9MICYmIChcbiAgICAgICAgICAgICAgPE1vZGVyYXRpb25Db250cm9sXG4gICAgICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICAgICAgcGxheWVyPXtwbGF5ZXJ9XG4gICAgICAgICAgICAgICAgc2NlbmVBZG1pbnM9e3NjZW5lQWRtaW5zQ2FjaGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGhlaWdodDogNDIsXG4gICAgICAgICAgICAgIHdpZHRoOiA0MixcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGFsaWduQ29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgcG9pbnRlckZpbHRlcjogJ2Jsb2NrJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgdGV4dHVyZToge1xuICAgICAgICAgICAgICAgIHNyYzogQlROX0FETUlOX1RPT0xLSVRfQkFDS0dST1VORCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5jcmVhdGUoMSwgMSwgMSwgMSksXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxEQ0xCdXR0b25cbiAgICAgICAgICAgICAgdmFsdWU9XCJcIlxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIGhlaWdodDogNDAsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDQwLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGFsaWduQ29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgICBzcmM6IEJUTl9BRE1JTl9UT09MS0lUX0NPTlRST0wsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuY3JlYXRlKDEsIDEsIDEsIDEpLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnBhbmVsT3BlbiA9ICFzdGF0ZS5wYW5lbE9wZW47XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxUZXh0QW5ub3VuY2VtZW50c1xuICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgLz5cbiAgICA8L1VpRW50aXR5PixcbiAgICBtb2RlcmF0aW9uQ29udHJvbFN0YXRlLnNob3dNb2RhbEFkbWluTGlzdCAmJiAoXG4gICAgICA8TW9kYWxVc2VyTGlzdFxuICAgICAgICB1c2Vycz17c2NlbmVBZG1pbnNDYWNoZSA/PyBbXX1cbiAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgIHR5cGU9e1VzZXJMaXN0VHlwZS5BRE1JTn1cbiAgICAgIC8+XG4gICAgKSxcbiAgICBtb2RlcmF0aW9uQ29udHJvbFN0YXRlLnNob3dNb2RhbEJhbkxpc3QgJiYgKFxuICAgICAgPE1vZGFsVXNlckxpc3RcbiAgICAgICAgdXNlcnM9e3NjZW5lQmFuc0NhY2hlID8/IFtdfVxuICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgdHlwZT17VXNlckxpc3RUeXBlLkJBTn1cbiAgICAgIC8+XG4gICAgKSxcbiAgXTtcbn07XG4iXX0=