mediasfu-angular 1.0.0 → 1.0.2
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.
- package/LICENSE +21 -0
- package/README.md +194 -192
- package/dist/README.md +194 -192
- package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +37 -1
- package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +51 -1
- package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +49 -1
- package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +1 -2
- package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +25 -19
- package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +60 -1
- package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +21 -1
- package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +36 -1
- package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +39 -1
- package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +25 -41
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +22 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +23 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +24 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +24 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +16 -1
- package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +28 -1
- package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +28 -19
- package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +31 -46
- package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +20 -18
- package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +33 -25
- package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +29 -17
- package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +29 -15
- package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +44 -23
- package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +26 -31
- package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +52 -59
- package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +20 -24
- package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +40 -40
- package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +29 -14
- package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +30 -24
- package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +19 -25
- package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +63 -1
- package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +29 -18
- package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +48 -39
- package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +36 -23
- package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +36 -25
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +54 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +54 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +52 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +52 -3
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +50 -3
- package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +50 -52
- package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +7 -2
- package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +6 -1
- package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +22 -29
- package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +16 -14
- package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +25 -1
- package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +35 -1
- package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +17 -34
- package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +9 -1
- package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +15 -1
- package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +16 -1
- package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +20 -1
- package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +20 -1
- package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +18 -1
- package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +18 -1
- package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +25 -1
- package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +28 -1
- package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +16 -1
- package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +13 -1
- package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +6 -1
- package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +23 -1
- package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +18 -1
- package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +11 -1
- package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +12 -1
- package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +60 -1
- package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +22 -1
- package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +50 -1
- package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +50 -1
- package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +27 -1
- package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +19 -1
- package/dist/esm2022/lib/consumers/change-vids.service.mjs +132 -67
- package/dist/esm2022/lib/consumers/check-grid.service.mjs +33 -19
- package/dist/esm2022/lib/consumers/check-permission.service.mjs +26 -1
- package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +36 -1
- package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +103 -1
- package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +32 -1
- package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +36 -1
- package/dist/esm2022/lib/consumers/connect-ips.service.mjs +43 -1
- package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +39 -1
- package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +41 -1
- package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +45 -1
- package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +55 -1
- package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +37 -1
- package/dist/esm2022/lib/consumers/control-media.service.mjs +46 -1
- package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +47 -1
- package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +40 -1
- package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +46 -1
- package/dist/esm2022/lib/consumers/disp-streams.service.mjs +93 -1
- package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +48 -1
- package/dist/esm2022/lib/consumers/get-estimate.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/get-videos.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/mix-streams.service.mjs +23 -1
- package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +41 -1
- package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +100 -1
- package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +30 -1
- package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +38 -1
- package/dist/esm2022/lib/consumers/re-port.service.mjs +49 -1
- package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +83 -1
- package/dist/esm2022/lib/consumers/readjust.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +32 -1
- package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +28 -1
- package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +59 -1
- package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +35 -1
- package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +52 -1
- package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +37 -1
- package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +38 -38
- package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +40 -1
- package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +28 -1
- package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +41 -1
- package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +56 -1
- package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +54 -1
- package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +62 -1
- package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +51 -1
- package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +59 -1
- package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +34 -1
- package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +33 -1
- package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +48 -1
- package/dist/esm2022/lib/consumers/trigger.service.mjs +39 -1
- package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +55 -1
- package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +46 -1
- package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +26 -1
- package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +72 -1
- package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +25 -1
- package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +25 -1
- package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +45 -1
- package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +23 -1
- package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +76 -1
- package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +25 -1
- package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +21 -1
- package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +36 -1
- package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +23 -1
- package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +23 -1
- package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +50 -1
- package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +25 -1
- package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +47 -1
- package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +40 -1
- package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +46 -1
- package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +39 -1
- package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +33 -1
- package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +35 -1
- package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +21 -1
- package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +32 -1
- package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +25 -1
- package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +23 -1
- package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +64 -1
- package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +44 -1
- package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +28 -1
- package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +45 -1
- package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +46 -1
- package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +33 -1
- package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +51 -1
- package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +39 -1
- package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +49 -1
- package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +26 -1
- package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +40 -1
- package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +26 -1
- package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +43 -1
- package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +98 -1
- package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +32 -1
- package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +69 -1
- package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +89 -1
- package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +48 -1
- package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +51 -1
- package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +57 -1
- package/dist/esm2022/lib/methods/utils/format-number.service.mjs +27 -15
- package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +34 -1
- package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +28 -1
- package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +27 -1
- package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +37 -1
- package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +22 -1
- package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +14 -4
- package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +14 -4
- package/dist/esm2022/lib/methods/utils/initial-values.util.mjs +13 -3
- package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +38 -1
- package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +56 -1
- package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +38 -1
- package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +51 -1
- package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +38 -1
- package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +51 -1
- package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +47 -1
- package/dist/esm2022/lib/methods/utils/sleep.util.mjs +10 -4
- package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +22 -1
- package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +17 -1
- package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +19 -1
- package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +30 -1
- package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +30 -1
- package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +21 -1
- package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +24 -1
- package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +32 -1
- package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +45 -1
- package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +39 -1
- package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +39 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +74 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +72 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +28 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +37 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +38 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +25 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +27 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +25 -10
- package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +32 -49
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +30 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +24 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +28 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +32 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +26 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +62 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +63 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +46 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +30 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +39 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +39 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +63 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +42 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +26 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +26 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +22 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +43 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +31 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +41 -1
- package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +15 -41
- package/dist/esm2022/lib/sockets/socket-manager.service.mjs +41 -1
- package/dist/fesm2022/mediasfu-angular.mjs +8192 -910
- package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
- package/dist/lib/components/background-components/background-modal/background-modal.component.d.ts +36 -0
- package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +50 -0
- package/dist/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.d.ts +48 -0
- package/dist/lib/components/co-host-components/co-host-modal/co-host-modal.component.d.ts +62 -0
- package/dist/lib/components/display-components/alert-component/alert.component.component.d.ts +24 -18
- package/dist/lib/components/display-components/audio-card/audio-card.component.d.ts +59 -0
- package/dist/lib/components/display-components/audio-grid/audio-grid.component.d.ts +20 -0
- package/dist/lib/components/display-components/card-video-display/card-video-display.component.d.ts +35 -0
- package/dist/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.d.ts +38 -0
- package/dist/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.d.ts +24 -40
- package/dist/lib/components/display-components/control-widgets/menu-participants-widget.component.d.ts +21 -0
- package/dist/lib/components/display-components/control-widgets/menu-record-widget.component.d.ts +22 -0
- package/dist/lib/components/display-components/control-widgets/menu-widget.component.d.ts +23 -0
- package/dist/lib/components/display-components/control-widgets/message-widget.component.d.ts +23 -0
- package/dist/lib/components/display-components/control-widgets/record-timer-widget.component.d.ts +15 -0
- package/dist/lib/components/display-components/control-widgets/screenshare-widget.component.d.ts +27 -0
- package/dist/lib/components/display-components/flexible-grid/flexible-grid.component.d.ts +27 -18
- package/dist/lib/components/display-components/flexible-video/flexible-video.component.d.ts +30 -45
- package/dist/lib/components/display-components/loading-modal/loading-modal.component.d.ts +19 -17
- package/dist/lib/components/display-components/main-aspect-component/main-aspect-component.component.d.ts +32 -24
- package/dist/lib/components/display-components/main-container-component/main-container-component.component.d.ts +28 -16
- package/dist/lib/components/display-components/main-grid-component/main-grid-component.component.d.ts +28 -14
- package/dist/lib/components/display-components/main-screen-component/main-screen-component.component.d.ts +43 -22
- package/dist/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.d.ts +25 -30
- package/dist/lib/components/display-components/mini-audio/mini-audio.component.d.ts +55 -62
- package/dist/lib/components/display-components/mini-card/mini-card.component.d.ts +19 -23
- package/dist/lib/components/display-components/mini-card-audio/mini-card-audio.component.d.ts +39 -39
- package/dist/lib/components/display-components/other-grid-component/other-grid-component.component.d.ts +28 -13
- package/dist/lib/components/display-components/pagination/pagination.component.d.ts +29 -23
- package/dist/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.d.ts +18 -24
- package/dist/lib/components/display-components/video-card/video-card.component.d.ts +62 -0
- package/dist/lib/components/display-settings-components/display-settings-modal.component.d.ts +28 -17
- package/dist/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.d.ts +47 -38
- package/dist/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.d.ts +35 -22
- package/dist/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.d.ts +35 -24
- package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +49 -0
- package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +49 -0
- package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +47 -11
- package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +47 -11
- package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +45 -11
- package/dist/lib/components/menu-components/custom-buttons/custom-buttons.component.d.ts +49 -51
- package/dist/lib/components/menu-components/meeting-id-component/meeting-id-component.component.d.ts +6 -1
- package/dist/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.d.ts +5 -0
- package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +21 -28
- package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +15 -13
- package/dist/lib/components/message-components/message-panel/message-panel.component.d.ts +24 -0
- package/dist/lib/components/message-components/messages-modal/messages-modal.component.d.ts +34 -0
- package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +16 -33
- package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +8 -0
- package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +14 -0
- package/dist/lib/components/misc-components/welcome-page/welcome-page.component.d.ts +15 -0
- package/dist/lib/components/participants-components/participant-list/participant-list.component.d.ts +19 -0
- package/dist/lib/components/participants-components/participant-list-item/participant-list-item.component.d.ts +19 -0
- package/dist/lib/components/participants-components/participant-list-others/participant-list-others.component.d.ts +17 -0
- package/dist/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.d.ts +17 -0
- package/dist/lib/components/participants-components/participants-modal/participants-modal.component.d.ts +24 -0
- package/dist/lib/components/polls-components/poll-modal/poll-modal.component.d.ts +27 -0
- package/dist/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.d.ts +15 -0
- package/dist/lib/components/recording-components/recording-modal/recording-modal.component.d.ts +12 -0
- package/dist/lib/components/recording-components/standard-panel-component/standard-panel-component.component.d.ts +5 -0
- package/dist/lib/components/requests-components/render-request-component/render-request-component.component.d.ts +22 -0
- package/dist/lib/components/requests-components/requests-modal/requests-modal.component.d.ts +17 -0
- package/dist/lib/components/screenboard-components/screenboard/screenboard.component.d.ts +10 -0
- package/dist/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.d.ts +11 -0
- package/dist/lib/components/waiting-components/waiting-room-modal.component.d.ts +59 -0
- package/dist/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.d.ts +21 -0
- package/dist/lib/components/whiteboard-components/whiteboard/whiteboard.component.d.ts +49 -0
- package/dist/lib/consumers/add-videos-grid.service.d.ts +49 -0
- package/dist/lib/consumers/auto-adjust.service.d.ts +26 -0
- package/dist/lib/consumers/calculate-rows-and-columns.service.d.ts +18 -0
- package/dist/lib/consumers/change-vids.service.d.ts +131 -66
- package/dist/lib/consumers/check-grid.service.d.ts +32 -18
- package/dist/lib/consumers/check-permission.service.d.ts +25 -0
- package/dist/lib/consumers/check-screen-share.service.d.ts +35 -0
- package/dist/lib/consumers/close-and-resize.service.d.ts +102 -0
- package/dist/lib/consumers/compare-active-names.service.d.ts +31 -0
- package/dist/lib/consumers/compare-screen-states.service.d.ts +35 -0
- package/dist/lib/consumers/connect-ips.service.d.ts +42 -0
- package/dist/lib/consumers/connect-recv-transport.service.d.ts +33 -0
- package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +38 -0
- package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +40 -0
- package/dist/lib/consumers/connect-send-transport-video.service.d.ts +44 -0
- package/dist/lib/consumers/connect-send-transport.service.d.ts +54 -0
- package/dist/lib/consumers/consumer-resume.service.d.ts +36 -0
- package/dist/lib/consumers/control-media.service.d.ts +45 -0
- package/dist/lib/consumers/create-send-transport.service.d.ts +46 -0
- package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +50 -0
- package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +39 -0
- package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +45 -0
- package/dist/lib/consumers/disp-streams.service.d.ts +92 -0
- package/dist/lib/consumers/generate-page-content.service.d.ts +47 -0
- package/dist/lib/consumers/get-estimate.service.d.ts +50 -0
- package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +33 -0
- package/dist/lib/consumers/get-producers-piped.service.d.ts +33 -0
- package/dist/lib/consumers/get-videos.service.d.ts +33 -0
- package/dist/lib/consumers/mix-streams.service.d.ts +22 -0
- package/dist/lib/consumers/on-screen-changes.service.d.ts +40 -0
- package/dist/lib/consumers/prepopulate-user-media.service.d.ts +99 -0
- package/dist/lib/consumers/process-consumer-transports-audio.service.d.ts +29 -0
- package/dist/lib/consumers/process-consumer-transports.service.d.ts +37 -0
- package/dist/lib/consumers/re-port.service.d.ts +48 -0
- package/dist/lib/consumers/re-update-inter.service.d.ts +82 -0
- package/dist/lib/consumers/readjust.service.d.ts +50 -0
- package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +31 -0
- package/dist/lib/consumers/receive-room-messages.service.d.ts +27 -0
- package/dist/lib/consumers/reorder-streams.service.d.ts +58 -0
- package/dist/lib/consumers/request-screen-share.service.d.ts +34 -0
- package/dist/lib/consumers/resume-pause-audio-streams.service.d.ts +51 -0
- package/dist/lib/consumers/resume-pause-streams.service.d.ts +33 -0
- package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +36 -0
- package/dist/lib/consumers/signal-new-consumer-transport.service.d.ts +37 -37
- package/dist/lib/consumers/socket-receive-methods/join-consume-room.service.d.ts +33 -0
- package/dist/lib/consumers/socket-receive-methods/new-pipe-producer.service.d.ts +39 -0
- package/dist/lib/consumers/socket-receive-methods/producer-closed.service.d.ts +27 -0
- package/dist/lib/consumers/start-share-screen.service.d.ts +40 -0
- package/dist/lib/consumers/stop-share-screen.service.d.ts +55 -0
- package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +53 -0
- package/dist/lib/consumers/stream-success-audio.service.d.ts +61 -0
- package/dist/lib/consumers/stream-success-screen.service.d.ts +50 -0
- package/dist/lib/consumers/stream-success-video.service.d.ts +58 -0
- package/dist/lib/consumers/switch-user-audio.service.d.ts +33 -0
- package/dist/lib/consumers/switch-user-video-alt.service.d.ts +32 -0
- package/dist/lib/consumers/switch-user-video.service.d.ts +47 -0
- package/dist/lib/consumers/trigger.service.d.ts +38 -0
- package/dist/lib/consumers/update-mini-cards-grid.service.d.ts +54 -0
- package/dist/lib/consumers/update-participant-audio-decibels.service.d.ts +45 -0
- package/dist/lib/methods/background-methods/launch-background.service.d.ts +25 -0
- package/dist/lib/methods/breakout-room-methods/breakout-room-updated.service.d.ts +71 -0
- package/dist/lib/methods/breakout-room-methods/launch-breakout-rooms.service.d.ts +24 -0
- package/dist/lib/methods/co-host-methods/launch-co-host.service.d.ts +24 -0
- package/dist/lib/methods/co-host-methods/modify-co-host-settings.service.d.ts +44 -0
- package/dist/lib/methods/display-settings-methods/launch-display-settings.service.d.ts +22 -0
- package/dist/lib/methods/display-settings-methods/modify-display-settings.service.d.ts +75 -0
- package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +24 -0
- package/dist/lib/methods/exit-methods/launch-confirm-exit.service.d.ts +20 -0
- package/dist/lib/methods/media-settings-methods/launch-media-settings.service.d.ts +35 -0
- package/dist/lib/methods/menu-methods/launch-menu-modal.service.d.ts +22 -0
- package/dist/lib/methods/message-methods/launch-messages.service.d.ts +22 -0
- package/dist/lib/methods/message-methods/send-message.service.d.ts +49 -0
- package/dist/lib/methods/participants-methods/launch-participants.service.d.ts +24 -0
- package/dist/lib/methods/participants-methods/message-participants.service.d.ts +46 -0
- package/dist/lib/methods/participants-methods/mute-participants.service.d.ts +39 -0
- package/dist/lib/methods/participants-methods/remove-participants.service.d.ts +45 -0
- package/dist/lib/methods/polls-methods/handle-create-poll.service.d.ts +38 -0
- package/dist/lib/methods/polls-methods/handle-end-poll.service.d.ts +32 -0
- package/dist/lib/methods/polls-methods/handle-vote-poll.service.d.ts +34 -0
- package/dist/lib/methods/polls-methods/launch-poll.service.d.ts +20 -0
- package/dist/lib/methods/polls-methods/poll-updated.service.d.ts +31 -0
- package/dist/lib/methods/recording-methods/check-pause-state.service.d.ts +24 -0
- package/dist/lib/methods/recording-methods/check-resume-state.service.d.ts +22 -0
- package/dist/lib/methods/recording-methods/confirm-recording.service.d.ts +63 -0
- package/dist/lib/methods/recording-methods/launch-recording.service.d.ts +43 -0
- package/dist/lib/methods/recording-methods/record-pause-timer.service.d.ts +27 -0
- package/dist/lib/methods/recording-methods/record-resume-timer.service.d.ts +44 -0
- package/dist/lib/methods/recording-methods/record-start-timer.service.d.ts +45 -0
- package/dist/lib/methods/recording-methods/record-update-timer.service.d.ts +32 -0
- package/dist/lib/methods/recording-methods/start-recording.service.d.ts +50 -0
- package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +38 -0
- package/dist/lib/methods/recording-methods/update-recording.service.d.ts +48 -0
- package/dist/lib/methods/requests-methods/launch-requests.service.d.ts +25 -0
- package/dist/lib/methods/requests-methods/respond-to-requests.service.d.ts +39 -0
- package/dist/lib/methods/settings-methods/launch-settings.service.d.ts +25 -0
- package/dist/lib/methods/settings-methods/modify-settings.service.d.ts +42 -0
- package/dist/lib/methods/stream-methods/click-audio.service.d.ts +97 -0
- package/dist/lib/methods/stream-methods/click-chat.service.d.ts +31 -0
- package/dist/lib/methods/stream-methods/click-screen-share.service.d.ts +68 -0
- package/dist/lib/methods/stream-methods/click-video.service.d.ts +88 -0
- package/dist/lib/methods/stream-methods/switch-audio.service.d.ts +47 -0
- package/dist/lib/methods/stream-methods/switch-video-alt.service.d.ts +50 -0
- package/dist/lib/methods/stream-methods/switch-video.service.d.ts +56 -0
- package/dist/lib/methods/utils/format-number.service.d.ts +26 -14
- package/dist/lib/methods/utils/generate-random-messages.service.d.ts +33 -0
- package/dist/lib/methods/utils/generate-random-participants.service.d.ts +27 -0
- package/dist/lib/methods/utils/generate-random-polls.service.d.ts +26 -0
- package/dist/lib/methods/utils/generate-random-request-list.service.d.ts +36 -0
- package/dist/lib/methods/utils/generate-random-waiting-room-list.service.d.ts +21 -0
- package/dist/lib/methods/utils/get-modal-position.util.d.ts +13 -3
- package/dist/lib/methods/utils/get-overlay-position.util.d.ts +13 -3
- package/dist/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.d.ts +37 -0
- package/dist/lib/methods/utils/mini-audio-player/mini-audio-player.component.d.ts +55 -0
- package/dist/lib/methods/utils/producer/a-params.service.d.ts +37 -0
- package/dist/lib/methods/utils/producer/h-params.service.d.ts +50 -0
- package/dist/lib/methods/utils/producer/screen-params.service.d.ts +37 -0
- package/dist/lib/methods/utils/producer/v-params.service.d.ts +50 -0
- package/dist/lib/methods/utils/producer/video-capture-constraints.service.d.ts +46 -0
- package/dist/lib/methods/utils/sleep.util.d.ts +9 -3
- package/dist/lib/methods/utils/sound-player.service.d.ts +21 -0
- package/dist/lib/methods/utils/validate-alphanumeric.service.d.ts +16 -0
- package/dist/lib/methods/waiting-methods/launch-waiting.service.d.ts +18 -0
- package/dist/lib/methods/waiting-methods/respond-to-waiting.service.d.ts +29 -0
- package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +29 -0
- package/dist/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.d.ts +20 -0
- package/dist/lib/producer-client/producer-client-emits/create-device-client.service.d.ts +23 -0
- package/dist/lib/producer-client/producer-client-emits/join-room-client.service.d.ts +31 -0
- package/dist/lib/producer-client/producer-client-emits/update-room-parameters-client.service.d.ts +44 -0
- package/dist/lib/producers/producer-emits/join-con-room.service.d.ts +38 -0
- package/dist/lib/producers/producer-emits/join-room.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +73 -0
- package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +71 -0
- package/dist/lib/producers/socket-receive-methods/all-waiting-room-members.service.d.ts +27 -0
- package/dist/lib/producers/socket-receive-methods/ban-participant.service.d.ts +36 -0
- package/dist/lib/producers/socket-receive-methods/control-media-host.service.d.ts +37 -0
- package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +24 -0
- package/dist/lib/producers/socket-receive-methods/disconnect.service.d.ts +26 -0
- package/dist/lib/producers/socket-receive-methods/get-domains.service.d.ts +24 -9
- package/dist/lib/producers/socket-receive-methods/host-request-response.service.d.ts +31 -48
- package/dist/lib/producers/socket-receive-methods/meeting-ended.service.d.ts +29 -0
- package/dist/lib/producers/socket-receive-methods/meeting-still-there.service.d.ts +23 -0
- package/dist/lib/producers/socket-receive-methods/meeting-time-remaining.service.d.ts +27 -0
- package/dist/lib/producers/socket-receive-methods/participant-requested.service.d.ts +31 -0
- package/dist/lib/producers/socket-receive-methods/person-joined.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-closed.service.d.ts +61 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-paused.service.d.ts +62 -0
- package/dist/lib/producers/socket-receive-methods/producer-media-resumed.service.d.ts +45 -0
- package/dist/lib/producers/socket-receive-methods/re-initiate-recording.service.d.ts +29 -0
- package/dist/lib/producers/socket-receive-methods/receive-message.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/recording-notice.service.d.ts +38 -0
- package/dist/lib/producers/socket-receive-methods/room-record-params.service.d.ts +62 -0
- package/dist/lib/producers/socket-receive-methods/screen-producer-id.service.d.ts +41 -0
- package/dist/lib/producers/socket-receive-methods/start-records.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/stopped-recording.service.d.ts +25 -0
- package/dist/lib/producers/socket-receive-methods/time-left-recording.service.d.ts +21 -0
- package/dist/lib/producers/socket-receive-methods/update-consuming-domains.service.d.ts +42 -0
- package/dist/lib/producers/socket-receive-methods/update-media-settings.service.d.ts +30 -0
- package/dist/lib/producers/socket-receive-methods/updated-co-host.service.d.ts +40 -0
- package/dist/lib/producers/socket-receive-methods/user-waiting.service.d.ts +14 -40
- package/dist/lib/sockets/socket-manager.service.d.ts +40 -0
- package/package.json +11 -2
|
@@ -8,6 +8,65 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
import * as i1 from "../../methods/waiting-methods/respond-to-waiting.service";
|
|
9
9
|
import * as i2 from "@angular/common";
|
|
10
10
|
import * as i3 from "@fortawesome/angular-fontawesome";
|
|
11
|
+
/**
|
|
12
|
+
* Component representing a modal for managing participants in a waiting room.
|
|
13
|
+
*
|
|
14
|
+
* @component
|
|
15
|
+
* @selector app-waiting-room-modal
|
|
16
|
+
* @standalone true
|
|
17
|
+
* @imports CommonModule, FontAwesomeModule, FormsModule
|
|
18
|
+
* @templateUrl ./waiting-room-modal.component.html
|
|
19
|
+
* @styleUrls ['./waiting-room-modal.component.css']
|
|
20
|
+
*
|
|
21
|
+
* @property {boolean} isWaitingModalVisible - Visibility state of the modal.
|
|
22
|
+
* @property {number} waitingRoomCounter - Counter for the number of participants in the waiting room.
|
|
23
|
+
* @property {WaitingRoomParticipant[]} waitingRoomList - List of participants in the waiting room.
|
|
24
|
+
* @property {string} roomName - Name of the room.
|
|
25
|
+
* @property {Socket} socket - Socket instance for communication.
|
|
26
|
+
* @property {string} position - Position of the modal on the screen.
|
|
27
|
+
* @property {string} backgroundColor - Background color of the modal.
|
|
28
|
+
* @property {WaitingRoomModalParameters} parameters - Parameters for the waiting room modal.
|
|
29
|
+
* @property {function} onWaitingRoomClose - Function to call when the modal is closed.
|
|
30
|
+
* @property {function} onWaitingRoomFilterChange - Function to call when the filter value changes.
|
|
31
|
+
* @property {function} updateWaitingList - Function to update the waiting list.
|
|
32
|
+
* @property {function} onWaitingRoomItemPress - Function to call when an item in the waiting room is pressed.
|
|
33
|
+
*
|
|
34
|
+
* @property {IconDefinition} faTimes - FontAwesome icon for the close button.
|
|
35
|
+
* @property {IconDefinition} faCheck - FontAwesome icon for the check button.
|
|
36
|
+
* @property {WaitingRoomParticipant[]} waitingRoomList_s - Filtered list of participants in the waiting room.
|
|
37
|
+
* @property {number} waitingRoomCounter_s - Counter for the filtered list of participants in the waiting room.
|
|
38
|
+
* @property {boolean} reRender - Flag to trigger re-rendering of the component.
|
|
39
|
+
*
|
|
40
|
+
* @method ngOnInit - Lifecycle hook that is called after data-bound properties are initialized.
|
|
41
|
+
* @method ngOnChanges - Lifecycle hook that is called when any data-bound property of a directive changes.
|
|
42
|
+
* @method updateParameters - Updates the parameters for the waiting room modal.
|
|
43
|
+
* @method handleModalClose - Handles the closing of the modal.
|
|
44
|
+
* @method handleFilterChange - Handles the change in the filter input.
|
|
45
|
+
* @method handleItemPress - Handles the pressing of an item in the waiting room.
|
|
46
|
+
*
|
|
47
|
+
* @getter modalContainerStyle - Returns the style object for the modal container.
|
|
48
|
+
* @getter modalContentStyle - Returns the style object for the modal content.
|
|
49
|
+
* @getter inputStyle - Returns the style object for the input field.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```html
|
|
53
|
+
* <app-waiting-room-modal
|
|
54
|
+
* [isWaitingModalVisible]="true"
|
|
55
|
+
* [waitingRoomCounter]="waitingRoomCounter"
|
|
56
|
+
* [waitingRoomList]="waitingRoomList"
|
|
57
|
+
* [roomName]="roomName"
|
|
58
|
+
* [socket]="socket"
|
|
59
|
+
* [position]="'topRight'"
|
|
60
|
+
* [backgroundColor]="'#83c0e9'"
|
|
61
|
+
* [parameters]="waitingRoomModalParams"
|
|
62
|
+
* [onWaitingRoomClose]="closeWaitingRoomModal"
|
|
63
|
+
* [onWaitingRoomFilterChange]="filterWaitingRoom"
|
|
64
|
+
* [updateWaitingList]="updateWaitingList"
|
|
65
|
+
* [onWaitingRoomItemPress]="handleWaitingRoomItemPress"
|
|
66
|
+
* ></app-waiting-room-modal>
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
*/
|
|
11
70
|
export class WaitingRoomModal {
|
|
12
71
|
respondToWaitingService;
|
|
13
72
|
constructor(respondToWaitingService) {
|
|
@@ -139,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
139
198
|
}], onWaitingRoomItemPress: [{
|
|
140
199
|
type: Input
|
|
141
200
|
}] } });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdGluZy1yb29tLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3dhaXRpbmctY29tcG9uZW50cy93YWl0aW5nLXJvb20tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvd2FpdGluZy1jb21wb25lbnRzL3dhaXRpbmctcm9vbS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUEyQzdDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDUDtJQUFwQixZQUFvQix1QkFBeUM7UUFBekMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFrQjtJQUFHLENBQUM7SUFFeEQscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0lBQzlCLGtCQUFrQixHQUFHLENBQUMsQ0FBQztJQUN2QixlQUFlLEdBQTZCLEVBQUUsQ0FBQztJQUMvQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsTUFBTSxHQUFXLEVBQVksQ0FBQztJQUM5QixRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQ3RCLGVBQWUsR0FBRyxTQUFTLENBQUM7SUFDNUIsVUFBVSxHQUErQixFQUFnQyxDQUFDO0lBQzFF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OzJGQUkzQyxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxXQUFXLENBQUM7cUZBTzlDLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmYVRpbWVzLCBmYUNoZWNrIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgV2FpdGluZ1Jvb21QYXJ0aWNpcGFudCB9IGZyb20gJy4uLy4uL0B0eXBlcy90eXBlcyc7XG5pbXBvcnQge1xuICBSZXNwb25kVG9XYWl0aW5nLFxuICBSZXNwb25kVG9XYWl0aW5nT3B0aW9ucyxcbiAgUmVzcG9uZFRvV2FpdGluZ1R5cGUsXG59IGZyb20gJy4uLy4uL21ldGhvZHMvd2FpdGluZy1tZXRob2RzL3Jlc3BvbmQtdG8td2FpdGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ3NvY2tldC5pby1jbGllbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdhaXRpbmdSb29tTW9kYWxQYXJhbWV0ZXJzIHtcbiAgZmlsdGVyZWRXYWl0aW5nUm9vbUxpc3Q6IFdhaXRpbmdSb29tUGFydGljaXBhbnRbXTtcblxuICAvLyBtZWRpYXNmdSBmdW5jdGlvbnNcbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gV2FpdGluZ1Jvb21Nb2RhbFBhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYWl0aW5nUm9vbU1vZGFsT3B0aW9ucyB7XG4gIGlzV2FpdGluZ01vZGFsVmlzaWJsZTogYm9vbGVhbjtcbiAgb25XYWl0aW5nUm9vbUNsb3NlOiAoKSA9PiB2b2lkO1xuICB3YWl0aW5nUm9vbUNvdW50ZXI6IG51bWJlcjtcbiAgb25XYWl0aW5nUm9vbUZpbHRlckNoYW5nZTogKGZpbHRlcjogc3RyaW5nKSA9PiB2b2lkO1xuICB3YWl0aW5nUm9vbUxpc3Q6IFdhaXRpbmdSb29tUGFydGljaXBhbnRbXTtcbiAgdXBkYXRlV2FpdGluZ0xpc3Q6ICh1cGRhdGVkTGlzdDogV2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdKSA9PiB2b2lkO1xuICByb29tTmFtZTogc3RyaW5nO1xuICBzb2NrZXQ6IFNvY2tldDtcbiAgcG9zaXRpb24/OiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgcGFyYW1ldGVyczogV2FpdGluZ1Jvb21Nb2RhbFBhcmFtZXRlcnM7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIG9uV2FpdGluZ1Jvb21JdGVtUHJlc3M/OiBSZXNwb25kVG9XYWl0aW5nVHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgV2FpdGluZ1Jvb21Nb2RhbFR5cGUgPSAob3B0aW9uczogV2FpdGluZ1Jvb21Nb2RhbE9wdGlvbnMpID0+IEhUTUxFbGVtZW50O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtd2FpdGluZy1yb29tLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhaXRpbmctcm9vbS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhaXRpbmctcm9vbS1tb2RhbC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdhaXRpbmdSb29tTW9kYWwgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzcG9uZFRvV2FpdGluZ1NlcnZpY2U6IFJlc3BvbmRUb1dhaXRpbmcpIHt9XG5cbiAgQElucHV0KCkgaXNXYWl0aW5nTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHdhaXRpbmdSb29tQ291bnRlciA9IDA7XG4gIEBJbnB1dCgpIHdhaXRpbmdSb29tTGlzdDogV2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdID0gW107XG4gIEBJbnB1dCgpIHJvb21OYW1lID0gJyc7XG4gIEBJbnB1dCgpIHNvY2tldDogU29ja2V0ID0ge30gYXMgU29ja2V0O1xuICBASW5wdXQoKSBwb3NpdGlvbiA9ICd0b3BSaWdodCc7XG4gIEBJbnB1dCgpIGJhY2tncm91bmRDb2xvciA9ICcjODNjMGU5JztcbiAgQElucHV0KCkgcGFyYW1ldGVyczogV2FpdGluZ1Jvb21Nb2RhbFBhcmFtZXRlcnMgPSB7fSBhcyBXYWl0aW5nUm9vbU1vZGFsUGFyYW1ldGVycztcbiAgQElucHV0KCkgb25XYWl0aW5nUm9vbUNsb3NlOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIEBJbnB1dCgpIG9uV2FpdGluZ1Jvb21GaWx0ZXJDaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIEBJbnB1dCgpIHVwZGF0ZVdhaXRpbmdMaXN0OiAoZGF0YTogV2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIEBJbnB1dCgpIG9uV2FpdGluZ1Jvb21JdGVtUHJlc3MhOiAoZGF0YTogUmVzcG9uZFRvV2FpdGluZ09wdGlvbnMpID0+IHZvaWQ7XG5cbiAgZmFUaW1lcyA9IGZhVGltZXM7XG4gIGZhQ2hlY2sgPSBmYUNoZWNrO1xuICB3YWl0aW5nUm9vbUxpc3RfczogV2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdID0gW107XG4gIHdhaXRpbmdSb29tQ291bnRlcl9zID0gMDtcbiAgcmVSZW5kZXIgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMub25XYWl0aW5nUm9vbUl0ZW1QcmVzcykge1xuICAgICAgdGhpcy5vbldhaXRpbmdSb29tSXRlbVByZXNzID0gKGRhdGE6IGFueSkgPT5cbiAgICAgICAgdGhpcy5yZXNwb25kVG9XYWl0aW5nU2VydmljZS5yZXNwb25kVG9XYWl0aW5nKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snd2FpdGluZ1Jvb21MaXN0J10gfHwgY2hhbmdlc1sncmVSZW5kZXInXSkge1xuICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUGFyYW1ldGVycygpIHtcbiAgICBsZXQgeyBnZXRVcGRhdGVkQWxsUGFyYW1zIH0gPSB0aGlzLnBhcmFtZXRlcnM7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuXG4gICAgdGhpcy53YWl0aW5nUm9vbUxpc3RfcyA9IHRoaXMucGFyYW1ldGVycy5maWx0ZXJlZFdhaXRpbmdSb29tTGlzdDtcbiAgICB0aGlzLndhaXRpbmdSb29tQ291bnRlcl9zID0gdGhpcy5wYXJhbWV0ZXJzLmZpbHRlcmVkV2FpdGluZ1Jvb21MaXN0Lmxlbmd0aDtcbiAgfVxuXG4gIGhhbmRsZU1vZGFsQ2xvc2UoKSB7XG4gICAgdGhpcy5vbldhaXRpbmdSb29tQ2xvc2UoKTtcbiAgfVxuXG4gIGhhbmRsZUZpbHRlckNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCB2YWx1ZSA9IGlucHV0RWxlbWVudD8udmFsdWUgfHwgJyc7XG4gICAgdGhpcy5vbldhaXRpbmdSb29tRmlsdGVyQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLnJlUmVuZGVyID0gIXRoaXMucmVSZW5kZXI7XG4gIH1cblxuICBoYW5kbGVJdGVtUHJlc3MocGFydGljaXBhbnQ6IFdhaXRpbmdSb29tUGFydGljaXBhbnQsIHR5cGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9uV2FpdGluZ1Jvb21JdGVtUHJlc3Moe1xuICAgICAgcGFydGljaXBhbnRJZDogcGFydGljaXBhbnQuaWQsXG4gICAgICBwYXJ0aWNpcGFudE5hbWU6IHBhcnRpY2lwYW50Lm5hbWUsXG4gICAgICB1cGRhdGVXYWl0aW5nTGlzdDogdGhpcy51cGRhdGVXYWl0aW5nTGlzdCxcbiAgICAgIHdhaXRpbmdMaXN0OiB0aGlzLndhaXRpbmdSb29tTGlzdCxcbiAgICAgIHJvb21OYW1lOiB0aGlzLnJvb21OYW1lLFxuICAgICAgdHlwZTogdHlwZSwgLy8gdHJ1ZSBmb3IgYWNjZXB0ZWQsIGZhbHNlIGZvciByZWplY3RlZFxuICAgICAgc29ja2V0OiB0aGlzLnNvY2tldCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtb2RhbENvbnRhaW5lclN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjUpJyxcbiAgICAgIGRpc3BsYXk6IHRoaXMuaXNXYWl0aW5nTW9kYWxWaXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJyxcbiAgICAgIHpJbmRleDogJzk5OScsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBtb2RhbENvbnRlbnRTdHlsZSgpIHtcbiAgICBjb25zdCBzY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIGxldCBtb2RhbFdpZHRoID0gMC44ICogc2NyZWVuV2lkdGg7XG4gICAgaWYgKG1vZGFsV2lkdGggPiAzNTApIHtcbiAgICAgIG1vZGFsV2lkdGggPSAzNTA7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxMHB4JyxcbiAgICAgIHBhZGRpbmc6ICcxMHB4JyxcbiAgICAgIHdpZHRoOiBgJHttb2RhbFdpZHRofXB4YCxcbiAgICAgIG1heEhlaWdodDogJzY1JScsXG4gICAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICAgIHRvcDogdGhpcy5wb3NpdGlvbi5pbmNsdWRlcygndG9wJykgPyAnMTBweCcgOiAnYXV0bycsXG4gICAgICBib3R0b206IHRoaXMucG9zaXRpb24uaW5jbHVkZXMoJ2JvdHRvbScpID8gJzEwcHgnIDogJ2F1dG8nLFxuICAgICAgbGVmdDogdGhpcy5wb3NpdGlvbi5pbmNsdWRlcygnTGVmdCcpID8gJzEwcHgnIDogJ2F1dG8nLFxuICAgICAgcmlnaHQ6IHRoaXMucG9zaXRpb24uaW5jbHVkZXMoJ1JpZ2h0JykgPyAnMTBweCcgOiAnYXV0bycsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBpbnB1dFN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogJzkwJScsXG4gICAgICBwYWRkaW5nOiAnMTBweCcsXG4gICAgICBib3JkZXJSYWRpdXM6ICc1cHgnLFxuICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICMwMDAnLFxuICAgICAgZm9udFNpemU6ICcxNnB4JyxcbiAgICAgIG1hcmdpbkJvdHRvbTogJzEwcHgnLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJpc1dhaXRpbmdNb2RhbFZpc2libGVcIiBbbmdTdHlsZV09XCJtb2RhbENvbnRhaW5lclN0eWxlXCI+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJtb2RhbENvbnRlbnRTdHlsZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cclxuICAgICAgICBXYWl0aW5nIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIj57eyB3YWl0aW5nUm9vbUNvdW50ZXJfcyB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKGNsaWNrKT1cImhhbmRsZU1vZGFsQ2xvc2UoKVwiIGNsYXNzPVwiYnRuLWNsb3NlLXdhaXRpbmdzXCI+XHJcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFUaW1lc1wiIGNsYXNzPVwiaWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxociBjbGFzcz1cImhyXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIC4uLlwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwiaGFuZGxlRmlsdGVyQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2FpdGluZy1saXN0XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHBhcnRpY2lwYW50IG9mIHdhaXRpbmdSb29tTGlzdF9zXCJcclxuICAgICAgICAgIGNsYXNzPVwid2FpdGluZy1pdGVtXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sN1wiPnt7IHBhcnRpY2lwYW50Lm5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUl0ZW1QcmVzcyhwYXJ0aWNpcGFudCwgdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYUNoZWNrXCIgc2l6ZT1cImxnXCIgY29sb3I9XCJncmVlblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUl0ZW1QcmVzcyhwYXJ0aWNpcGFudCwgZmFsc2UpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFUaW1lc1wiIHNpemU9XCJsZ1wiIGNvbG9yPVwicmVkXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbDFcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdGluZy1yb29tLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3dhaXRpbmctY29tcG9uZW50cy93YWl0aW5nLXJvb20tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvd2FpdGluZy1jb21wb25lbnRzL3dhaXRpbmctcm9vbS1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFvQzdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMERHO0FBUUgsTUFBTSxPQUFPLGdCQUFnQjtJQUNQO0lBQXBCLFlBQW9CLHVCQUF5QztRQUF6Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQWtCO0lBQUcsQ0FBQztJQUV4RCxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDOUIsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLGVBQWUsR0FBNkIsRUFBRSxDQUFDO0lBQy9DLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxNQUFNLEdBQVcsRUFBWSxDQUFDO0lBQzlCLFFBQVEsR0FBRyxV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OzJGQUFoQixnQkFBZ0IseWlCQzNHN0IsZ2lEQTBDQSxtNkJENkRZLFlBQVksb1ZBQUUsaUJBQWlCLDRQQUFFLFdBQVc7OzJGQUkzQyxnQkFBZ0I7a0JBUDVCLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxXQUFXLENBQUM7cUZBTzlDLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmYVRpbWVzLCBmYUNoZWNrIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb250QXdlc29tZU1vZHVsZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgV2FpdGluZ1Jvb21QYXJ0aWNpcGFudCB9IGZyb20gJy4uLy4uL0B0eXBlcy90eXBlcyc7XG5pbXBvcnQge1xuICBSZXNwb25kVG9XYWl0aW5nLFxuICBSZXNwb25kVG9XYWl0aW5nT3B0aW9ucyxcbiAgUmVzcG9uZFRvV2FpdGluZ1R5cGUsXG59IGZyb20gJy4uLy4uL21ldGhvZHMvd2FpdGluZy1tZXRob2RzL3Jlc3BvbmQtdG8td2FpdGluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ3NvY2tldC5pby1jbGllbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdhaXRpbmdSb29tTW9kYWxQYXJhbWV0ZXJzIHtcbiAgZmlsdGVyZWRXYWl0aW5nUm9vbUxpc3Q6IFdhaXRpbmdSb29tUGFydGljaXBhbnRbXTtcblxuICAvLyBtZWRpYXNmdSBmdW5jdGlvbnNcbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gV2FpdGluZ1Jvb21Nb2RhbFBhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYWl0aW5nUm9vbU1vZGFsT3B0aW9ucyB7XG4gIGlzV2FpdGluZ01vZGFsVmlzaWJsZTogYm9vbGVhbjtcbiAgb25XYWl0aW5nUm9vbUNsb3NlOiAoKSA9PiB2b2lkO1xuICB3YWl0aW5nUm9vbUNvdW50ZXI6IG51bWJlcjtcbiAgb25XYWl0aW5nUm9vbUZpbHRlckNoYW5nZTogKGZpbHRlcjogc3RyaW5nKSA9PiB2b2lkO1xuICB3YWl0aW5nUm9vbUxpc3Q6IFdhaXRpbmdSb29tUGFydGljaXBhbnRbXTtcbiAgdXBkYXRlV2FpdGluZ0xpc3Q6ICh1cGRhdGVkTGlzdDogV2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdKSA9PiB2b2lkO1xuICByb29tTmFtZTogc3RyaW5nO1xuICBzb2NrZXQ6IFNvY2tldDtcbiAgcG9zaXRpb24/OiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgcGFyYW1ldGVyczogV2FpdGluZ1Jvb21Nb2RhbFBhcmFtZXRlcnM7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIG9uV2FpdGluZ1Jvb21JdGVtUHJlc3M/OiBSZXNwb25kVG9XYWl0aW5nVHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgV2FpdGluZ1Jvb21Nb2RhbFR5cGUgPSAob3B0aW9uczogV2FpdGluZ1Jvb21Nb2RhbE9wdGlvbnMpID0+IEhUTUxFbGVtZW50O1xuXG4vKipcbiAqIENvbXBvbmVudCByZXByZXNlbnRpbmcgYSBtb2RhbCBmb3IgbWFuYWdpbmcgcGFydGljaXBhbnRzIGluIGEgd2FpdGluZyByb29tLlxuICpcbiAqIEBjb21wb25lbnRcbiAqIEBzZWxlY3RvciBhcHAtd2FpdGluZy1yb29tLW1vZGFsXG4gKiBAc3RhbmRhbG9uZSB0cnVlXG4gKiBAaW1wb3J0cyBDb21tb25Nb2R1bGUsIEZvbnRBd2Vzb21lTW9kdWxlLCBGb3Jtc01vZHVsZVxuICogQHRlbXBsYXRlVXJsIC4vd2FpdGluZy1yb29tLW1vZGFsLmNvbXBvbmVudC5odG1sXG4gKiBAc3R5bGVVcmxzIFsnLi93YWl0aW5nLXJvb20tbW9kYWwuY29tcG9uZW50LmNzcyddXG4gKlxuICogQHByb3BlcnR5IHtib29sZWFufSBpc1dhaXRpbmdNb2RhbFZpc2libGUgLSBWaXNpYmlsaXR5IHN0YXRlIG9mIHRoZSBtb2RhbC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB3YWl0aW5nUm9vbUNvdW50ZXIgLSBDb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIHBhcnRpY2lwYW50cyBpbiB0aGUgd2FpdGluZyByb29tLlxuICogQHByb3BlcnR5IHtXYWl0aW5nUm9vbVBhcnRpY2lwYW50W119IHdhaXRpbmdSb29tTGlzdCAtIExpc3Qgb2YgcGFydGljaXBhbnRzIGluIHRoZSB3YWl0aW5nIHJvb20uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcm9vbU5hbWUgLSBOYW1lIG9mIHRoZSByb29tLlxuICogQHByb3BlcnR5IHtTb2NrZXR9IHNvY2tldCAtIFNvY2tldCBpbnN0YW5jZSBmb3IgY29tbXVuaWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwb3NpdGlvbiAtIFBvc2l0aW9uIG9mIHRoZSBtb2RhbCBvbiB0aGUgc2NyZWVuLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGJhY2tncm91bmRDb2xvciAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIG1vZGFsLlxuICogQHByb3BlcnR5IHtXYWl0aW5nUm9vbU1vZGFsUGFyYW1ldGVyc30gcGFyYW1ldGVycyAtIFBhcmFtZXRlcnMgZm9yIHRoZSB3YWl0aW5nIHJvb20gbW9kYWwuXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSBvbldhaXRpbmdSb29tQ2xvc2UgLSBGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIG1vZGFsIGlzIGNsb3NlZC5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IG9uV2FpdGluZ1Jvb21GaWx0ZXJDaGFuZ2UgLSBGdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGZpbHRlciB2YWx1ZSBjaGFuZ2VzLlxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gdXBkYXRlV2FpdGluZ0xpc3QgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHdhaXRpbmcgbGlzdC5cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IG9uV2FpdGluZ1Jvb21JdGVtUHJlc3MgLSBGdW5jdGlvbiB0byBjYWxsIHdoZW4gYW4gaXRlbSBpbiB0aGUgd2FpdGluZyByb29tIGlzIHByZXNzZWQuXG4gKlxuICogQHByb3BlcnR5IHtJY29uRGVmaW5pdGlvbn0gZmFUaW1lcyAtIEZvbnRBd2Vzb21lIGljb24gZm9yIHRoZSBjbG9zZSBidXR0b24uXG4gKiBAcHJvcGVydHkge0ljb25EZWZpbml0aW9ufSBmYUNoZWNrIC0gRm9udEF3ZXNvbWUgaWNvbiBmb3IgdGhlIGNoZWNrIGJ1dHRvbi5cbiAqIEBwcm9wZXJ0eSB7V2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdfSB3YWl0aW5nUm9vbUxpc3RfcyAtIEZpbHRlcmVkIGxpc3Qgb2YgcGFydGljaXBhbnRzIGluIHRoZSB3YWl0aW5nIHJvb20uXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2FpdGluZ1Jvb21Db3VudGVyX3MgLSBDb3VudGVyIGZvciB0aGUgZmlsdGVyZWQgbGlzdCBvZiBwYXJ0aWNpcGFudHMgaW4gdGhlIHdhaXRpbmcgcm9vbS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVSZW5kZXIgLSBGbGFnIHRvIHRyaWdnZXIgcmUtcmVuZGVyaW5nIG9mIHRoZSBjb21wb25lbnQuXG4gKlxuICogQG1ldGhvZCBuZ09uSW5pdCAtIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBhcmUgaW5pdGlhbGl6ZWQuXG4gKiBAbWV0aG9kIG5nT25DaGFuZ2VzIC0gTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgd2hlbiBhbnkgZGF0YS1ib3VuZCBwcm9wZXJ0eSBvZiBhIGRpcmVjdGl2ZSBjaGFuZ2VzLlxuICogQG1ldGhvZCB1cGRhdGVQYXJhbWV0ZXJzIC0gVXBkYXRlcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIHdhaXRpbmcgcm9vbSBtb2RhbC5cbiAqIEBtZXRob2QgaGFuZGxlTW9kYWxDbG9zZSAtIEhhbmRsZXMgdGhlIGNsb3Npbmcgb2YgdGhlIG1vZGFsLlxuICogQG1ldGhvZCBoYW5kbGVGaWx0ZXJDaGFuZ2UgLSBIYW5kbGVzIHRoZSBjaGFuZ2UgaW4gdGhlIGZpbHRlciBpbnB1dC5cbiAqIEBtZXRob2QgaGFuZGxlSXRlbVByZXNzIC0gSGFuZGxlcyB0aGUgcHJlc3Npbmcgb2YgYW4gaXRlbSBpbiB0aGUgd2FpdGluZyByb29tLlxuICpcbiAqIEBnZXR0ZXIgbW9kYWxDb250YWluZXJTdHlsZSAtIFJldHVybnMgdGhlIHN0eWxlIG9iamVjdCBmb3IgdGhlIG1vZGFsIGNvbnRhaW5lci5cbiAqIEBnZXR0ZXIgbW9kYWxDb250ZW50U3R5bGUgLSBSZXR1cm5zIHRoZSBzdHlsZSBvYmplY3QgZm9yIHRoZSBtb2RhbCBjb250ZW50LlxuICogQGdldHRlciBpbnB1dFN0eWxlIC0gUmV0dXJucyB0aGUgc3R5bGUgb2JqZWN0IGZvciB0aGUgaW5wdXQgZmllbGQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxhcHAtd2FpdGluZy1yb29tLW1vZGFsXG4gKiAgW2lzV2FpdGluZ01vZGFsVmlzaWJsZV09XCJ0cnVlXCJcbiAqIFt3YWl0aW5nUm9vbUNvdW50ZXJdPVwid2FpdGluZ1Jvb21Db3VudGVyXCJcbiAqIFt3YWl0aW5nUm9vbUxpc3RdPVwid2FpdGluZ1Jvb21MaXN0XCJcbiAqIFtyb29tTmFtZV09XCJyb29tTmFtZVwiXG4gKiBbc29ja2V0XT1cInNvY2tldFwiXG4gKiBbcG9zaXRpb25dPVwiJ3RvcFJpZ2h0J1wiXG4gKiBbYmFja2dyb3VuZENvbG9yXT1cIicjODNjMGU5J1wiXG4gKiBbcGFyYW1ldGVyc109XCJ3YWl0aW5nUm9vbU1vZGFsUGFyYW1zXCJcbiAqIFtvbldhaXRpbmdSb29tQ2xvc2VdPVwiY2xvc2VXYWl0aW5nUm9vbU1vZGFsXCJcbiAqIFtvbldhaXRpbmdSb29tRmlsdGVyQ2hhbmdlXT1cImZpbHRlcldhaXRpbmdSb29tXCJcbiAqIFt1cGRhdGVXYWl0aW5nTGlzdF09XCJ1cGRhdGVXYWl0aW5nTGlzdFwiXG4gKiBbb25XYWl0aW5nUm9vbUl0ZW1QcmVzc109XCJoYW5kbGVXYWl0aW5nUm9vbUl0ZW1QcmVzc1wiXG4gKiA+PC9hcHAtd2FpdGluZy1yb29tLW1vZGFsPlxuICogYGBgXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtd2FpdGluZy1yb29tLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGUsIEZvcm1zTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhaXRpbmctcm9vbS1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhaXRpbmctcm9vbS1tb2RhbC5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFdhaXRpbmdSb29tTW9kYWwgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzcG9uZFRvV2FpdGluZ1NlcnZpY2U6IFJlc3BvbmRUb1dhaXRpbmcpIHt9XG5cbiAgQElucHV0KCkgaXNXYWl0aW5nTW9kYWxWaXNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHdhaXRpbmdSb29tQ291bnRlciA9IDA7XG4gIEBJbnB1dCgpIHdhaXRpbmdSb29tTGlzdDogV2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdID0gW107XG4gIEBJbnB1dCgpIHJvb21OYW1lID0gJyc7XG4gIEBJbnB1dCgpIHNvY2tldDogU29ja2V0ID0ge30gYXMgU29ja2V0O1xuICBASW5wdXQoKSBwb3NpdGlvbiA9ICd0b3BSaWdodCc7XG4gIEBJbnB1dCgpIGJhY2tncm91bmRDb2xvciA9ICcjODNjMGU5JztcbiAgQElucHV0KCkgcGFyYW1ldGVyczogV2FpdGluZ1Jvb21Nb2RhbFBhcmFtZXRlcnMgPSB7fSBhcyBXYWl0aW5nUm9vbU1vZGFsUGFyYW1ldGVycztcbiAgQElucHV0KCkgb25XYWl0aW5nUm9vbUNsb3NlOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIEBJbnB1dCgpIG9uV2FpdGluZ1Jvb21GaWx0ZXJDaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIEBJbnB1dCgpIHVwZGF0ZVdhaXRpbmdMaXN0OiAoZGF0YTogV2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIEBJbnB1dCgpIG9uV2FpdGluZ1Jvb21JdGVtUHJlc3MhOiAoZGF0YTogUmVzcG9uZFRvV2FpdGluZ09wdGlvbnMpID0+IHZvaWQ7XG5cbiAgZmFUaW1lcyA9IGZhVGltZXM7XG4gIGZhQ2hlY2sgPSBmYUNoZWNrO1xuICB3YWl0aW5nUm9vbUxpc3RfczogV2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdID0gW107XG4gIHdhaXRpbmdSb29tQ291bnRlcl9zID0gMDtcbiAgcmVSZW5kZXIgPSBmYWxzZTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoIXRoaXMub25XYWl0aW5nUm9vbUl0ZW1QcmVzcykge1xuICAgICAgdGhpcy5vbldhaXRpbmdSb29tSXRlbVByZXNzID0gKGRhdGE6IGFueSkgPT5cbiAgICAgICAgdGhpcy5yZXNwb25kVG9XYWl0aW5nU2VydmljZS5yZXNwb25kVG9XYWl0aW5nKGRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snd2FpdGluZ1Jvb21MaXN0J10gfHwgY2hhbmdlc1sncmVSZW5kZXInXSkge1xuICAgICAgdGhpcy51cGRhdGVQYXJhbWV0ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlUGFyYW1ldGVycygpIHtcbiAgICBsZXQgeyBnZXRVcGRhdGVkQWxsUGFyYW1zIH0gPSB0aGlzLnBhcmFtZXRlcnM7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuXG4gICAgdGhpcy53YWl0aW5nUm9vbUxpc3RfcyA9IHRoaXMucGFyYW1ldGVycy5maWx0ZXJlZFdhaXRpbmdSb29tTGlzdDtcbiAgICB0aGlzLndhaXRpbmdSb29tQ291bnRlcl9zID0gdGhpcy5wYXJhbWV0ZXJzLmZpbHRlcmVkV2FpdGluZ1Jvb21MaXN0Lmxlbmd0aDtcbiAgfVxuXG4gIGhhbmRsZU1vZGFsQ2xvc2UoKSB7XG4gICAgdGhpcy5vbldhaXRpbmdSb29tQ2xvc2UoKTtcbiAgfVxuXG4gIGhhbmRsZUZpbHRlckNoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCB2YWx1ZSA9IGlucHV0RWxlbWVudD8udmFsdWUgfHwgJyc7XG4gICAgdGhpcy5vbldhaXRpbmdSb29tRmlsdGVyQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLnJlUmVuZGVyID0gIXRoaXMucmVSZW5kZXI7XG4gIH1cblxuICBoYW5kbGVJdGVtUHJlc3MocGFydGljaXBhbnQ6IFdhaXRpbmdSb29tUGFydGljaXBhbnQsIHR5cGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9uV2FpdGluZ1Jvb21JdGVtUHJlc3Moe1xuICAgICAgcGFydGljaXBhbnRJZDogcGFydGljaXBhbnQuaWQsXG4gICAgICBwYXJ0aWNpcGFudE5hbWU6IHBhcnRpY2lwYW50Lm5hbWUsXG4gICAgICB1cGRhdGVXYWl0aW5nTGlzdDogdGhpcy51cGRhdGVXYWl0aW5nTGlzdCxcbiAgICAgIHdhaXRpbmdMaXN0OiB0aGlzLndhaXRpbmdSb29tTGlzdCxcbiAgICAgIHJvb21OYW1lOiB0aGlzLnJvb21OYW1lLFxuICAgICAgdHlwZTogdHlwZSwgLy8gdHJ1ZSBmb3IgYWNjZXB0ZWQsIGZhbHNlIGZvciByZWplY3RlZFxuICAgICAgc29ja2V0OiB0aGlzLnNvY2tldCxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtb2RhbENvbnRhaW5lclN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbGVmdDogJzAnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjUpJyxcbiAgICAgIGRpc3BsYXk6IHRoaXMuaXNXYWl0aW5nTW9kYWxWaXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJyxcbiAgICAgIHpJbmRleDogJzk5OScsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBtb2RhbENvbnRlbnRTdHlsZSgpIHtcbiAgICBjb25zdCBzY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIGxldCBtb2RhbFdpZHRoID0gMC44ICogc2NyZWVuV2lkdGg7XG4gICAgaWYgKG1vZGFsV2lkdGggPiAzNTApIHtcbiAgICAgIG1vZGFsV2lkdGggPSAzNTA7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxMHB4JyxcbiAgICAgIHBhZGRpbmc6ICcxMHB4JyxcbiAgICAgIHdpZHRoOiBgJHttb2RhbFdpZHRofXB4YCxcbiAgICAgIG1heEhlaWdodDogJzY1JScsXG4gICAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICAgIHRvcDogdGhpcy5wb3NpdGlvbi5pbmNsdWRlcygndG9wJykgPyAnMTBweCcgOiAnYXV0bycsXG4gICAgICBib3R0b206IHRoaXMucG9zaXRpb24uaW5jbHVkZXMoJ2JvdHRvbScpID8gJzEwcHgnIDogJ2F1dG8nLFxuICAgICAgbGVmdDogdGhpcy5wb3NpdGlvbi5pbmNsdWRlcygnTGVmdCcpID8gJzEwcHgnIDogJ2F1dG8nLFxuICAgICAgcmlnaHQ6IHRoaXMucG9zaXRpb24uaW5jbHVkZXMoJ1JpZ2h0JykgPyAnMTBweCcgOiAnYXV0bycsXG4gICAgfTtcbiAgfVxuXG4gIGdldCBpbnB1dFN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogJzkwJScsXG4gICAgICBwYWRkaW5nOiAnMTBweCcsXG4gICAgICBib3JkZXJSYWRpdXM6ICc1cHgnLFxuICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICMwMDAnLFxuICAgICAgZm9udFNpemU6ICcxNnB4JyxcbiAgICAgIG1hcmdpbkJvdHRvbTogJzEwcHgnLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJpc1dhaXRpbmdNb2RhbFZpc2libGVcIiBbbmdTdHlsZV09XCJtb2RhbENvbnRhaW5lclN0eWxlXCI+XHJcbiAgPGRpdiBbbmdTdHlsZV09XCJtb2RhbENvbnRlbnRTdHlsZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cclxuICAgICAgICBXYWl0aW5nIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIj57eyB3YWl0aW5nUm9vbUNvdW50ZXJfcyB9fTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKGNsaWNrKT1cImhhbmRsZU1vZGFsQ2xvc2UoKVwiIGNsYXNzPVwiYnRuLWNsb3NlLXdhaXRpbmdzXCI+XHJcbiAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFUaW1lc1wiIGNsYXNzPVwiaWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxociBjbGFzcz1cImhyXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICBbbmdTdHlsZV09XCJpbnB1dFN0eWxlXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIC4uLlwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwiaGFuZGxlRmlsdGVyQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwid2FpdGluZy1saXN0XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHBhcnRpY2lwYW50IG9mIHdhaXRpbmdSb29tTGlzdF9zXCJcclxuICAgICAgICAgIGNsYXNzPVwid2FpdGluZy1pdGVtXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sN1wiPnt7IHBhcnRpY2lwYW50Lm5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUl0ZW1QcmVzcyhwYXJ0aWNpcGFudCwgdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYUNoZWNrXCIgc2l6ZT1cImxnXCIgY29sb3I9XCJncmVlblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUl0ZW1QcmVzcyhwYXJ0aWNpcGFudCwgZmFsc2UpXCI+XHJcbiAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFUaW1lc1wiIHNpemU9XCJsZ1wiIGNvbG9yPVwicmVkXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbDFcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -6,6 +6,27 @@ import { Socket } from 'socket.io-client';
|
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@angular/common";
|
|
8
8
|
import * as i2 from "@fortawesome/angular-fontawesome";
|
|
9
|
+
/**
|
|
10
|
+
* @component ConfigureWhiteboardModal
|
|
11
|
+
* @description A modal component to configure and manage whiteboard settings and participants.
|
|
12
|
+
*
|
|
13
|
+
* @selector app-configure-whiteboard-modal
|
|
14
|
+
* @standalone true
|
|
15
|
+
* @imports [CommonModule, FontAwesomeModule]
|
|
16
|
+
* @templateUrl ./configure-whiteboard-modal.component.html
|
|
17
|
+
* @styleUrls ./configure-whiteboard-modal.component.css
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```html
|
|
21
|
+
* <app-configure-whiteboard-modal
|
|
22
|
+
* [isVisible]="isWhiteboardModalVisible"
|
|
23
|
+
* [parameters]="whiteboardParameters"
|
|
24
|
+
* [backgroundColor]="'#83c0e9'"
|
|
25
|
+
* [position]="'topRight'"
|
|
26
|
+
* (onConfigureWhiteboardClose)="handleCloseModal()">
|
|
27
|
+
* </app-configure-whiteboard-modal>
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
9
30
|
export class ConfigureWhiteboardModal {
|
|
10
31
|
isVisible = false;
|
|
11
32
|
parameters = {};
|
|
@@ -262,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
262
283
|
}], onConfigureWhiteboardClose: [{
|
|
263
284
|
type: Input
|
|
264
285
|
}] } });
|
|
265
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLXdoaXRlYm9hcmQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvd2hpdGVib2FyZC1jb21wb25lbnRzL2NvbmZpZ3VyZS13aGl0ZWJvYXJkLW1vZGFsL2NvbmZpZ3VyZS13aGl0ZWJvYXJkLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3doaXRlYm9hcmQtY29tcG9uZW50cy9jb25maWd1cmUtd2hpdGVib2FyZC1tb2RhbC9jb25maWd1cmUtd2hpdGVib2FyZC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFnQmhHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQThEMUMsTUFBTSxPQUFPLHdCQUF3QjtJQUMxQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLFVBQVUsR0FDakIsRUFBd0MsQ0FBQztJQUNsQyxlQUFlLEdBQUcsU0FBUyxDQUFDO0lBQzVCLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDdEIsMEJBQTBCLENBQWM7SUFFakQsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUNsQixPQUFPLEdBQUcsT0FBTyxDQUFDO0lB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TUFBTTtZQUMxRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUN0RCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtTQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QixHQUFHLEdBQUcsRUFBRTtRQUM3QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUM7dUdBaFRTLHdCQUF3QjsyRkFBeEIsd0JBQXdCLGlTQ2pGckMsNDBIQXVFQSx3SURRWSxZQUFZLG9WQUFFLGlCQUFpQjs7MkZBRTlCLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxnQ0FBZ0MsY0FDOUIsSUFBSSxXQUdQLENBQUMsWUFBWSxFQUFFLGlCQUFpQixDQUFDOzhCQUdqQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYVRpbWVzLCBmYUNoZWNrLCBmYVN5bmNBbHQsIGZhUGxheSwgZmFTYXZlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7XG4gIENhcHR1cmVDYW52YXNTdHJlYW1QYXJhbWV0ZXJzLFxuICBDYXB0dXJlQ2FudmFzU3RyZWFtVHlwZSxcbiAgRXZlbnRUeXBlLFxuICBPblNjcmVlbkNoYW5nZXNQYXJhbWV0ZXJzLFxuICBPblNjcmVlbkNoYW5nZXNUeXBlLFxuICBQYXJ0aWNpcGFudCxcbiAgUHJlcG9wdWxhdGVVc2VyTWVkaWFQYXJhbWV0ZXJzLFxuICBQcmVwb3B1bGF0ZVVzZXJNZWRpYVR5cGUsXG4gIFJlUG9ydFBhcmFtZXRlcnMsXG4gIFJlUG9ydFR5cGUsXG4gIFNob3dBbGVydCxcbiAgV2hpdGVib2FyZFVwZGF0ZWREYXRhLFxuICBXaGl0ZWJvYXJkVXNlcixcbn0gZnJvbSAnLi4vLi4vLi4vQHR5cGVzL3R5cGVzJztcbmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ3NvY2tldC5pby1jbGllbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFBhcmFtZXRlcnNcbiAgZXh0ZW5kcyBPblNjcmVlbkNoYW5nZXNQYXJhbWV0ZXJzLFxuICAgIENhcHR1cmVDYW52YXNTdHJlYW1QYXJhbWV0ZXJzLFxuICAgIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgICBSZVBvcnRQYXJhbWV0ZXJzIHtcbiAgcGFydGljaXBhbnRzOiBQYXJ0aWNpcGFudFtdO1xuICBzaG93QWxlcnQ/OiBTaG93QWxlcnQ7XG4gIHNvY2tldDogU29ja2V0O1xuICBpdGVtUGFnZUxpbWl0OiBudW1iZXI7XG4gIGlzbGV2ZWw6IHN0cmluZztcbiAgcm9vbU5hbWU6IHN0cmluZztcbiAgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gIHNoYXJlU2NyZWVuU3RhcnRlZDogYm9vbGVhbjtcbiAgc2hhcmVkOiBib29sZWFuO1xuICBicmVha091dFJvb21TdGFydGVkOiBib29sZWFuO1xuICBicmVha091dFJvb21FbmRlZDogYm9vbGVhbjtcbiAgcmVjb3JkU3RhcnRlZDogYm9vbGVhbjtcbiAgcmVjb3JkUmVzdW1lZDogYm9vbGVhbjtcbiAgcmVjb3JkUGF1c2VkOiBib29sZWFuO1xuICByZWNvcmRTdG9wcGVkOiBib29sZWFuO1xuICByZWNvcmRpbmdNZWRpYU9wdGlvbnM6IHN0cmluZztcbiAgY2FuU3RhcnRXaGl0ZWJvYXJkOiBib29sZWFuO1xuICB3aGl0ZWJvYXJkU3RhcnRlZDogYm9vbGVhbjtcbiAgd2hpdGVib2FyZEVuZGVkOiBib29sZWFuO1xuICBob3N0TGFiZWw6IHN0cmluZztcbiAgdXBkYXRlV2hpdGVib2FyZFN0YXJ0ZWQ6IChzdGFydGVkOiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVXaGl0ZWJvYXJkRW5kZWQ6IChlbmRlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlV2hpdGVib2FyZFVzZXJzOiAodXNlcnM6IFdoaXRlYm9hcmRVc2VyW10pID0+IHZvaWQ7XG4gIHVwZGF0ZUNhblN0YXJ0V2hpdGVib2FyZDogKGNhblN0YXJ0OiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVJc0NvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFZpc2libGU6IChpc1Zpc2libGU6IGJvb2xlYW4pID0+IHZvaWQ7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIG9uU2NyZWVuQ2hhbmdlczogT25TY3JlZW5DaGFuZ2VzVHlwZTtcbiAgY2FwdHVyZUNhbnZhc1N0cmVhbTogQ2FwdHVyZUNhbnZhc1N0cmVhbVR5cGU7XG4gIHByZXBvcHVsYXRlVXNlck1lZGlhOiBQcmVwb3B1bGF0ZVVzZXJNZWRpYVR5cGU7XG4gIHJlUG9ydDogUmVQb3J0VHlwZTtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWxQYXJhbWV0ZXJzO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsT3B0aW9ucyB7XG4gIGlzQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsVmlzaWJsZTogYm9vbGVhbjtcbiAgb25DbG9zZTogKCkgPT4gdm9pZDtcbiAgcG9zaXRpb24/OiBzdHJpbmc7XG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgcGFyYW1ldGVyczogQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsUGFyYW1ldGVycztcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsVHlwZSA9IChcbiAgb3B0aW9uczogQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsT3B0aW9ucyxcbikgPT4gSFRNTEVsZW1lbnQ7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jb25maWd1cmUtd2hpdGVib2FyZC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWd1cmUtd2hpdGVib2FyZC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZ3VyZS13aGl0ZWJvYXJkLW1vZGFsLmNvbXBvbmVudC5jc3MnXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9udEF3ZXNvbWVNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWwgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBwYXJhbWV0ZXJzOiBDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWxQYXJhbWV0ZXJzID1cbiAgICB7fSBhcyBDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWxQYXJhbWV0ZXJzO1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kQ29sb3IgPSAnIzgzYzBlOSc7XG4gIEBJbnB1dCgpIHBvc2l0aW9uID0gJ3RvcFJpZ2h0JztcbiAgQElucHV0KCkgb25Db25maWd1cmVXaGl0ZWJvYXJkQ2xvc2UhOiAoKSA9PiB2b2lkO1xuXG4gIGZhVGltZXMgPSBmYVRpbWVzO1xuICBmYUNoZWNrID0gZmFDaGVjaztcbiAgZmFTeW5jQWx0ID0gZmFTeW5jQWx0O1xuICBmYVBsYXkgPSBmYVBsYXk7XG4gIGZhU2F2ZSA9IGZhU2F2ZTtcblxuICBwYXJ0aWNpcGFudHNDb3B5OiBQYXJ0aWNpcGFudFtdID0gW107XG4gIHdoaXRlYm9hcmRMaW1pdCE6IG51bWJlcjtcbiAgaXNFZGl0aW5nID0gZmFsc2U7XG4gIGNhblN0YXJ0V2hpdGVib2FyZCA9IGZhbHNlO1xuICBhc3NpZ25lZFBhcnRpY2lwYW50czogYW55W10gPSBbXTtcbiAgdW5hc3NpZ25lZFBhcnRpY2lwYW50czogYW55W10gPSBbXTtcbiAgd2hpdGVib2FyZFN0YXJ0ZWQgPSBmYWxzZTtcbiAgd2hpdGVib2FyZEVuZGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzb2NrZXQ6IFNvY2tldCA9IHt9IGFzIFNvY2tldDtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzICYmIHRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMgPSB0aGlzLnBhcmFtZXRlcnMuZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8qIGhhbmRsZSBlcnJvciAqL1xuICAgICAgfVxuICAgICAgdGhpcy53aGl0ZWJvYXJkTGltaXQgPSB0aGlzLnBhcmFtZXRlcnMuaXRlbVBhZ2VMaW1pdDtcbiAgICAgIHRoaXMud2hpdGVib2FyZFN0YXJ0ZWQgPSB0aGlzLnBhcmFtZXRlcnMud2hpdGVib2FyZFN0YXJ0ZWQ7XG4gICAgICB0aGlzLndoaXRlYm9hcmRFbmRlZCA9IHRoaXMucGFyYW1ldGVycy53aGl0ZWJvYXJkRW5kZWQ7XG4gICAgICB0aGlzLmNoZWNrQ2FuU3RhcnRXaGl0ZWJvYXJkKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGFyYW1ldGVycykge1xuICAgICAgdGhpcy5zb2NrZXQgPSB0aGlzLnBhcmFtZXRlcnMuc29ja2V0O1xuICAgICAgaWYgKHRoaXMuc29ja2V0KSB7XG4gICAgICAgIHRoaXMuc2V0dXBTb2NrZXRMaXN0ZW5lcnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3BhcmFtZXRlcnMnXSAmJiB0aGlzLnBhcmFtZXRlcnMpIHtcbiAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMgJiYgdGhpcy5pc1Zpc2libGUpIHtcbiAgICAgICAgdGhpcy53aGl0ZWJvYXJkTGltaXQgPSB0aGlzLnBhcmFtZXRlcnMuaXRlbVBhZ2VMaW1pdDtcbiAgICAgICAgdGhpcy53aGl0ZWJvYXJkU3RhcnRlZCA9IHRoaXMucGFyYW1ldGVycy53aGl0ZWJvYXJkU3RhcnRlZDtcbiAgICAgICAgdGhpcy53aGl0ZWJvYXJkRW5kZWQgPSB0aGlzLnBhcmFtZXRlcnMud2hpdGVib2FyZEVuZGVkO1xuICAgICAgICB0aGlzLmNoZWNrQ2FuU3RhcnRXaGl0ZWJvYXJkKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc29ja2V0ID0gdGhpcy5wYXJhbWV0ZXJzLnNvY2tldDtcbiAgICAgIGlmICh0aGlzLnNvY2tldCkge1xuICAgICAgICB0aGlzLnNldHVwU29ja2V0TGlzdGVuZXJzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2lzVmlzaWJsZSddICYmIHRoaXMuaXNWaXNpYmxlKSB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMgPSB0aGlzLnBhcmFtZXRlcnMuZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuICAgICAgaWYgKCF0aGlzLnBhcnRpY2lwYW50c0NvcHkubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkUGFydGljaXBhbnRzID0gdGhpcy5wYXJhbWV0ZXJzLnBhcnRpY2lwYW50cy5maWx0ZXIoXG4gICAgICAgICAgKHBhcnRpY2lwYW50OiBQYXJ0aWNpcGFudCkgPT4gcGFydGljaXBhbnQuaXNsZXZlbCAhPSAnMicsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucGFydGljaXBhbnRzQ29weSA9IGZpbHRlcmVkUGFydGljaXBhbnRzO1xuICAgICAgICB0aGlzLnVwZGF0ZVBhcnRpY2lwYW50c0xpc3RzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoZWNrQ2FuU3RhcnRXaGl0ZWJvYXJkKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0dXBTb2NrZXRMaXN0ZW5lcnMgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuc29ja2V0ICYmIHRoaXMuc29ja2V0IGluc3RhbmNlb2YgU29ja2V0KSB7XG4gICAgICB0aGlzLnNvY2tldC5vbignd2hpdGVib2FyZFVwZGF0ZWQnLCBhc3luYyAoZGF0YTogV2hpdGVib2FyZFVwZGF0ZWREYXRhKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMuaXNsZXZlbCA9PSAnMicgJiYgZGF0YS5tZW1iZXJzKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRQYXJ0aWNpcGFudHMgPSBkYXRhLm1lbWJlcnMuZmlsdGVyKFxuICAgICAgICAgICAgKHBhcnRpY2lwYW50OiBhbnkpID0+ICFwYXJ0aWNpcGFudC5pc0Jhbm5lZCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMucGFydGljaXBhbnRzQ29weSA9IGZpbHRlcmVkUGFydGljaXBhbnRzO1xuICAgICAgICAgIHRoaXMudXBkYXRlUGFydGljaXBhbnRzTGlzdHMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVXaGl0ZWJvYXJkVXNlcnMoZGF0YS53aGl0ZWJvYXJkVXNlcnMpO1xuXG4gICAgICAgIGlmIChkYXRhLnN0YXR1cyA9PSAnc3RhcnRlZCcpIHtcbiAgICAgICAgICB0aGlzLndoaXRlYm9hcmRTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLndoaXRlYm9hcmRFbmRlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVXaGl0ZWJvYXJkU3RhcnRlZCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlV2hpdGVib2FyZEVuZGVkKGZhbHNlKTtcblxuICAgICAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMuaXNsZXZlbCAhPSAnMicpIHtcbiAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy5zaGFyZVNjcmVlblN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wYXJhbWV0ZXJzLm9uU2NyZWVuQ2hhbmdlcyh7IGNoYW5nZWQ6IHRydWUsIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGF0YS5zdGF0dXMgPT0gJ2VuZGVkJykge1xuICAgICAgICAgIHRoaXMud2hpdGVib2FyZEVuZGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLndoaXRlYm9hcmRTdGFydGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZVdoaXRlYm9hcmRTdGFydGVkKGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlV2hpdGVib2FyZEVuZGVkKHRydWUpO1xuXG4gICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNoYXJlU2NyZWVuU3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICAgIGF3YWl0IHRoaXMucGFyYW1ldGVycy5vblNjcmVlbkNoYW5nZXMoeyBjaGFuZ2VkOiB0cnVlLCBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wYXJhbWV0ZXJzLnByZXBvcHVsYXRlVXNlck1lZGlhKHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMucGFyYW1ldGVycy5ob3N0TGFiZWwsXG4gICAgICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wYXJhbWV0ZXJzLnJlUG9ydCh7IHJlc3RhcnQ6IHRydWUsIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHRvZ2dsZVBhcnRpY2lwYW50ID0gKHBhcnRpY2lwYW50OiBhbnksIGFkZDogYm9vbGVhbikgPT4ge1xuICAgIHRoaXMuaXNFZGl0aW5nID0gdHJ1ZTtcbiAgICBjb25zdCBzZWxlY3RlZFBhcnRpY2lwYW50cyA9IHRoaXMucGFydGljaXBhbnRzQ29weS5maWx0ZXIoKHApID0+IHAudXNlQm9hcmQpO1xuICAgIGlmIChhZGQgJiYgc2VsZWN0ZWRQYXJ0aWNpcGFudHMubGVuZ3RoID49IHRoaXMud2hpdGVib2FyZExpbWl0IC0gMSkge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogYFBhcnRpY2lwYW50IGxpbWl0IGV4Y2VlZGVkIC0geW91IGNhbiBvbmx5IGFkZCAke1xuICAgICAgICAgIHRoaXMud2hpdGVib2FyZExpbWl0IC0gMVxuICAgICAgICB9IG90aGVyIHBhcnRpY2lwYW50c2AsXG4gICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wYXJ0aWNpcGFudHNDb3B5ID0gdGhpcy5wYXJ0aWNpcGFudHNDb3B5Lm1hcCgocCkgPT5cbiAgICAgIHAubmFtZSA9PT0gcGFydGljaXBhbnQubmFtZSA/IHsgLi4ucCwgdXNlQm9hcmQ6IGFkZCB9IDogcCxcbiAgICApO1xuICAgIHRoaXMudXBkYXRlUGFydGljaXBhbnRzTGlzdHMoKTtcbiAgfTtcblxuICB2YWxpZGF0ZVdoaXRlYm9hcmQoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRQYXJ0aWNpcGFudHMgPSB0aGlzLnBhcnRpY2lwYW50c0NvcHkuZmlsdGVyKFxuICAgICAgKHBhcnRpY2lwYW50KSA9PiBwYXJ0aWNpcGFudC51c2VCb2FyZCxcbiAgICApO1xuICAgIGlmIChzZWxlY3RlZFBhcnRpY2lwYW50cy5sZW5ndGggPiB0aGlzLndoaXRlYm9hcmRMaW1pdCkge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNob3dBbGVydD8uKHsgbWVzc2FnZTogJ1BhcnRpY2lwYW50IGxpbWl0IGV4Y2VlZGVkJywgdHlwZTogJ2RhbmdlcicgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2hlY2tDYW5TdGFydFdoaXRlYm9hcmQoKSB7XG4gICAgY29uc3QgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVXaGl0ZWJvYXJkKCk7XG4gICAgdGhpcy5jYW5TdGFydFdoaXRlYm9hcmQgPSBpc1ZhbGlkO1xuICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVDYW5TdGFydFdoaXRlYm9hcmQoaXNWYWxpZCk7XG4gIH1cblxuICBoYW5kbGVTYXZlV2hpdGVib2FyZCgpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0ZVdoaXRlYm9hcmQoKSkge1xuICAgICAgdGhpcy5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2FuU3RhcnRXaGl0ZWJvYXJkID0gdHJ1ZTtcbiAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVDYW5TdGFydFdoaXRlYm9hcmQodHJ1ZSk7XG4gICAgICB0aGlzLmNoZWNrQ2FuU3RhcnRXaGl0ZWJvYXJkKCk7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMuc2hvd0FsZXJ0Py4oeyBtZXNzYWdlOiAnV2hpdGVib2FyZCBzYXZlZCBzdWNjZXNzZnVsbHknLCB0eXBlOiAnc3VjY2VzcycgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFyYW1ldGVycy5zaG93QWxlcnQ/Lih7IG1lc3NhZ2U6ICdXaGl0ZWJvYXJkIHZhbGlkYXRpb24gZmFpbGVkJywgdHlwZTogJ2RhbmdlcicgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaGFuZGxlU3RhcnRXaGl0ZWJvYXJkKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHNoYXJlU2NyZWVuU3RhcnRlZCxcbiAgICAgIHNoYXJlZCxcbiAgICAgIGJyZWFrT3V0Um9vbVN0YXJ0ZWQsXG4gICAgICBicmVha091dFJvb21FbmRlZCxcbiAgICAgIHJvb21OYW1lLFxuICAgICAgc29ja2V0LFxuICAgICAgcmVjb3JkU3RhcnRlZCxcbiAgICAgIHJlY29yZFJlc3VtZWQsXG4gICAgICByZWNvcmRQYXVzZWQsXG4gICAgICByZWNvcmRTdG9wcGVkLFxuICAgICAgcmVjb3JkaW5nTWVkaWFPcHRpb25zLFxuICAgICAgb25TY3JlZW5DaGFuZ2VzLFxuICAgICAgY2FwdHVyZUNhbnZhc1N0cmVhbSxcbiAgICAgIHNob3dBbGVydCxcbiAgICB9ID0gdGhpcy5wYXJhbWV0ZXJzO1xuXG4gICAgaWYgKChzaGFyZVNjcmVlblN0YXJ0ZWQgfHwgc2hhcmVkKSAmJiAhdGhpcy53aGl0ZWJvYXJkU3RhcnRlZCkge1xuICAgICAgc2hvd0FsZXJ0Py4oe1xuICAgICAgICBtZXNzYWdlOiAnWW91IGNhbm5vdCBzdGFydCB3aGl0ZWJvYXJkIHdoaWxlIHNjcmVlbiBzaGFyaW5nIGlzIGFjdGl2ZScsXG4gICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGJyZWFrT3V0Um9vbVN0YXJ0ZWQgJiYgIWJyZWFrT3V0Um9vbUVuZGVkKSB7XG4gICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgIG1lc3NhZ2U6ICdZb3UgY2Fubm90IHN0YXJ0IHdoaXRlYm9hcmQgd2hpbGUgYnJlYWtvdXQgcm9vbXMgYXJlIGFjdGl2ZScsXG4gICAgICAgIHR5cGU6ICdkYW5nZXInLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FuU3RhcnRXaGl0ZWJvYXJkKSB7XG4gICAgICBjb25zdCBlbWl0TmFtZSA9XG4gICAgICAgIHRoaXMud2hpdGVib2FyZFN0YXJ0ZWQgJiYgIXRoaXMud2hpdGVib2FyZEVuZGVkID8gJ3VwZGF0ZVdoaXRlYm9hcmQnIDogJ3N0YXJ0V2hpdGVib2FyZCc7XG4gICAgICBjb25zdCBmaWx0ZXJlZFdoaXRlYm9hcmRVc2VycyA9IHRoaXMucGFydGljaXBhbnRzQ29weVxuICAgICAgICAuZmlsdGVyKChwYXJ0aWNpcGFudCkgPT4gcGFydGljaXBhbnQudXNlQm9hcmQpXG4gICAgICAgIC5tYXAoKHsgbmFtZSwgdXNlQm9hcmQgfSkgPT4gKHsgbmFtZSwgdXNlQm9hcmQgfSkpO1xuICAgICAgc29ja2V0LmVtaXQoXG4gICAgICAgIGVtaXROYW1lLFxuICAgICAgICB7IHdoaXRlYm9hcmRVc2VyczogZmlsdGVyZWRXaGl0ZWJvYXJkVXNlcnMsIHJvb21OYW1lIH0sXG4gICAgICAgIGFzeW5jIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHNob3dBbGVydD8uKHsgbWVzc2FnZTogJ1doaXRlYm9hcmQgYWN0aXZlJywgdHlwZTogJ3N1Y2Nlc3MnIH0pO1xuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy53aGl0ZWJvYXJkRW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVXaGl0ZWJvYXJkU3RhcnRlZCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVXaGl0ZWJvYXJkRW5kZWQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZUlzQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsVmlzaWJsZShmYWxzZSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtZXRlcnMuaXNsZXZlbCAhPSAnMicpIHtcbiAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNoYXJlU2NyZWVuU3RhcnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGF3YWl0IG9uU2NyZWVuQ2hhbmdlcyh7IGNoYW5nZWQ6IHRydWUsIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVycy5pc2xldmVsID09ICcyJyAmJiAocmVjb3JkU3RhcnRlZCB8fCByZWNvcmRSZXN1bWVkKSkge1xuICAgICAgICAgICAgICBpZiAoIShyZWNvcmRQYXVzZWQgfHwgcmVjb3JkU3RvcHBlZCkgJiYgcmVjb3JkaW5nTWVkaWFPcHRpb25zID09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjYXB0dXJlQ2FudmFzU3RyZWFtKHsgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNob3dBbGVydD8uKHsgbWVzc2FnZTogcmVzcG9uc2UucmVhc29uLCB0eXBlOiAnZGFuZ2VyJyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVN0b3BXaGl0ZWJvYXJkKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHJvb21OYW1lLFxuICAgICAgc29ja2V0LFxuICAgICAgc2hvd0FsZXJ0LFxuICAgICAgdXBkYXRlV2hpdGVib2FyZFN0YXJ0ZWQsXG4gICAgICB1cGRhdGVXaGl0ZWJvYXJkRW5kZWQsXG4gICAgICB1cGRhdGVJc0NvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFZpc2libGUsXG4gICAgICBvblNjcmVlbkNoYW5nZXMsXG4gICAgICBwcmVwb3B1bGF0ZVVzZXJNZWRpYSxcbiAgICAgIHJlUG9ydCxcbiAgICAgIGhvc3RMYWJlbCxcbiAgICB9ID0gdGhpcy5wYXJhbWV0ZXJzO1xuICAgIHNvY2tldC5lbWl0KCdzdG9wV2hpdGVib2FyZCcsIHsgcm9vbU5hbWUgfSwgYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgIHNob3dBbGVydD8uKHsgbWVzc2FnZTogJ1doaXRlYm9hcmQgc3RvcHBlZCcsIHR5cGU6ICdzdWNjZXNzJyB9KTtcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRFbmRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycy53aGl0ZWJvYXJkU3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICB1cGRhdGVXaGl0ZWJvYXJkU3RhcnRlZChmYWxzZSk7XG4gICAgICAgIHVwZGF0ZVdoaXRlYm9hcmRFbmRlZCh0cnVlKTtcbiAgICAgICAgdXBkYXRlSXNDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWxWaXNpYmxlKGZhbHNlKTtcblxuICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2hhcmVTY3JlZW5TdGFydGVkID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IG9uU2NyZWVuQ2hhbmdlcyh7IGNoYW5nZWQ6IHRydWUsIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgYXdhaXQgcHJlcG9wdWxhdGVVc2VyTWVkaWEoeyBuYW1lOiBob3N0TGFiZWwsIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgYXdhaXQgcmVQb3J0KHsgcmVzdGFydDogdHJ1ZSwgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2hvd0FsZXJ0Py4oeyBtZXNzYWdlOiByZXNwb25zZS5yZWFzb24sIHR5cGU6ICdkYW5nZXInIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbW9kYWxDb250YWluZXJTdHlsZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICB0b3A6IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjUpJyxcbiAgICAgIGRpc3BsYXk6IHRoaXMuaXNWaXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJyxcbiAgICAgIHpJbmRleDogOTk5LFxuICAgIH07XG4gIH1cblxuICBtb2RhbENvbnRlbnRTdHlsZSgpIHtcbiAgICBjb25zdCBzY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIGxldCBtb2RhbFdpZHRoID0gMC43ICogc2NyZWVuV2lkdGg7XG4gICAgaWYgKG1vZGFsV2lkdGggPiA0MDApIHtcbiAgICAgIG1vZGFsV2lkdGggPSA0MDA7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxMHB4JyxcbiAgICAgIHBhZGRpbmc6ICcxMHB4JyxcbiAgICAgIHdpZHRoOiBtb2RhbFdpZHRoICsgJ3B4JyxcbiAgICAgIG1heFdpZHRoOiBtb2RhbFdpZHRoICsgJ3B4JyxcbiAgICAgIG1heEhlaWdodDogJzc1JScsXG4gICAgICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgICAgIG92ZXJmbG93WDogJ2hpZGRlbicsXG4gICAgICB0b3A6IHRoaXMucG9zaXRpb24uaW5jbHVkZXMoJ3RvcCcpID8gJzEwcHgnIDogJ2F1dG8nLFxuICAgICAgYm90dG9tOiB0aGlzLnBvc2l0aW9uLmluY2x1ZGVzKCdib3R0b20nKSA/ICcxMHB4JyA6ICdhdXRvJyxcbiAgICAgIGxlZnQ6IHRoaXMucG9zaXRpb24uaW5jbHVkZXMoJ0xlZnQnKSA/ICcxMHB4JyA6ICdhdXRvJyxcbiAgICAgIHJpZ2h0OiB0aGlzLnBvc2l0aW9uLmluY2x1ZGVzKCdSaWdodCcpID8gJzEwcHgnIDogJ2F1dG8nLFxuICAgIH07XG4gIH1cblxuICB1cGRhdGVQYXJ0aWNpcGFudHNMaXN0cyA9ICgpID0+IHtcbiAgICB0aGlzLmFzc2lnbmVkUGFydGljaXBhbnRzID0gdGhpcy5wYXJ0aWNpcGFudHNDb3B5LmZpbHRlcigocCkgPT4gcC51c2VCb2FyZCk7XG4gICAgdGhpcy51bmFzc2lnbmVkUGFydGljaXBhbnRzID0gdGhpcy5wYXJ0aWNpcGFudHNDb3B5LmZpbHRlcigocCkgPT4gIXAudXNlQm9hcmQpO1xuICB9O1xufVxuIiwiPGRpdiBbbmdTdHlsZV09XCJtb2RhbENvbnRhaW5lclN0eWxlKClcIj5cclxuICA8ZGl2IFtuZ1N0eWxlXT1cIm1vZGFsQ29udGVudFN0eWxlKClcIj5cclxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1wiPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOyBtYXJnaW4tYm90dG9tOiAxNXB4O1wiPlxyXG4gICAgICAgIDxoMiBzdHlsZT1cImZvbnQtc2l6ZTogeC1sYXJnZTsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiBibGFjaztcIj5cclxuICAgICAgICAgIENvbmZpZ3VyZSBXaGl0ZWJvYXJkXHJcbiAgICAgICAgPC9oMj5cclxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNvbmZpZ3VyZVdoaXRlYm9hcmRDbG9zZSgpXCIgc3R5bGU9XCJib3JkZXI6IG5vbmU7IGJhY2tncm91bmQ6IG5vbmU7IGN1cnNvcjogcG9pbnRlcjtcIj5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhVGltZXNcIiBzaXplPVwieGxcIiBzdHlsZT1cImZvbnQtc2l6ZTogMjBweDsgY29sb3I6IGJsYWNrO1wiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG1iLTNcIj5cclxuICAgICAgICAgICAgPGg2PkFzc2lnbmVkPC9oNj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cFwiIHN0eWxlPVwibWF4LWhlaWdodDogMjAwcHg7IG92ZXJmbG93LXk6IGF1dG87IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFzc2lnbmVkUGFydGljaXBhbnRzLmxlbmd0aCA+IDA7IGVsc2Ugbm9Bc3NpZ25lZFBhcnRpY2lwYW50c1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBwYXJ0aWNpcGFudCBvZiBhc3NpZ25lZFBhcnRpY2lwYW50c1wiIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1kYXJrIG1iLTIgbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBwYXJ0aWNpcGFudC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4tc20gbXItMiBtbC0yXCIgKGNsaWNrKT1cInRvZ2dsZVBhcnRpY2lwYW50KHBhcnRpY2lwYW50LCBmYWxzZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYVRpbWVzXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0Fzc2lnbmVkUGFydGljaXBhbnRzPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5vbmVcclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IG10LXhzLTMgbWItM1wiPlxyXG4gICAgICAgICAgICA8aDY+UGVuZGluZzwvaDY+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZ3JvdXBcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDIwMHB4OyBvdmVyZmxvdy15OiBhdXRvOyBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1bmFzc2lnbmVkUGFydGljaXBhbnRzLmxlbmd0aCA+IDA7IGVsc2Ugbm9QZW5kaW5nUGFydGljaXBhbnRzXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHBhcnRpY2lwYW50IG9mIHVuYXNzaWduZWRQYXJ0aWNpcGFudHNcIiBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHRleHQtZGFyayBtYi0yIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAge3sgcGFydGljaXBhbnQubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtci0yIG1sLTJcIiAoY2xpY2spPVwidG9nZ2xlUGFydGljaXBhbnQocGFydGljaXBhbnQsIHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFDaGVja1wiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9QZW5kaW5nUGFydGljaXBhbnRzPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1kYXJrXCI+XHJcbiAgICAgICAgICAgICAgICAgIE5vbmVcclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1pbmZvXCIgKGNsaWNrKT1cImhhbmRsZVNhdmVXaGl0ZWJvYXJkKClcIj5cclxuICAgICAgICAgIFNhdmUgPGZhLWljb24gW2ljb25dPVwiZmFTYXZlXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGhyIC8+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNFZGl0aW5nXCI+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhblN0YXJ0V2hpdGVib2FyZCAmJiB3aGl0ZWJvYXJkU3RhcnRlZCAmJiAhd2hpdGVib2FyZEVuZGVkXCIgY2xhc3M9XCJidG4gYnRuLXdhcm5pbmcgbWItMiBtci0yXCIgKGNsaWNrKT1cImhhbmRsZVN0YXJ0V2hpdGVib2FyZCgpXCI+XHJcbiAgICAgICAgICBVcGRhdGUgPGZhLWljb24gW2ljb25dPVwiZmFTeW5jQWx0XCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJjYW5TdGFydFdoaXRlYm9hcmQgJiYgIXdoaXRlYm9hcmRTdGFydGVkXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgbWItMiBtci0yXCIgKGNsaWNrKT1cImhhbmRsZVN0YXJ0V2hpdGVib2FyZCgpXCI+XHJcbiAgICAgICAgICBTdGFydCA8ZmEtaWNvbiBbaWNvbl09XCJmYVBsYXlcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIndoaXRlYm9hcmRTdGFydGVkICYmICF3aGl0ZWJvYXJkRW5kZWRcIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG1iLTIgbWwtMlwiIChjbGljayk9XCJoYW5kbGVTdG9wV2hpdGVib2FyZCgpXCI+XHJcbiAgICAgICAgICBTdG9wIDxmYS1pY29uIFtpY29uXT1cImZhVGltZXNcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLXdoaXRlYm9hcmQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvd2hpdGVib2FyZC1jb21wb25lbnRzL2NvbmZpZ3VyZS13aGl0ZWJvYXJkLW1vZGFsL2NvbmZpZ3VyZS13aGl0ZWJvYXJkLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3doaXRlYm9hcmQtY29tcG9uZW50cy9jb25maWd1cmUtd2hpdGVib2FyZC1tb2RhbC9jb25maWd1cmUtd2hpdGVib2FyZC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFnQmhHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7OztBQXVEMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBVUgsTUFBTSxPQUFPLHdCQUF3QjtJQUMxQixTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLFVBQVUsR0FDakIsRUFBd0MsQ0FBQztJQUNsQyxlQUFlLEdBQUcsU0FBUyxDQUFDO0lBQzVCLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDdEIsMEJBQTBCLENBQWM7SUFFakQsT0FBTyxHQUFHLE9BQU8sQ0FB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Q0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUMxRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUN0RCxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtTQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QixHQUFHLEdBQUcsRUFBRTtRQUM3QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRixDQUFDLENBQUM7dUdBaFRTLHdCQUF3QjsyRkFBeEIsd0JBQXdCLGlTQ3hHckMsNDBIQXVFQSx3SUQrQlksWUFBWSxvVkFBRSxpQkFBaUI7OzJGQUU5Qix3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsZ0NBQWdDLGNBQzlCLElBQUksV0FHUCxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQzs4QkFHakMsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRywwQkFBMEI7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xuaW1wb3J0IHsgZmFUaW1lcywgZmFDaGVjaywgZmFTeW5jQWx0LCBmYVBsYXksIGZhU2F2ZSB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQge1xuICBDYXB0dXJlQ2FudmFzU3RyZWFtUGFyYW1ldGVycyxcbiAgQ2FwdHVyZUNhbnZhc1N0cmVhbVR5cGUsXG4gIEV2ZW50VHlwZSxcbiAgT25TY3JlZW5DaGFuZ2VzUGFyYW1ldGVycyxcbiAgT25TY3JlZW5DaGFuZ2VzVHlwZSxcbiAgUGFydGljaXBhbnQsXG4gIFByZXBvcHVsYXRlVXNlck1lZGlhUGFyYW1ldGVycyxcbiAgUHJlcG9wdWxhdGVVc2VyTWVkaWFUeXBlLFxuICBSZVBvcnRQYXJhbWV0ZXJzLFxuICBSZVBvcnRUeXBlLFxuICBTaG93QWxlcnQsXG4gIFdoaXRlYm9hcmRVcGRhdGVkRGF0YSxcbiAgV2hpdGVib2FyZFVzZXIsXG59IGZyb20gJy4uLy4uLy4uL0B0eXBlcy90eXBlcyc7XG5pbXBvcnQgeyBTb2NrZXQgfSBmcm9tICdzb2NrZXQuaW8tY2xpZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWxQYXJhbWV0ZXJzXG4gIGV4dGVuZHMgT25TY3JlZW5DaGFuZ2VzUGFyYW1ldGVycyxcbiAgICBDYXB0dXJlQ2FudmFzU3RyZWFtUGFyYW1ldGVycyxcbiAgICBQcmVwb3B1bGF0ZVVzZXJNZWRpYVBhcmFtZXRlcnMsXG4gICAgUmVQb3J0UGFyYW1ldGVycyB7XG4gIHBhcnRpY2lwYW50czogUGFydGljaXBhbnRbXTtcbiAgc2hvd0FsZXJ0PzogU2hvd0FsZXJ0O1xuICBzb2NrZXQ6IFNvY2tldDtcbiAgaXRlbVBhZ2VMaW1pdDogbnVtYmVyO1xuICBpc2xldmVsOiBzdHJpbmc7XG4gIHJvb21OYW1lOiBzdHJpbmc7XG4gIGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICBzaGFyZVNjcmVlblN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHNoYXJlZDogYm9vbGVhbjtcbiAgYnJlYWtPdXRSb29tU3RhcnRlZDogYm9vbGVhbjtcbiAgYnJlYWtPdXRSb29tRW5kZWQ6IGJvb2xlYW47XG4gIHJlY29yZFN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHJlY29yZFJlc3VtZWQ6IGJvb2xlYW47XG4gIHJlY29yZFBhdXNlZDogYm9vbGVhbjtcbiAgcmVjb3JkU3RvcHBlZDogYm9vbGVhbjtcbiAgcmVjb3JkaW5nTWVkaWFPcHRpb25zOiBzdHJpbmc7XG4gIGNhblN0YXJ0V2hpdGVib2FyZDogYm9vbGVhbjtcbiAgd2hpdGVib2FyZFN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHdoaXRlYm9hcmRFbmRlZDogYm9vbGVhbjtcbiAgaG9zdExhYmVsOiBzdHJpbmc7XG4gIHVwZGF0ZVdoaXRlYm9hcmRTdGFydGVkOiAoc3RhcnRlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlV2hpdGVib2FyZEVuZGVkOiAoZW5kZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVdoaXRlYm9hcmRVc2VyczogKHVzZXJzOiBXaGl0ZWJvYXJkVXNlcltdKSA9PiB2b2lkO1xuICB1cGRhdGVDYW5TdGFydFdoaXRlYm9hcmQ6IChjYW5TdGFydDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlSXNDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWxWaXNpYmxlOiAoaXNWaXNpYmxlOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gIC8vIG1lZGlhc2Z1IGZ1bmN0aW9uc1xuICBvblNjcmVlbkNoYW5nZXM6IE9uU2NyZWVuQ2hhbmdlc1R5cGU7XG4gIGNhcHR1cmVDYW52YXNTdHJlYW06IENhcHR1cmVDYW52YXNTdHJlYW1UeXBlO1xuICBwcmVwb3B1bGF0ZVVzZXJNZWRpYTogUHJlcG9wdWxhdGVVc2VyTWVkaWFUeXBlO1xuICByZVBvcnQ6IFJlUG9ydFR5cGU7XG5cbiAgZ2V0VXBkYXRlZEFsbFBhcmFtczogKCkgPT4gQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbE9wdGlvbnMge1xuICBpc0NvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFZpc2libGU6IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG4gIHBvc2l0aW9uPzogc3RyaW5nO1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM6IENvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCB0eXBlIENvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFR5cGUgPSAoXG4gIG9wdGlvbnM6IENvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbE9wdGlvbnMsXG4pID0+IEhUTUxFbGVtZW50O1xuXG4vKipcbiAqIEBjb21wb25lbnQgQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsXG4gKiBAZGVzY3JpcHRpb24gQSBtb2RhbCBjb21wb25lbnQgdG8gY29uZmlndXJlIGFuZCBtYW5hZ2Ugd2hpdGVib2FyZCBzZXR0aW5ncyBhbmQgcGFydGljaXBhbnRzLlxuICpcbiAqIEBzZWxlY3RvciBhcHAtY29uZmlndXJlLXdoaXRlYm9hcmQtbW9kYWxcbiAqIEBzdGFuZGFsb25lIHRydWVcbiAqIEBpbXBvcnRzIFtDb21tb25Nb2R1bGUsIEZvbnRBd2Vzb21lTW9kdWxlXVxuICogQHRlbXBsYXRlVXJsIC4vY29uZmlndXJlLXdoaXRlYm9hcmQtbW9kYWwuY29tcG9uZW50Lmh0bWxcbiAqIEBzdHlsZVVybHMgLi9jb25maWd1cmUtd2hpdGVib2FyZC1tb2RhbC5jb21wb25lbnQuY3NzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxhcHAtY29uZmlndXJlLXdoaXRlYm9hcmQtbW9kYWxcbiAqICAgW2lzVmlzaWJsZV09XCJpc1doaXRlYm9hcmRNb2RhbFZpc2libGVcIlxuICogICBbcGFyYW1ldGVyc109XCJ3aGl0ZWJvYXJkUGFyYW1ldGVyc1wiXG4gKiAgIFtiYWNrZ3JvdW5kQ29sb3JdPVwiJyM4M2MwZTknXCJcbiAqICAgW3Bvc2l0aW9uXT1cIid0b3BSaWdodCdcIlxuICogICAob25Db25maWd1cmVXaGl0ZWJvYXJkQ2xvc2UpPVwiaGFuZGxlQ2xvc2VNb2RhbCgpXCI+XG4gKiA8L2FwcC1jb25maWd1cmUtd2hpdGVib2FyZC1tb2RhbD5cbiAqIGBgYFxuICovXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvbmZpZ3VyZS13aGl0ZWJvYXJkLW1vZGFsJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZ3VyZS13aGl0ZWJvYXJkLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlndXJlLXdoaXRlYm9hcmQtbW9kYWwuY29tcG9uZW50LmNzcyddLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb250QXdlc29tZU1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgaXNWaXNpYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBhcmFtZXRlcnM6IENvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFBhcmFtZXRlcnMgPVxuICAgIHt9IGFzIENvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFBhcmFtZXRlcnM7XG4gIEBJbnB1dCgpIGJhY2tncm91bmRDb2xvciA9ICcjODNjMGU5JztcbiAgQElucHV0KCkgcG9zaXRpb24gPSAndG9wUmlnaHQnO1xuICBASW5wdXQoKSBvbkNvbmZpZ3VyZVdoaXRlYm9hcmRDbG9zZSE6ICgpID0+IHZvaWQ7XG5cbiAgZmFUaW1lcyA9IGZhVGltZXM7XG4gIGZhQ2hlY2sgPSBmYUNoZWNrO1xuICBmYVN5bmNBbHQgPSBmYVN5bmNBbHQ7XG4gIGZhUGxheSA9IGZhUGxheTtcbiAgZmFTYXZlID0gZmFTYXZlO1xuXG4gIHBhcnRpY2lwYW50c0NvcHk6IFBhcnRpY2lwYW50W10gPSBbXTtcbiAgd2hpdGVib2FyZExpbWl0ITogbnVtYmVyO1xuICBpc0VkaXRpbmcgPSBmYWxzZTtcbiAgY2FuU3RhcnRXaGl0ZWJvYXJkID0gZmFsc2U7XG4gIGFzc2lnbmVkUGFydGljaXBhbnRzOiBhbnlbXSA9IFtdO1xuICB1bmFzc2lnbmVkUGFydGljaXBhbnRzOiBhbnlbXSA9IFtdO1xuICB3aGl0ZWJvYXJkU3RhcnRlZCA9IGZhbHNlO1xuICB3aGl0ZWJvYXJkRW5kZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHNvY2tldDogU29ja2V0ID0ge30gYXMgU29ja2V0O1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnBhcmFtZXRlcnMgJiYgdGhpcy5pc1Zpc2libGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgICB9XG4gICAgICB0aGlzLndoaXRlYm9hcmRMaW1pdCA9IHRoaXMucGFyYW1ldGVycy5pdGVtUGFnZUxpbWl0O1xuICAgICAgdGhpcy53aGl0ZWJvYXJkU3RhcnRlZCA9IHRoaXMucGFyYW1ldGVycy53aGl0ZWJvYXJkU3RhcnRlZDtcbiAgICAgIHRoaXMud2hpdGVib2FyZEVuZGVkID0gdGhpcy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRFbmRlZDtcbiAgICAgIHRoaXMuY2hlY2tDYW5TdGFydFdoaXRlYm9hcmQoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYXJhbWV0ZXJzKSB7XG4gICAgICB0aGlzLnNvY2tldCA9IHRoaXMucGFyYW1ldGVycy5zb2NrZXQ7XG4gICAgICBpZiAodGhpcy5zb2NrZXQpIHtcbiAgICAgICAgdGhpcy5zZXR1cFNvY2tldExpc3RlbmVycygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncGFyYW1ldGVycyddICYmIHRoaXMucGFyYW1ldGVycykge1xuICAgICAgaWYgKHRoaXMucGFyYW1ldGVycyAmJiB0aGlzLmlzVmlzaWJsZSkge1xuICAgICAgICB0aGlzLndoaXRlYm9hcmRMaW1pdCA9IHRoaXMucGFyYW1ldGVycy5pdGVtUGFnZUxpbWl0O1xuICAgICAgICB0aGlzLndoaXRlYm9hcmRTdGFydGVkID0gdGhpcy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRTdGFydGVkO1xuICAgICAgICB0aGlzLndoaXRlYm9hcmRFbmRlZCA9IHRoaXMucGFyYW1ldGVycy53aGl0ZWJvYXJkRW5kZWQ7XG4gICAgICAgIHRoaXMuY2hlY2tDYW5TdGFydFdoaXRlYm9hcmQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zb2NrZXQgPSB0aGlzLnBhcmFtZXRlcnMuc29ja2V0O1xuICAgICAgaWYgKHRoaXMuc29ja2V0KSB7XG4gICAgICAgIHRoaXMuc2V0dXBTb2NrZXRMaXN0ZW5lcnMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snaXNWaXNpYmxlJ10gJiYgdGhpcy5pc1Zpc2libGUpIHtcbiAgICAgIHRoaXMucGFyYW1ldGVycyA9IHRoaXMucGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG4gICAgICBpZiAoIXRoaXMucGFydGljaXBhbnRzQ29weS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRQYXJ0aWNpcGFudHMgPSB0aGlzLnBhcmFtZXRlcnMucGFydGljaXBhbnRzLmZpbHRlcihcbiAgICAgICAgICAocGFydGljaXBhbnQ6IFBhcnRpY2lwYW50KSA9PiBwYXJ0aWNpcGFudC5pc2xldmVsICE9ICcyJyxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wYXJ0aWNpcGFudHNDb3B5ID0gZmlsdGVyZWRQYXJ0aWNpcGFudHM7XG4gICAgICAgIHRoaXMudXBkYXRlUGFydGljaXBhbnRzTGlzdHMoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hlY2tDYW5TdGFydFdoaXRlYm9hcmQoKTtcbiAgICB9XG4gIH1cblxuICBzZXR1cFNvY2tldExpc3RlbmVycyA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5zb2NrZXQgJiYgdGhpcy5zb2NrZXQgaW5zdGFuY2VvZiBTb2NrZXQpIHtcbiAgICAgIHRoaXMuc29ja2V0Lm9uKCd3aGl0ZWJvYXJkVXBkYXRlZCcsIGFzeW5jIChkYXRhOiBXaGl0ZWJvYXJkVXBkYXRlZERhdGEpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVycy5pc2xldmVsID09ICcyJyAmJiBkYXRhLm1lbWJlcnMpIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZFBhcnRpY2lwYW50cyA9IGRhdGEubWVtYmVycy5maWx0ZXIoXG4gICAgICAgICAgICAocGFydGljaXBhbnQ6IGFueSkgPT4gIXBhcnRpY2lwYW50LmlzQmFubmVkLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5wYXJ0aWNpcGFudHNDb3B5ID0gZmlsdGVyZWRQYXJ0aWNpcGFudHM7XG4gICAgICAgICAgdGhpcy51cGRhdGVQYXJ0aWNpcGFudHNMaXN0cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZVdoaXRlYm9hcmRVc2VycyhkYXRhLndoaXRlYm9hcmRVc2Vycyk7XG5cbiAgICAgICAgaWYgKGRhdGEuc3RhdHVzID09ICdzdGFydGVkJykge1xuICAgICAgICAgIHRoaXMud2hpdGVib2FyZFN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMud2hpdGVib2FyZEVuZGVkID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZVdoaXRlYm9hcmRTdGFydGVkKHRydWUpO1xuICAgICAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVXaGl0ZWJvYXJkRW5kZWQoZmFsc2UpO1xuXG4gICAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVycy5pc2xldmVsICE9ICcyJykge1xuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNoYXJlU2NyZWVuU3RhcnRlZCA9IHRydWU7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBhcmFtZXRlcnMub25TY3JlZW5DaGFuZ2VzKHsgY2hhbmdlZDogdHJ1ZSwgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkYXRhLnN0YXR1cyA9PSAnZW5kZWQnKSB7XG4gICAgICAgICAgdGhpcy53aGl0ZWJvYXJkRW5kZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMud2hpdGVib2FyZFN0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlV2hpdGVib2FyZFN0YXJ0ZWQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucGFyYW1ldGVycy51cGRhdGVXaGl0ZWJvYXJkRW5kZWQodHJ1ZSk7XG5cbiAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2hhcmVTY3JlZW5TdGFydGVkID0gZmFsc2U7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wYXJhbWV0ZXJzLm9uU2NyZWVuQ2hhbmdlcyh7IGNoYW5nZWQ6IHRydWUsIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyB9KTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnBhcmFtZXRlcnMucHJlcG9wdWxhdGVVc2VyTWVkaWEoe1xuICAgICAgICAgICAgbmFtZTogdGhpcy5wYXJhbWV0ZXJzLmhvc3RMYWJlbCxcbiAgICAgICAgICAgIHBhcmFtZXRlcnM6IHRoaXMucGFyYW1ldGVycyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhd2FpdCB0aGlzLnBhcmFtZXRlcnMucmVQb3J0KHsgcmVzdGFydDogdHJ1ZSwgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgdG9nZ2xlUGFydGljaXBhbnQgPSAocGFydGljaXBhbnQ6IGFueSwgYWRkOiBib29sZWFuKSA9PiB7XG4gICAgdGhpcy5pc0VkaXRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHNlbGVjdGVkUGFydGljaXBhbnRzID0gdGhpcy5wYXJ0aWNpcGFudHNDb3B5LmZpbHRlcigocCkgPT4gcC51c2VCb2FyZCk7XG4gICAgaWYgKGFkZCAmJiBzZWxlY3RlZFBhcnRpY2lwYW50cy5sZW5ndGggPj0gdGhpcy53aGl0ZWJvYXJkTGltaXQgLSAxKSB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMuc2hvd0FsZXJ0Py4oe1xuICAgICAgICBtZXNzYWdlOiBgUGFydGljaXBhbnQgbGltaXQgZXhjZWVkZWQgLSB5b3UgY2FuIG9ubHkgYWRkICR7XG4gICAgICAgICAgdGhpcy53aGl0ZWJvYXJkTGltaXQgLSAxXG4gICAgICAgIH0gb3RoZXIgcGFydGljaXBhbnRzYCxcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBhcnRpY2lwYW50c0NvcHkgPSB0aGlzLnBhcnRpY2lwYW50c0NvcHkubWFwKChwKSA9PlxuICAgICAgcC5uYW1lID09PSBwYXJ0aWNpcGFudC5uYW1lID8geyAuLi5wLCB1c2VCb2FyZDogYWRkIH0gOiBwLFxuICAgICk7XG4gICAgdGhpcy51cGRhdGVQYXJ0aWNpcGFudHNMaXN0cygpO1xuICB9O1xuXG4gIHZhbGlkYXRlV2hpdGVib2FyZCgpIHtcbiAgICBjb25zdCBzZWxlY3RlZFBhcnRpY2lwYW50cyA9IHRoaXMucGFydGljaXBhbnRzQ29weS5maWx0ZXIoXG4gICAgICAocGFydGljaXBhbnQpID0+IHBhcnRpY2lwYW50LnVzZUJvYXJkLFxuICAgICk7XG4gICAgaWYgKHNlbGVjdGVkUGFydGljaXBhbnRzLmxlbmd0aCA+IHRoaXMud2hpdGVib2FyZExpbWl0KSB7XG4gICAgICB0aGlzLnBhcmFtZXRlcnMuc2hvd0FsZXJ0Py4oeyBtZXNzYWdlOiAnUGFydGljaXBhbnQgbGltaXQgZXhjZWVkZWQnLCB0eXBlOiAnZGFuZ2VyJyB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjaGVja0NhblN0YXJ0V2hpdGVib2FyZCgpIHtcbiAgICBjb25zdCBpc1ZhbGlkID0gdGhpcy52YWxpZGF0ZVdoaXRlYm9hcmQoKTtcbiAgICB0aGlzLmNhblN0YXJ0V2hpdGVib2FyZCA9IGlzVmFsaWQ7XG4gICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZUNhblN0YXJ0V2hpdGVib2FyZChpc1ZhbGlkKTtcbiAgfVxuXG4gIGhhbmRsZVNhdmVXaGl0ZWJvYXJkKCkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRlV2hpdGVib2FyZCgpKSB7XG4gICAgICB0aGlzLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5jYW5TdGFydFdoaXRlYm9hcmQgPSB0cnVlO1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZUNhblN0YXJ0V2hpdGVib2FyZCh0cnVlKTtcbiAgICAgIHRoaXMuY2hlY2tDYW5TdGFydFdoaXRlYm9hcmQoKTtcbiAgICAgIHRoaXMucGFyYW1ldGVycy5zaG93QWxlcnQ/Lih7IG1lc3NhZ2U6ICdXaGl0ZWJvYXJkIHNhdmVkIHN1Y2Nlc3NmdWxseScsIHR5cGU6ICdzdWNjZXNzJyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXJhbWV0ZXJzLnNob3dBbGVydD8uKHsgbWVzc2FnZTogJ1doaXRlYm9hcmQgdmFsaWRhdGlvbiBmYWlsZWQnLCB0eXBlOiAnZGFuZ2VyJyB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBoYW5kbGVTdGFydFdoaXRlYm9hcmQoKSB7XG4gICAgY29uc3Qge1xuICAgICAgc2hhcmVTY3JlZW5TdGFydGVkLFxuICAgICAgc2hhcmVkLFxuICAgICAgYnJlYWtPdXRSb29tU3RhcnRlZCxcbiAgICAgIGJyZWFrT3V0Um9vbUVuZGVkLFxuICAgICAgcm9vbU5hbWUsXG4gICAgICBzb2NrZXQsXG4gICAgICByZWNvcmRTdGFydGVkLFxuICAgICAgcmVjb3JkUmVzdW1lZCxcbiAgICAgIHJlY29yZFBhdXNlZCxcbiAgICAgIHJlY29yZFN0b3BwZWQsXG4gICAgICByZWNvcmRpbmdNZWRpYU9wdGlvbnMsXG4gICAgICBvblNjcmVlbkNoYW5nZXMsXG4gICAgICBjYXB0dXJlQ2FudmFzU3RyZWFtLFxuICAgICAgc2hvd0FsZXJ0LFxuICAgIH0gPSB0aGlzLnBhcmFtZXRlcnM7XG5cbiAgICBpZiAoKHNoYXJlU2NyZWVuU3RhcnRlZCB8fCBzaGFyZWQpICYmICF0aGlzLndoaXRlYm9hcmRTdGFydGVkKSB7XG4gICAgICBzaG93QWxlcnQ/Lih7XG4gICAgICAgIG1lc3NhZ2U6ICdZb3UgY2Fubm90IHN0YXJ0IHdoaXRlYm9hcmQgd2hpbGUgc2NyZWVuIHNoYXJpbmcgaXMgYWN0aXZlJyxcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoYnJlYWtPdXRSb29tU3RhcnRlZCAmJiAhYnJlYWtPdXRSb29tRW5kZWQpIHtcbiAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgbWVzc2FnZTogJ1lvdSBjYW5ub3Qgc3RhcnQgd2hpdGVib2FyZCB3aGlsZSBicmVha291dCByb29tcyBhcmUgYWN0aXZlJyxcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jYW5TdGFydFdoaXRlYm9hcmQpIHtcbiAgICAgIGNvbnN0IGVtaXROYW1lID1cbiAgICAgICAgdGhpcy53aGl0ZWJvYXJkU3RhcnRlZCAmJiAhdGhpcy53aGl0ZWJvYXJkRW5kZWQgPyAndXBkYXRlV2hpdGVib2FyZCcgOiAnc3RhcnRXaGl0ZWJvYXJkJztcbiAgICAgIGNvbnN0IGZpbHRlcmVkV2hpdGVib2FyZFVzZXJzID0gdGhpcy5wYXJ0aWNpcGFudHNDb3B5XG4gICAgICAgIC5maWx0ZXIoKHBhcnRpY2lwYW50KSA9PiBwYXJ0aWNpcGFudC51c2VCb2FyZClcbiAgICAgICAgLm1hcCgoeyBuYW1lLCB1c2VCb2FyZCB9KSA9PiAoeyBuYW1lLCB1c2VCb2FyZCB9KSk7XG4gICAgICBzb2NrZXQuZW1pdChcbiAgICAgICAgZW1pdE5hbWUsXG4gICAgICAgIHsgd2hpdGVib2FyZFVzZXJzOiBmaWx0ZXJlZFdoaXRlYm9hcmRVc2Vycywgcm9vbU5hbWUgfSxcbiAgICAgICAgYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgICAgICAgc2hvd0FsZXJ0Py4oeyBtZXNzYWdlOiAnV2hpdGVib2FyZCBhY3RpdmUnLCB0eXBlOiAnc3VjY2VzcycgfSk7XG4gICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMud2hpdGVib2FyZFN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRFbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZVdoaXRlYm9hcmRTdGFydGVkKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLnVwZGF0ZVdoaXRlYm9hcmRFbmRlZChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMudXBkYXRlSXNDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWxWaXNpYmxlKGZhbHNlKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1ldGVycy5pc2xldmVsICE9ICcyJykge1xuICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRlcnMuc2hhcmVTY3JlZW5TdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYXdhaXQgb25TY3JlZW5DaGFuZ2VzKHsgY2hhbmdlZDogdHJ1ZSwgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5wYXJhbWV0ZXJzLmlzbGV2ZWwgPT0gJzInICYmIChyZWNvcmRTdGFydGVkIHx8IHJlY29yZFJlc3VtZWQpKSB7XG4gICAgICAgICAgICAgIGlmICghKHJlY29yZFBhdXNlZCB8fCByZWNvcmRTdG9wcGVkKSAmJiByZWNvcmRpbmdNZWRpYU9wdGlvbnMgPT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNhcHR1cmVDYW52YXNTdHJlYW0oeyBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hvd0FsZXJ0Py4oeyBtZXNzYWdlOiByZXNwb25zZS5yZWFzb24sIHR5cGU6ICdkYW5nZXInIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaGFuZGxlU3RvcFdoaXRlYm9hcmQoKSB7XG4gICAgY29uc3Qge1xuICAgICAgcm9vbU5hbWUsXG4gICAgICBzb2NrZXQsXG4gICAgICBzaG93QWxlcnQsXG4gICAgICB1cGRhdGVXaGl0ZWJvYXJkU3RhcnRlZCxcbiAgICAgIHVwZGF0ZVdoaXRlYm9hcmRFbmRlZCxcbiAgICAgIHVwZGF0ZUlzQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsVmlzaWJsZSxcbiAgICAgIG9uU2NyZWVuQ2hhbmdlcyxcbiAgICAgIHByZXBvcHVsYXRlVXNlck1lZGlhLFxuICAgICAgcmVQb3J0LFxuICAgICAgaG9zdExhYmVsLFxuICAgIH0gPSB0aGlzLnBhcmFtZXRlcnM7XG4gICAgc29ja2V0LmVtaXQoJ3N0b3BXaGl0ZWJvYXJkJywgeyByb29tTmFtZSB9LCBhc3luYyAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgICAgc2hvd0FsZXJ0Py4oeyBtZXNzYWdlOiAnV2hpdGVib2FyZCBzdG9wcGVkJywgdHlwZTogJ3N1Y2Nlc3MnIH0pO1xuICAgICAgICB0aGlzLnBhcmFtZXRlcnMud2hpdGVib2FyZEVuZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wYXJhbWV0ZXJzLndoaXRlYm9hcmRTdGFydGVkID0gZmFsc2U7XG4gICAgICAgIHVwZGF0ZVdoaXRlYm9hcmRTdGFydGVkKGZhbHNlKTtcbiAgICAgICAgdXBkYXRlV2hpdGVib2FyZEVuZGVkKHRydWUpO1xuICAgICAgICB1cGRhdGVJc0NvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFZpc2libGUoZmFsc2UpO1xuXG4gICAgICAgIHRoaXMucGFyYW1ldGVycy5zaGFyZVNjcmVlblN0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgICAgYXdhaXQgb25TY3JlZW5DaGFuZ2VzKHsgY2hhbmdlZDogdHJ1ZSwgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzIH0pO1xuICAgICAgICBhd2FpdCBwcmVwb3B1bGF0ZVVzZXJNZWRpYSh7IG5hbWU6IGhvc3RMYWJlbCwgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzIH0pO1xuICAgICAgICBhd2FpdCByZVBvcnQoeyByZXN0YXJ0OiB0cnVlLCBwYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaG93QWxlcnQ/Lih7IG1lc3NhZ2U6IHJlc3BvbnNlLnJlYXNvbiwgdHlwZTogJ2RhbmdlcicgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBtb2RhbENvbnRhaW5lclN0eWxlKCkge1xuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIHRvcDogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuNSknLFxuICAgICAgZGlzcGxheTogdGhpcy5pc1Zpc2libGUgPyAnYmxvY2snIDogJ25vbmUnLFxuICAgICAgekluZGV4OiA5OTksXG4gICAgfTtcbiAgfVxuXG4gIG1vZGFsQ29udGVudFN0eWxlKCkge1xuICAgIGNvbnN0IHNjcmVlbldpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgbGV0IG1vZGFsV2lkdGggPSAwLjcgKiBzY3JlZW5XaWR0aDtcbiAgICBpZiAobW9kYWxXaWR0aCA+IDQwMCkge1xuICAgICAgbW9kYWxXaWR0aCA9IDQwMDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGlzLmJhY2tncm91bmRDb2xvcixcbiAgICAgIGJvcmRlclJhZGl1czogJzEwcHgnLFxuICAgICAgcGFkZGluZzogJzEwcHgnLFxuICAgICAgd2lkdGg6IG1vZGFsV2lkdGggKyAncHgnLFxuICAgICAgbWF4V2lkdGg6IG1vZGFsV2lkdGggKyAncHgnLFxuICAgICAgbWF4SGVpZ2h0OiAnNzUlJyxcbiAgICAgIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgICAgb3ZlcmZsb3dYOiAnaGlkZGVuJyxcbiAgICAgIHRvcDogdGhpcy5wb3NpdGlvbi5pbmNsdWRlcygndG9wJykgPyAnMTBweCcgOiAnYXV0bycsXG4gICAgICBib3R0b206IHRoaXMucG9zaXRpb24uaW5jbHVkZXMoJ2JvdHRvbScpID8gJzEwcHgnIDogJ2F1dG8nLFxuICAgICAgbGVmdDogdGhpcy5wb3NpdGlvbi5pbmNsdWRlcygnTGVmdCcpID8gJzEwcHgnIDogJ2F1dG8nLFxuICAgICAgcmlnaHQ6IHRoaXMucG9zaXRpb24uaW5jbHVkZXMoJ1JpZ2h0JykgPyAnMTBweCcgOiAnYXV0bycsXG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZVBhcnRpY2lwYW50c0xpc3RzID0gKCkgPT4ge1xuICAgIHRoaXMuYXNzaWduZWRQYXJ0aWNpcGFudHMgPSB0aGlzLnBhcnRpY2lwYW50c0NvcHkuZmlsdGVyKChwKSA9PiBwLnVzZUJvYXJkKTtcbiAgICB0aGlzLnVuYXNzaWduZWRQYXJ0aWNpcGFudHMgPSB0aGlzLnBhcnRpY2lwYW50c0NvcHkuZmlsdGVyKChwKSA9PiAhcC51c2VCb2FyZCk7XG4gIH07XG59XG4iLCI8ZGl2IFtuZ1N0eWxlXT1cIm1vZGFsQ29udGFpbmVyU3R5bGUoKVwiPlxyXG4gIDxkaXYgW25nU3R5bGVdPVwibW9kYWxDb250ZW50U3R5bGUoKVwiPlxyXG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XCI+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbi1ib3R0b206IDE1cHg7XCI+XHJcbiAgICAgICAgPGgyIHN0eWxlPVwiZm9udC1zaXplOiB4LWxhcmdlOyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6IGJsYWNrO1wiPlxyXG4gICAgICAgICAgQ29uZmlndXJlIFdoaXRlYm9hcmRcclxuICAgICAgICA8L2gyPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uQ29uZmlndXJlV2hpdGVib2FyZENsb3NlKClcIiBzdHlsZT1cImJvcmRlcjogbm9uZTsgYmFja2dyb3VuZDogbm9uZTsgY3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFUaW1lc1wiIHNpemU9XCJ4bFwiIHN0eWxlPVwiZm9udC1zaXplOiAyMHB4OyBjb2xvcjogYmxhY2s7XCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbWItM1wiPlxyXG4gICAgICAgICAgICA8aDY+QXNzaWduZWQ8L2g2PlxyXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwXCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiAyMDBweDsgb3ZlcmZsb3cteTogYXV0bzsgYm9yZGVyOiAxcHggc29saWQgI2NjYztcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXNzaWduZWRQYXJ0aWNpcGFudHMubGVuZ3RoID4gMDsgZWxzZSBub0Fzc2lnbmVkUGFydGljaXBhbnRzXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHBhcnRpY2lwYW50IG9mIGFzc2lnbmVkUGFydGljaXBhbnRzXCIgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWRhcmsgbWItMiBtci0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHBhcnRpY2lwYW50Lm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi1zbSBtci0yIG1sLTJcIiAoY2xpY2spPVwidG9nZ2xlUGFydGljaXBhbnQocGFydGljaXBhbnQsIGZhbHNlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhVGltZXNcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vQXNzaWduZWRQYXJ0aWNpcGFudHM+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWRhcmtcIj5cclxuICAgICAgICAgICAgICAgICAgTm9uZVxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbXQteHMtMyBtYi0zXCI+XHJcbiAgICAgICAgICAgIDxoNj5QZW5kaW5nPC9oNj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cFwiIHN0eWxlPVwibWF4LWhlaWdodDogMjAwcHg7IG92ZXJmbG93LXk6IGF1dG87IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVuYXNzaWduZWRQYXJ0aWNpcGFudHMubGVuZ3RoID4gMDsgZWxzZSBub1BlbmRpbmdQYXJ0aWNpcGFudHNcIj5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcGFydGljaXBhbnQgb2YgdW5hc3NpZ25lZFBhcnRpY2lwYW50c1wiIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1kYXJrIG1iLTIgbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyBwYXJ0aWNpcGFudC5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG1yLTIgbWwtMlwiIChjbGljayk9XCJ0b2dnbGVQYXJ0aWNpcGFudChwYXJ0aWNpcGFudCwgdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYUNoZWNrXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1BlbmRpbmdQYXJ0aWNpcGFudHM+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB0ZXh0LWRhcmtcIj5cclxuICAgICAgICAgICAgICAgICAgTm9uZVxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWluZm9cIiAoY2xpY2spPVwiaGFuZGxlU2F2ZVdoaXRlYm9hcmQoKVwiPlxyXG4gICAgICAgICAgU2F2ZSA8ZmEtaWNvbiBbaWNvbl09XCJmYVNhdmVcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aHIgLz5cclxuICAgICAgPGRpdiAqbmdJZj1cIiFpc0VkaXRpbmdcIj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuU3RhcnRXaGl0ZWJvYXJkICYmIHdoaXRlYm9hcmRTdGFydGVkICYmICF3aGl0ZWJvYXJkRW5kZWRcIiBjbGFzcz1cImJ0biBidG4td2FybmluZyBtYi0yIG1yLTJcIiAoY2xpY2spPVwiaGFuZGxlU3RhcnRXaGl0ZWJvYXJkKClcIj5cclxuICAgICAgICAgIFVwZGF0ZSA8ZmEtaWNvbiBbaWNvbl09XCJmYVN5bmNBbHRcIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNhblN0YXJ0V2hpdGVib2FyZCAmJiAhd2hpdGVib2FyZFN0YXJ0ZWRcIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBtYi0yIG1yLTJcIiAoY2xpY2spPVwiaGFuZGxlU3RhcnRXaGl0ZWJvYXJkKClcIj5cclxuICAgICAgICAgIFN0YXJ0IDxmYS1pY29uIFtpY29uXT1cImZhUGxheVwiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwid2hpdGVib2FyZFN0YXJ0ZWQgJiYgIXdoaXRlYm9hcmRFbmRlZFwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgbWItMiBtbC0yXCIgKGNsaWNrKT1cImhhbmRsZVN0b3BXaGl0ZWJvYXJkKClcIj5cclxuICAgICAgICAgIFN0b3AgPGZhLWljb24gW2ljb25dPVwiZmFUaW1lc1wiPjwvZmEtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|