element might be a scroll container.\\n We have found no reliable way of detecting whether the element is a scroll container.\\n Under most circumstances a scroll bar will be on the element (document.documentElement)\\n\\n Because we cannot determine if the is a scroll container, and generally it is not one,\\n we will be treating the as *not* a scroll container\\n\\n More information: https://github.com/hello-pangea/dnd/blob/main/docs/guides/how-we-detect-scroll-containers.md\\n \") : 0;\n return false;\n};\nconst getClosestScrollable = (el)=>{\n if (el == null) {\n return null;\n }\n if (el === document.body) {\n return isBodyScrollable() ? el : null;\n }\n if (el === document.documentElement) {\n return null;\n }\n if (!isElementScrollable(el)) {\n return getClosestScrollable(el.parentElement);\n }\n return el;\n};\nvar getClosestScrollable$1 = getClosestScrollable;\nvar checkForNestedScrollContainers = (scrollable)=>{\n if (!scrollable) {\n return;\n }\n const anotherScrollParent = getClosestScrollable$1(scrollable.parentElement);\n if (!anotherScrollParent) {\n return;\n }\n true ? warning(\"\\n Droppable: unsupported nested scroll container detected.\\n A Droppable can only have one scroll parent (which can be itself)\\n Nested scroll containers are currently not supported.\\n\\n We hope to support nested scroll containers soon: https://github.com/atlassian/react-beautiful-dnd/issues/131\\n \") : 0;\n};\nvar getScroll = (el)=>({\n x: el.scrollLeft,\n y: el.scrollTop\n });\nconst getIsFixed = (el)=>{\n if (!el) {\n return false;\n }\n const style = window.getComputedStyle(el);\n if (style.position === \"fixed\") {\n return true;\n }\n return getIsFixed(el.parentElement);\n};\nvar getEnv = (start)=>{\n const closestScrollable = getClosestScrollable$1(start);\n const isFixedOnPage = getIsFixed(start);\n return {\n closestScrollable,\n isFixedOnPage\n };\n};\nvar getDroppableDimension = (param)=>{\n let { descriptor, isEnabled, isCombineEnabled, isFixedOnPage, direction, client, page, closest } = param;\n const frame = (()=>{\n if (!closest) {\n return null;\n }\n const { scrollSize, client: frameClient } = closest;\n const maxScroll = getMaxScroll({\n scrollHeight: scrollSize.scrollHeight,\n scrollWidth: scrollSize.scrollWidth,\n height: frameClient.paddingBox.height,\n width: frameClient.paddingBox.width\n });\n return {\n pageMarginBox: closest.page.marginBox,\n frameClient,\n scrollSize,\n shouldClipSubject: closest.shouldClipSubject,\n scroll: {\n initial: closest.scroll,\n current: closest.scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n })();\n const axis = direction === \"vertical\" ? vertical : horizontal;\n const subject = getSubject({\n page,\n withPlaceholder: null,\n axis,\n frame\n });\n const dimension = {\n descriptor,\n isCombineEnabled,\n isFixedOnPage,\n axis,\n isEnabled,\n client,\n page,\n frame,\n subject\n };\n return dimension;\n};\nconst getClient = (targetRef, closestScrollable)=>{\n const base = (0,css_box_model__WEBPACK_IMPORTED_MODULE_4__.getBox)(targetRef);\n if (!closestScrollable) {\n return base;\n }\n if (targetRef !== closestScrollable) {\n return base;\n }\n const top = base.paddingBox.top - closestScrollable.scrollTop;\n const left = base.paddingBox.left - closestScrollable.scrollLeft;\n const bottom = top + closestScrollable.scrollHeight;\n const right = left + closestScrollable.scrollWidth;\n const paddingBox = {\n top,\n right,\n bottom,\n left\n };\n const borderBox = (0,css_box_model__WEBPACK_IMPORTED_MODULE_4__.expand)(paddingBox, base.border);\n const client = (0,css_box_model__WEBPACK_IMPORTED_MODULE_4__.createBox)({\n borderBox,\n margin: base.margin,\n border: base.border,\n padding: base.padding\n });\n return client;\n};\nvar getDimension = (param)=>{\n let { ref, descriptor, env, windowScroll, direction, isDropDisabled, isCombineEnabled, shouldClipSubject } = param;\n const closestScrollable = env.closestScrollable;\n const client = getClient(ref, closestScrollable);\n const page = (0,css_box_model__WEBPACK_IMPORTED_MODULE_4__.withScroll)(client, windowScroll);\n const closest = (()=>{\n if (!closestScrollable) {\n return null;\n }\n const frameClient = (0,css_box_model__WEBPACK_IMPORTED_MODULE_4__.getBox)(closestScrollable);\n const scrollSize = {\n scrollHeight: closestScrollable.scrollHeight,\n scrollWidth: closestScrollable.scrollWidth\n };\n return {\n client: frameClient,\n page: (0,css_box_model__WEBPACK_IMPORTED_MODULE_4__.withScroll)(frameClient, windowScroll),\n scroll: getScroll(closestScrollable),\n scrollSize,\n shouldClipSubject\n };\n })();\n const dimension = getDroppableDimension({\n descriptor,\n isEnabled: !isDropDisabled,\n isCombineEnabled,\n isFixedOnPage: env.isFixedOnPage,\n direction,\n client,\n page,\n closest\n });\n return dimension;\n};\nconst immediate = {\n passive: false\n};\nconst delayed = {\n passive: true\n};\nvar getListenerOptions = (options)=>options.shouldPublishImmediately ? immediate : delayed;\nconst getClosestScrollableFromDrag = (dragging)=>dragging && dragging.env.closestScrollable || null;\nfunction useDroppablePublisher(args) {\n _s25();\n const whileDraggingRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const appContext = useRequiredContext(AppContext);\n const uniqueId = useUniqueId$1(\"droppable\");\n const { registry, marshal } = appContext;\n const previousRef = usePrevious(args);\n const descriptor = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useMemo)(()=>({\n id: args.droppableId,\n type: args.type,\n mode: args.mode\n }), [\n args.droppableId,\n args.mode,\n args.type\n ]);\n const publishedDescriptorRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(descriptor);\n const memoizedUpdateScroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useMemo)(()=>(0,memoize_one__WEBPACK_IMPORTED_MODULE_5__[\"default\"])((x, y)=>{\n !whileDraggingRef.current ? true ? invariant(false, \"Can only update scroll when dragging\") : 0 : void 0;\n const scroll = {\n x,\n y\n };\n marshal.updateDroppableScroll(descriptor.id, scroll);\n }), [\n descriptor.id,\n marshal\n ]);\n const getClosestScroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(()=>{\n const dragging = whileDraggingRef.current;\n if (!dragging || !dragging.env.closestScrollable) {\n return origin;\n }\n return getScroll(dragging.env.closestScrollable);\n }, []);\n const updateScroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(()=>{\n const scroll = getClosestScroll();\n memoizedUpdateScroll(scroll.x, scroll.y);\n }, [\n getClosestScroll,\n memoizedUpdateScroll\n ]);\n const scheduleScrollUpdate = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useMemo)(()=>(0,raf_schd__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(updateScroll), [\n updateScroll\n ]);\n const onClosestScroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(()=>{\n const dragging = whileDraggingRef.current;\n const closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? true ? invariant(false, \"Could not find scroll options while scrolling\") : 0 : void 0;\n const options = dragging.scrollOptions;\n if (options.shouldPublishImmediately) {\n updateScroll();\n return;\n }\n scheduleScrollUpdate();\n }, [\n scheduleScrollUpdate,\n updateScroll\n ]);\n const getDimensionAndWatchScroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)((windowScroll, options)=>{\n !!whileDraggingRef.current ? true ? invariant(false, \"Cannot collect a droppable while a drag is occurring\") : 0 : void 0;\n const previous = previousRef.current;\n const ref = previous.getDroppableRef();\n !ref ? true ? invariant(false, \"Cannot collect without a droppable ref\") : 0 : void 0;\n const env = getEnv(ref);\n const dragging = {\n ref,\n descriptor,\n env,\n scrollOptions: options\n };\n whileDraggingRef.current = dragging;\n const dimension = getDimension({\n ref,\n descriptor,\n env,\n windowScroll,\n direction: previous.direction,\n isDropDisabled: previous.isDropDisabled,\n isCombineEnabled: previous.isCombineEnabled,\n shouldClipSubject: !previous.ignoreContainerClipping\n });\n const scrollable = env.closestScrollable;\n if (scrollable) {\n scrollable.setAttribute(scrollContainer.contextId, appContext.contextId);\n scrollable.addEventListener(\"scroll\", onClosestScroll, getListenerOptions(dragging.scrollOptions));\n if (true) {\n checkForNestedScrollContainers(scrollable);\n }\n }\n return dimension;\n }, [\n appContext.contextId,\n descriptor,\n onClosestScroll,\n previousRef\n ]);\n const getScrollWhileDragging = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(()=>{\n const dragging = whileDraggingRef.current;\n const closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? true ? invariant(false, \"Can only recollect Droppable client for Droppables that have a scroll container\") : 0 : void 0;\n return getScroll(closest);\n }, []);\n const dragStopped = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(()=>{\n const dragging = whileDraggingRef.current;\n !dragging ? true ? invariant(false, \"Cannot stop drag when no active drag\") : 0 : void 0;\n const closest = getClosestScrollableFromDrag(dragging);\n whileDraggingRef.current = null;\n if (!closest) {\n return;\n }\n scheduleScrollUpdate.cancel();\n closest.removeAttribute(scrollContainer.contextId);\n closest.removeEventListener(\"scroll\", onClosestScroll, getListenerOptions(dragging.scrollOptions));\n }, [\n onClosestScroll,\n scheduleScrollUpdate\n ]);\n const scroll = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)((change)=>{\n const dragging = whileDraggingRef.current;\n !dragging ? true ? invariant(false, \"Cannot scroll when there is no drag\") : 0 : void 0;\n const closest = getClosestScrollableFromDrag(dragging);\n !closest ? true ? invariant(false, \"Cannot scroll a droppable with no closest scrollable\") : 0 : void 0;\n closest.scrollTop += change.y;\n closest.scrollLeft += change.x;\n }, []);\n const callbacks = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useMemo)(()=>{\n return {\n getDimensionAndWatchScroll,\n getScrollWhileDragging,\n dragStopped,\n scroll\n };\n }, [\n dragStopped,\n getDimensionAndWatchScroll,\n getScrollWhileDragging,\n scroll\n ]);\n const entry = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useMemo)(()=>({\n uniqueId,\n descriptor,\n callbacks\n }), [\n callbacks,\n descriptor,\n uniqueId\n ]);\n useLayoutEffect(()=>{\n publishedDescriptorRef.current = entry.descriptor;\n registry.droppable.register(entry);\n return ()=>{\n if (whileDraggingRef.current) {\n true ? warning(\"Unsupported: changing the droppableId or type of a Droppable during a drag\") : 0;\n dragStopped();\n }\n registry.droppable.unregister(entry);\n };\n }, [\n callbacks,\n descriptor,\n dragStopped,\n entry,\n marshal,\n registry.droppable\n ]);\n useLayoutEffect(()=>{\n if (!whileDraggingRef.current) {\n return;\n }\n marshal.updateDroppableIsEnabled(publishedDescriptorRef.current.id, !args.isDropDisabled);\n }, [\n args.isDropDisabled,\n marshal\n ]);\n useLayoutEffect(()=>{\n if (!whileDraggingRef.current) {\n return;\n }\n marshal.updateDroppableIsCombineEnabled(publishedDescriptorRef.current.id, args.isCombineEnabled);\n }, [\n args.isCombineEnabled,\n marshal\n ]);\n}\n_s25(useDroppablePublisher, \"afGoev/EEdNAOP7eKPL2umaPFdU=\", false, function() {\n return [\n useRequiredContext,\n useUniqueId$1,\n usePrevious\n ];\n});\nfunction noop() {}\nconst empty = {\n width: 0,\n height: 0,\n margin: noSpacing\n};\nconst getSize = (param)=>{\n let { isAnimatingOpenOnMount, placeholder, animate } = param;\n if (isAnimatingOpenOnMount) {\n return empty;\n }\n if (animate === \"close\") {\n return empty;\n }\n return {\n height: placeholder.client.borderBox.height,\n width: placeholder.client.borderBox.width,\n margin: placeholder.client.margin\n };\n};\nconst getStyle = (param)=>{\n let { isAnimatingOpenOnMount, placeholder, animate } = param;\n const size = getSize({\n isAnimatingOpenOnMount,\n placeholder,\n animate\n });\n return {\n display: placeholder.display,\n boxSizing: \"border-box\",\n width: size.width,\n height: size.height,\n marginTop: size.margin.top,\n marginRight: size.margin.right,\n marginBottom: size.margin.bottom,\n marginLeft: size.margin.left,\n flexShrink: \"0\",\n flexGrow: \"0\",\n pointerEvents: \"none\",\n transition: animate !== \"none\" ? transitions.placeholder : null\n };\n};\nconst Placeholder = (props)=>{\n _s26();\n const animateOpenTimerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const tryClearAnimateOpenTimer = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(()=>{\n if (!animateOpenTimerRef.current) {\n return;\n }\n clearTimeout(animateOpenTimerRef.current);\n animateOpenTimerRef.current = null;\n }, []);\n const { animate, onTransitionEnd, onClose, contextId } = props;\n const [isAnimatingOpenOnMount, setIsAnimatingOpenOnMount] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(props.animate === \"open\");\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{\n if (!isAnimatingOpenOnMount) {\n return noop;\n }\n if (animate !== \"open\") {\n tryClearAnimateOpenTimer();\n setIsAnimatingOpenOnMount(false);\n return noop;\n }\n if (animateOpenTimerRef.current) {\n return noop;\n }\n animateOpenTimerRef.current = setTimeout(()=>{\n animateOpenTimerRef.current = null;\n setIsAnimatingOpenOnMount(false);\n });\n return tryClearAnimateOpenTimer;\n }, [\n animate,\n isAnimatingOpenOnMount,\n tryClearAnimateOpenTimer\n ]);\n const onSizeChangeEnd = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)((event)=>{\n if (event.propertyName !== \"height\") {\n return;\n }\n onTransitionEnd();\n if (animate === \"close\") {\n onClose();\n }\n }, [\n animate,\n onClose,\n onTransitionEnd\n ]);\n const style = getStyle({\n isAnimatingOpenOnMount,\n animate: props.animate,\n placeholder: props.placeholder\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(props.placeholder.tagName, {\n style,\n \"data-rfd-placeholder-context-id\": contextId,\n onTransitionEnd: onSizeChangeEnd,\n ref: props.innerRef\n });\n};\n_s26(Placeholder, \"luEHo9aneWb/3MEw2zooRVETXrA=\");\n_c5 = Placeholder;\nvar Placeholder$1 = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().memo(Placeholder);\n_c6 = Placeholder$1;\nfunction isBoolean(value) {\n return typeof value === \"boolean\";\n}\nfunction runChecks(args, checks) {\n checks.forEach((check)=>check(args));\n}\nconst shared = [\n function required(param) {\n let { props } = param;\n !props.droppableId ? true ? invariant(false, \"A Droppable requires a droppableId prop\") : 0 : void 0;\n !(typeof props.droppableId === \"string\") ? true ? invariant(false, \"A Droppable requires a [string] droppableId. Provided: [\".concat(typeof props.droppableId, \"]\")) : 0 : void 0;\n },\n function boolean(param) {\n let { props } = param;\n !isBoolean(props.isDropDisabled) ? true ? invariant(false, \"isDropDisabled must be a boolean\") : 0 : void 0;\n !isBoolean(props.isCombineEnabled) ? true ? invariant(false, \"isCombineEnabled must be a boolean\") : 0 : void 0;\n !isBoolean(props.ignoreContainerClipping) ? true ? invariant(false, \"ignoreContainerClipping must be a boolean\") : 0 : void 0;\n },\n function ref(param) {\n let { getDroppableRef } = param;\n checkIsValidInnerRef(getDroppableRef());\n }\n];\nconst standard = [\n function placeholder(param) {\n let { props, getPlaceholderRef } = param;\n if (!props.placeholder) {\n return;\n }\n const ref = getPlaceholderRef();\n if (ref) {\n return;\n }\n true ? warning('\\n Droppable setup issue [droppableId: \"'.concat(props.droppableId, '\"]:\\n DroppableProvided > placeholder could not be found.\\n\\n Please be sure to add the {provided.placeholder} React Node as a child of your Droppable.\\n More information: https://github.com/hello-pangea/dnd/blob/main/docs/api/droppable.md\\n ')) : 0;\n }\n];\nconst virtual = [\n function hasClone(param) {\n let { props } = param;\n !props.renderClone ? true ? invariant(false, \"Must provide a clone render function (renderClone) for virtual lists\") : 0 : void 0;\n },\n function hasNoPlaceholder(param) {\n let { getPlaceholderRef } = param;\n !!getPlaceholderRef() ? true ? invariant(false, \"Expected virtual list to not have a placeholder\") : 0 : void 0;\n }\n];\nfunction useValidation(args) {\n _s27();\n useDevSetupWarning(()=>{\n runChecks(args, shared);\n if (args.props.mode === \"standard\") {\n runChecks(args, standard);\n }\n if (args.props.mode === \"virtual\") {\n runChecks(args, virtual);\n }\n });\n}\n_s27(useValidation, \"Ozwf0oC895FtbHip1ADL8W5P3Sw=\", false, function() {\n return [\n useDevSetupWarning\n ];\n});\nclass AnimateInOut extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent) {\n static getDerivedStateFromProps(props, state) {\n if (!props.shouldAnimate) {\n return {\n isVisible: Boolean(props.on),\n data: props.on,\n animate: \"none\"\n };\n }\n if (props.on) {\n return {\n isVisible: true,\n data: props.on,\n animate: \"open\"\n };\n }\n if (state.isVisible) {\n return {\n isVisible: true,\n data: state.data,\n animate: \"close\"\n };\n }\n return {\n isVisible: false,\n animate: \"close\",\n data: null\n };\n }\n render() {\n if (!this.state.isVisible) {\n return null;\n }\n const provided = {\n onClose: this.onClose,\n data: this.state.data,\n animate: this.state.animate\n };\n return this.props.children(provided);\n }\n constructor(...args){\n super(...args);\n this.state = {\n isVisible: Boolean(this.props.on),\n data: this.props.on,\n animate: this.props.shouldAnimate && this.props.on ? \"open\" : \"none\"\n };\n this.onClose = ()=>{\n if (this.state.animate !== \"close\") {\n return;\n }\n this.setState({\n isVisible: false\n });\n };\n }\n}\nconst Droppable = (props)=>{\n _s28();\n const appContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(AppContext);\n !appContext ? true ? invariant(false, \"Could not find app context\") : 0 : void 0;\n const { contextId, isMovementAllowed } = appContext;\n const droppableRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const placeholderRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const { children, droppableId, type, mode, direction, ignoreContainerClipping, isDropDisabled, isCombineEnabled, snapshot, useClone, updateViewportMaxScroll, getContainerForClone } = props;\n const getDroppableRef = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(()=>droppableRef.current, []);\n const setDroppableRef = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(function() {\n let value = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;\n droppableRef.current = value;\n }, []);\n const getPlaceholderRef = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(()=>placeholderRef.current, []);\n const setPlaceholderRef = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(function() {\n let value = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;\n placeholderRef.current = value;\n }, []);\n useValidation({\n props,\n getDroppableRef,\n getPlaceholderRef\n });\n const onPlaceholderTransitionEnd = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useCallback)(()=>{\n if (isMovementAllowed()) {\n updateViewportMaxScroll({\n maxScroll: getMaxWindowScroll()\n });\n }\n }, [\n isMovementAllowed,\n updateViewportMaxScroll\n ]);\n useDroppablePublisher({\n droppableId,\n type,\n mode,\n direction,\n isDropDisabled,\n isCombineEnabled,\n ignoreContainerClipping,\n getDroppableRef\n });\n const placeholder = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useMemo)(()=>/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(AnimateInOut, {\n on: props.placeholder,\n shouldAnimate: props.shouldAnimatePlaceholder\n }, (param)=>{\n let { onClose, data, animate } = param;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Placeholder$1, {\n placeholder: data,\n onClose: onClose,\n innerRef: setPlaceholderRef,\n animate: animate,\n contextId: contextId,\n onTransitionEnd: onPlaceholderTransitionEnd\n });\n }), [\n contextId,\n onPlaceholderTransitionEnd,\n props.placeholder,\n props.shouldAnimatePlaceholder,\n setPlaceholderRef\n ]);\n const provided = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useMemo)(()=>({\n innerRef: setDroppableRef,\n placeholder,\n droppableProps: {\n \"data-rfd-droppable-id\": droppableId,\n \"data-rfd-droppable-context-id\": contextId\n }\n }), [\n contextId,\n droppableId,\n placeholder,\n setDroppableRef\n ]);\n const isUsingCloneFor = useClone ? useClone.dragging.draggableId : null;\n const droppableContext = (0,use_memo_one__WEBPACK_IMPORTED_MODULE_8__.useMemo)(()=>({\n droppableId,\n type,\n isUsingCloneFor\n }), [\n droppableId,\n isUsingCloneFor,\n type\n ]);\n function getClone() {\n if (!useClone) {\n return null;\n }\n const { dragging, render } = useClone;\n const node = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PrivateDraggable, {\n draggableId: dragging.draggableId,\n index: dragging.source.index,\n isClone: true,\n isEnabled: true,\n shouldRespectForcePress: false,\n canDragInteractiveElements: true\n }, (draggableProvided, draggableSnapshot)=>render(draggableProvided, draggableSnapshot, dragging));\n return /*#__PURE__*/ react_dom__WEBPACK_IMPORTED_MODULE_1__.createPortal(node, getContainerForClone());\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(DroppableContext.Provider, {\n value: droppableContext\n }, children(provided, snapshot), getClone());\n};\n_s28(Droppable, \"aXVJ/3+Gpf4C2sWyTdayW9rBw7Q=\", false, function() {\n return [\n useValidation,\n useDroppablePublisher\n ];\n});\n_c7 = Droppable;\nvar Droppable$1 = Droppable;\nfunction getBody() {\n !document.body ? true ? invariant(false, \"document.body is not ready\") : 0 : void 0;\n return document.body;\n}\nconst defaultProps = {\n mode: \"standard\",\n type: \"DEFAULT\",\n direction: \"vertical\",\n isDropDisabled: false,\n isCombineEnabled: false,\n ignoreContainerClipping: false,\n renderClone: null,\n getContainerForClone: getBody\n};\nconst attachDefaultPropsToOwnProps = (ownProps)=>{\n let mergedProps = {\n ...ownProps\n };\n let defaultPropKey;\n for(defaultPropKey in defaultProps){\n if (ownProps[defaultPropKey] === undefined) {\n mergedProps = {\n ...mergedProps,\n [defaultPropKey]: defaultProps[defaultPropKey]\n };\n }\n }\n return mergedProps;\n};\nconst isMatchingType = (type, critical)=>type === critical.droppable.type;\nconst getDraggable = (critical, dimensions)=>dimensions.draggables[critical.draggable.id];\nconst makeMapStateToProps = ()=>{\n const idleWithAnimation = {\n placeholder: null,\n shouldAnimatePlaceholder: true,\n snapshot: {\n isDraggingOver: false,\n draggingOverWith: null,\n draggingFromThisWith: null,\n isUsingPlaceholder: false\n },\n useClone: null\n };\n const idleWithoutAnimation = {\n ...idleWithAnimation,\n shouldAnimatePlaceholder: false\n };\n const getDraggableRubric = (0,memoize_one__WEBPACK_IMPORTED_MODULE_5__[\"default\"])((descriptor)=>({\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n }));\n const getMapProps = (0,memoize_one__WEBPACK_IMPORTED_MODULE_5__[\"default\"])((id, isEnabled, isDraggingOverForConsumer, isDraggingOverForImpact, dragging, renderClone)=>{\n const draggableId = dragging.descriptor.id;\n const isHome = dragging.descriptor.droppableId === id;\n if (isHome) {\n const useClone = renderClone ? {\n render: renderClone,\n dragging: getDraggableRubric(dragging.descriptor)\n } : null;\n const snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: isDraggingOverForConsumer ? draggableId : null,\n draggingFromThisWith: draggableId,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: false,\n snapshot,\n useClone\n };\n }\n if (!isEnabled) {\n return idleWithoutAnimation;\n }\n if (!isDraggingOverForImpact) {\n return idleWithAnimation;\n }\n const snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: draggableId,\n draggingFromThisWith: null,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: true,\n snapshot,\n useClone: null\n };\n });\n const selector = (state, ownProps)=>{\n const ownPropsWithDefaultProps = attachDefaultPropsToOwnProps(ownProps);\n const id = ownPropsWithDefaultProps.droppableId;\n const type = ownPropsWithDefaultProps.type;\n const isEnabled = !ownPropsWithDefaultProps.isDropDisabled;\n const renderClone = ownPropsWithDefaultProps.renderClone;\n if (isDragging(state)) {\n const critical = state.critical;\n if (!isMatchingType(type, critical)) {\n return idleWithoutAnimation;\n }\n const dragging = getDraggable(critical, state.dimensions);\n const isDraggingOver = whatIsDraggedOver(state.impact) === id;\n return getMapProps(id, isEnabled, isDraggingOver, isDraggingOver, dragging, renderClone);\n }\n if (state.phase === \"DROP_ANIMATING\") {\n const completed = state.completed;\n if (!isMatchingType(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n const dragging = getDraggable(completed.critical, state.dimensions);\n return getMapProps(id, isEnabled, whatIsDraggedOverFromResult(completed.result) === id, whatIsDraggedOver(completed.impact) === id, dragging, renderClone);\n }\n if (state.phase === \"IDLE\" && state.completed && !state.shouldFlush) {\n const completed = state.completed;\n if (!isMatchingType(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n const wasOver = whatIsDraggedOver(completed.impact) === id;\n const wasCombining = Boolean(completed.impact.at && completed.impact.at.type === \"COMBINE\");\n const isHome = completed.critical.droppable.id === id;\n if (wasOver) {\n return wasCombining ? idleWithAnimation : idleWithoutAnimation;\n }\n if (isHome) {\n return idleWithAnimation;\n }\n return idleWithoutAnimation;\n }\n return idleWithoutAnimation;\n };\n return selector;\n};\nconst mapDispatchToProps = {\n updateViewportMaxScroll: updateViewportMaxScroll\n};\nconst ConnectedDroppable = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.connect)(makeMapStateToProps, mapDispatchToProps, (stateProps, dispatchProps, ownProps)=>{\n return {\n ...attachDefaultPropsToOwnProps(ownProps),\n ...stateProps,\n ...dispatchProps\n };\n}, {\n context: StoreContext,\n areStatePropsEqual: isStrictEqual\n})(Droppable$1);\nvar ConnectedDroppable$1 = ConnectedDroppable;\n\nvar _c, _c1, _c2, _c3, _c4, _c5, _c6, _c7;\n$RefreshReg$(_c, \"App\");\n$RefreshReg$(_c1, \"DragDropContext\");\n$RefreshReg$(_c2, \"Draggable\");\n$RefreshReg$(_c3, \"PrivateDraggable\");\n$RefreshReg$(_c4, \"PublicDraggable\");\n$RefreshReg$(_c5, \"Placeholder\");\n$RefreshReg$(_c6, \"Placeholder$1\");\n$RefreshReg$(_c7, \"Droppable\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AaGVsbG8tcGFuZ2VhL2RuZC9kaXN0L2RuZC5lc20uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTZHO0FBQzdEO0FBQ21EO0FBQ25EO0FBQ0k7QUFDaUQ7QUFDaEU7QUFDTjtBQUMyQjtBQUUxRCxNQUFNNEIsaUJBQWlCQyxrQkFBeUI7QUFDaEQsTUFBTUMsZ0JBQWdCO0FBQ3RCLE1BQU1DLHNCQUFzQjtBQUM1QixNQUFNQyxVQUFVQyxDQUFBQSxRQUFTQSxNQUFNQyxPQUFPLENBQUNKLGVBQWUsS0FBS0ksT0FBTyxDQUFDSCxxQkFBcUIsSUFBSUksSUFBSTtBQUNoRyxNQUFNQyxnQkFBZ0JDLENBQUFBLFVBQVdMLFFBQVEsa0NBR2xCLE9BQWpCQSxRQUFRSyxVQUFTO0FBSXZCLE1BQU1DLHNCQUFzQkQsQ0FBQUEsVUFBVztRQUFDRCxjQUFjQztRQUFVO1FBQXdEO1FBQW9CO0tBQWtCO0FBQzlKLE1BQU1FLGlCQUFpQjtBQUN2QixTQUFTQyxJQUFJQyxJQUFJLEVBQUVKLE9BQU87SUFDeEIsSUFBSVQsZ0JBQWdCO1FBQ2xCO0lBQ0Y7SUFDQSxJQUFJLE9BQU9jLFdBQVcsZUFBZUEsTUFBTSxDQUFDSCxlQUFlLEVBQUU7UUFDM0Q7SUFDRjtJQUNBSSxPQUFPLENBQUNGLEtBQUssSUFBSUgsb0JBQW9CRDtBQUN2QztBQUNBLE1BQU1PLFVBQVVKLElBQUlLLElBQUksQ0FBQyxNQUFNO0FBQy9CLE1BQU1DLFFBQVFOLElBQUlLLElBQUksQ0FBQyxNQUFNO0FBRTdCLFNBQVNFLFVBQVU7QUFFbkIsU0FBU0MsV0FBV0MsTUFBTSxFQUFFQyxXQUFXO0lBQ3JDLE9BQU87UUFDTCxHQUFHRCxNQUFNO1FBQ1QsR0FBR0MsV0FBVztJQUNoQjtBQUNGO0FBQ0EsU0FBU0MsV0FBV0MsRUFBRSxFQUFFQyxRQUFRLEVBQUVDLGFBQWE7SUFDN0MsTUFBTUMsYUFBYUYsU0FBU0csR0FBRyxDQUFD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QU84eUIsZUFBZVosb0JBQW9CSztZQUM1QztZQUNBLElBQUlLLFFBQVE7Z0JBQ1YsT0FBT1Y7WUFDVDtZQUNBLE9BQU9LO1FBQ1Q7UUFDQSxPQUFPQTtJQUNUO0lBQ0EsT0FBT2hlO0FBQ1Q7QUFDQSxNQUFNd2UscUJBQXFCO0lBQ3pCL3dCLHlCQUF5QkE7QUFDM0I7QUFDQSxNQUFNZ3hCLHFCQUFxQnB4QyxvREFBT0EsQ0FBQ3F3QyxxQkFBcUJjLG9CQUFvQixDQUFDRSxZQUFZQyxlQUFlaEo7SUFDdEcsT0FBTztRQUNMLEdBQUcwSCw2QkFBNkIxSCxTQUFTO1FBQ3pDLEdBQUcrSSxVQUFVO1FBQ2IsR0FBR0MsYUFBYTtJQUNsQjtBQUNGLEdBQUc7SUFDRGxmLFNBQVNpRjtJQUNUaVMsb0JBQW9CM0I7QUFDdEIsR0FBR2tJO0FBQ0gsSUFBSTBCLHVCQUF1Qkg7QUFFd0kiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BoZWxsby1wYW5nZWEvZG5kL2Rpc3QvZG5kLmVzbS5qcz9jOTk3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VMYXlvdXRFZmZlY3QgYXMgdXNlTGF5b3V0RWZmZWN0JDEsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSwgeyBmbHVzaFN5bmMgfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgY3JlYXRlU3RvcmUgYXMgY3JlYXRlU3RvcmUkMSwgYXBwbHlNaWRkbGV3YXJlLCBjb21wb3NlLCBiaW5kQWN0aW9uQ3JlYXRvcnMgfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgeyBQcm92aWRlciwgY29ubmVjdCB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IHVzZU1lbW8sIHVzZUNhbGxiYWNrIH0gZnJvbSAndXNlLW1lbW8tb25lJztcbmltcG9ydCB7IGdldFJlY3QsIGV4cGFuZCwgb2Zmc2V0LCB3aXRoU2Nyb2xsLCBjYWxjdWxhdGVCb3gsIGdldEJveCwgY3JlYXRlQm94IH0gZnJvbSAnY3NzLWJveC1tb2RlbCc7XG5pbXBvcnQgbWVtb2l6ZU9uZSBmcm9tICdtZW1vaXplLW9uZSc7XG5pbXBvcnQgcmFmU2NoZCBmcm9tICdyYWYtc2NoZCc7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcyc7XG5cbmNvbnN0IGlzUHJvZHVjdGlvbiQxID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJztcbmNvbnN0IHNwYWNlc0FuZFRhYnMgPSAvWyBcXHRdezIsfS9nO1xuY29uc3QgbGluZVN0YXJ0V2l0aFNwYWNlcyA9IC9eWyBcXHRdKi9nbTtcbmNvbnN0IGNsZWFuJDIgPSB2YWx1ZSA9PiB2YWx1ZS5yZXBsYWNlKHNwYWNlc0FuZFRhYnMsICcgJykucmVwbGFjZShsaW5lU3RhcnRXaXRoU3BhY2VzLCAnJykudHJpbSgpO1xuY29uc3QgZ2V0RGV2TWVzc2FnZSA9IG1lc3NhZ2UgPT4gY2xlYW4kMihgXG4gICVjQGhlbGxvLXBhbmdlYS9kbmRcblxuICAlYyR7Y2xlYW4kMihtZXNzYWdlKX1cblxuICAlY/CfkbfigI0gVGhpcyBpcyBhIGRldmVsb3BtZW50IG9ubHkgbWVzc2FnZS4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHByb2R1Y3Rpb24gYnVpbGRzLlxuYCk7XG5jb25zdCBnZXRGb3JtYXR0ZWRNZXNzYWdlID0gbWVzc2FnZSA9PiBbZ2V0RGV2TWVzc2FnZShtZXNzYWdlKSwgJ2NvbG9yOiAjMDBDNTg0OyBmb250LXNpemU6IDEuMmVtOyBmb250LXdlaWdodDogYm9sZDsnLCAnbGluZS1oZWlnaHQ6IDEuNScsICdjb2xvcjogIzcyMzg3NDsnXTtcbmNvbnN0IGlzRGlzYWJsZWRGbGFnID0gJ19fQGhlbGxvLXBhbmdlYS9kbmQtZGlzYWJsZS1kZXYtd2FybmluZ3MnO1xuZnVuY3Rpb24gbG9nKHR5cGUsIG1lc3NhZ2UpIHtcbiAgaWYgKGlzUHJvZHVjdGlvbiQxKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3dbaXNEaXNhYmxlZEZsYWddKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnNvbGVbdHlwZV0oLi4uZ2V0Rm9ybWF0dGVkTWVzc2FnZShtZXNzYWdlKSk7XG59XG5jb25zdCB3YXJuaW5nID0gbG9nLmJpbmQobnVsbCwgJ3dhcm4nKTtcbmNvbnN0IGVycm9yID0gbG9nLmJpbmQobnVsbCwgJ2Vycm9yJyk7XG5cbmZ1bmN0aW9uIG5vb3AkMigpIHt9XG5cbmZ1bmN0aW9uIGdldE9wdGlvbnMoc2hhcmVkLCBmcm9tQmluZGluZykge1xuICByZXR1cm4ge1xuICAgIC4uLnNoYXJlZCxcbiAgICAuLi5mcm9tQmluZGluZ1xuICB9O1xufVxuZnVuY3Rpb24gYmluZEV2ZW50cyhlbCwgYmluZGluZ3MsIHNoYXJlZE9wdGlvbnMpIHtcbiAgY29uc3QgdW5iaW5kaW5ncyA9IGJpbmRpbmdzLm1hcChiaW5kaW5nID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gZ2V0T3B0aW9ucyhzaGFyZWRPcHRpb25zLCBiaW5kaW5nLm9wdGlvbnMpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoYmluZGluZy5ldmVudE5hbWUsIGJpbmRpbmcuZm4sIG9wdGlvbnMpO1xuICAgIHJldHVybiBmdW5jdGlvbiB1bmJpbmQoKSB7XG4gICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGJpbmRpbmcuZXZlbnROYW1lLCBiaW5kaW5nLmZuLCBvcHRpb25zKTtcbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVuYmluZEFsbCgpIHtcbiAgICB1bmJpbmRpbmdzLmZvckVhY2godW5iaW5kID0+IHtcbiAgICAgIHVuYmluZCgpO1xuICAgIH0pO1xuICB9O1xufVxuXG5jb25zdCBpc1Byb2R1Y3Rpb24gPSBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nO1xuY29uc3QgcHJlZml4JDEgPSAnSW52YXJpYW50IGZhaWxlZCc7XG5jbGFzcyBSYmRJbnZhcmlhbnQgZXh0ZW5kcyBFcnJvciB7fVxuUmJkSW52YXJpYW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdGhpcy5tZXNzYWdlO1xufTtcbmZ1bmN0aW9uIGludmFyaWFudChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgaWYgKGNvbmRpdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaXNQcm9kdWN0aW9uKSB7XG4gICAgdGhyb3cgbmV3IFJiZEludmFyaWFudChwcmVmaXgkMSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFJiZEludmFyaWFudChgJHtwcmVmaXgkMX06ICR7bWVzc2FnZSB8fCAnJ31gKTtcbiAgfVxufVxuXG5jbGFzcyBFcnJvckJvdW5kYXJ5IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoLi4uYXJncykge1xuICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgIHRoaXMuY2FsbGJhY2tzID0gbnVsbDtcbiAgICB0aGlzLnVuYmluZCA9IG5vb3AkMjtcbiAgICB0aGlzLm9uV2luZG93RXJyb3IgPSBldmVudCA9PiB7XG4gICAgICBjb25zdCBjYWxsYmFja3MgPSB0aGlzLmdldENhbGxiYWNrcygpO1xuICAgICAgaWYgKGNhbGxiYWNrcy5pc0RyYWdnaW5nKCkpIHtcbiAgICAgICAgY2FsbGJhY2tzLnRyeUFib3J0KCk7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoYFxuICAgICAgICBBbiBlcnJvciB3YXMgY2F1Z2h0IGJ5IG91ciB3aW5kb3cgJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB3aGlsZSBhIGRyYWcgd2FzIG9jY3VycmluZy5cbiAgICAgICAgVGhlIGFjdGl2ZSBkcmFnIGhhcyBiZWVuIGFib3J0ZWQuXG4gICAgICBgKSA6IHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVyciA9IGV2ZW50LmVycm9yO1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFJiZEludmFyaWFudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGVycm9yKGVyci5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5nZXRDYWxsYmFja3MgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY2FsbGJhY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgQXBwQ2FsbGJhY2tzIGluIDxFcnJvckJvdW5kYXJ5Lz4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmNhbGxiYWNrcztcbiAgICB9O1xuICAgIHRoaXMuc2V0Q2FsbGJhY2tzID0gY2FsbGJhY2tzID0+IHtcbiAgICAgIHRoaXMuY2FsbGJhY2tzID0gY2FsbGJhY2tzO1xuICAgIH07XG4gIH1cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy51bmJpbmQgPSBiaW5kRXZlbnRzKHdpbmRvdywgW3tcbiAgICAgIGV2ZW50TmFtZTogJ2Vycm9yJyxcbiAgICAgIGZuOiB0aGlzLm9uV2luZG93RXJyb3JcbiAgICB9XSk7XG4gIH1cbiAgY29tcG9uZW50RGlkQ2F0Y2goZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIFJiZEludmFyaWFudCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgZXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7fSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IGVycjtcbiAgfVxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLnVuYmluZCgpO1xuICB9XG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbih0aGlzLnNldENhbGxiYWNrcyk7XG4gIH1cbn1cblxuY29uc3QgZHJhZ0hhbmRsZVVzYWdlSW5zdHJ1Y3Rpb25zID0gYFxuICBQcmVzcyBzcGFjZSBiYXIgdG8gc3RhcnQgYSBkcmFnLlxuICBXaGVuIGRyYWdnaW5nIHlvdSBjYW4gdXNlIHRoZSBhcnJvdyBrZXlzIHRvIG1vdmUgdGhlIGl0ZW0gYXJvdW5kIGFuZCBlc2NhcGUgdG8gY2FuY2VsLlxuICBTb21lIHNjcmVlbiByZWFkZXJzIG1heSByZXF1aXJlIHlvdSB0byBiZSBpbiBmb2N1cyBtb2RlIG9yIHRvIHVzZSB5b3VyIHBhc3MgdGhyb3VnaCBrZXlcbmA7XG5jb25zdCBwb3NpdGlvbiA9IGluZGV4ID0+IGluZGV4ICsgMTtcbmNvbnN0IG9uRHJhZ1N0YXJ0ID0gc3RhcnQgPT4gYFxuICBZb3UgaGF2ZSBsaWZ0ZWQgYW4gaXRlbSBpbiBwb3NpdGlvbiAke3Bvc2l0aW9uKHN0YXJ0LnNvdXJjZS5pbmRleCl9XG5gO1xuY29uc3Qgd2l0aExvY2F0aW9uID0gKHNvdXJjZSwgZGVzdGluYXRpb24pID0+IHtcbiAgY29uc3QgaXNJbkhvbWVMaXN0ID0gc291cmNlLmRyb3BwYWJsZUlkID09PSBkZXN0aW5hdGlvbi5kcm9wcGFibGVJZDtcbiAgY29uc3Qgc3RhcnRQb3NpdGlvbiA9IHBvc2l0aW9uKHNvdXJjZS5pbmRleCk7XG4gIGNvbnN0IGVuZFBvc2l0aW9uID0gcG9zaXRpb24oZGVzdGluYXRpb24uaW5kZXgpO1xuICBpZiAoaXNJbkhvbWVMaXN0KSB7XG4gICAgcmV0dXJuIGBcbiAgICAgIFlvdSBoYXZlIG1vdmVkIHRoZSBpdGVtIGZyb20gcG9zaXRpb24gJHtzdGFydFBvc2l0aW9ufVxuICAgICAgdG8gcG9zaXRpb24gJHtlbmRQb3NpdGlvbn1cbiAgICBgO1xuICB9XG4gIHJldHVybiBgXG4gICAgWW91IGhhdmUgbW92ZWQgdGhlIGl0ZW0gZnJvbSBwb3NpdGlvbiAke3N0YXJ0UG9zaXRpb259XG4gICAgaW4gbGlzdCAke3NvdXJjZS5kcm9wcGFibGVJZH1cbiAgICB0byBsaXN0ICR7ZGVzdGluYXRpb24uZHJvcHBhYmxlSWR9XG4gICAgaW4gcG9zaXRpb24gJHtlbmRQb3NpdGlvbn1cbiAgYDtcbn07XG5jb25zdCB3aXRoQ29tYmluZSA9IChpZCwgc291cmNlLCBjb21iaW5lKSA9PiB7XG4gIGNvbnN0IGluSG9tZUxpc3QgPSBzb3VyY2UuZHJvcHBhYmxlSWQgPT09IGNvbWJpbmUuZHJvcHBhYmxlSWQ7XG4gIGlmIChpbkhvbWVMaXN0KSB7XG4gICAgcmV0dXJuIGBcbiAgICAgIFRoZSBpdGVtICR7aWR9XG4gICAgICBoYXMgYmVlbiBjb21iaW5lZCB3aXRoICR7Y29tYmluZS5kcmFnZ2FibGVJZH1gO1xuICB9XG4gIHJldHVybiBgXG4gICAgICBUaGUgaXRlbSAke2lkfVxuICAgICAgaW4gbGlzdCAke3NvdXJjZS5kcm9wcGFibGVJZH1cbiAgICAgIGhhcyBiZWVuIGNvbWJpbmVkIHdpdGggJHtjb21iaW5lLmRyYWdnYWJsZUlkfVxuICAgICAgaW4gbGlzdCAke2NvbWJpbmUuZHJvcHBhYmxlSWR9XG4gICAgYDtcbn07XG5jb25zdCBvbkRyYWdVcGRhdGUgPSB1cGRhdGUgPT4ge1xuICBjb25zdCBsb2NhdGlvbiA9IHVwZGF0ZS5kZXN0aW5hdGlvbjtcbiAgaWYgKGxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIHdpdGhMb2NhdGlvbih1cGRhdGUuc291cmNlLCBsb2NhdGlvbik7XG4gIH1cbiAgY29uc3QgY29tYmluZSA9IHVwZGF0ZS5jb21iaW5lO1xuICBpZiAoY29tYmluZSkge1xuICAgIHJldHVybiB3aXRoQ29tYmluZSh1cGRhdGUuZHJhZ2dhYmxlSWQsIHVwZGF0ZS5zb3VyY2UsIGNvbWJpbmUpO1xuICB9XG4gIHJldHVybiAnWW91IGFyZSBvdmVyIGFuIGFyZWEgdGhhdCBjYW5ub3QgYmUgZHJvcHBlZCBvbic7XG59O1xuY29uc3QgcmV0dXJuZWRUb1N0YXJ0ID0gc291cmNlID0+IGBcbiAgVGhlIGl0ZW0gaGFzIHJldHVybmVkIHRvIGl0cyBzdGFydGluZyBwb3NpdGlvblxuICBvZiAke3Bvc2l0aW9uKHNvdXJjZS5pbmRleCl9XG5gO1xuY29uc3Qgb25EcmFnRW5kID0gcmVzdWx0ID0+IHtcbiAgaWYgKHJlc3VsdC5yZWFzb24gPT09ICdDQU5DRUwnKSB7XG4gICAgcmV0dXJuIGBcbiAgICAgIE1vdmVtZW50IGNhbmNlbGxlZC5cbiAgICAgICR7cmV0dXJuZWRUb1N0YXJ0KHJlc3VsdC5zb3VyY2UpfVxuICAgIGA7XG4gIH1cbiAgY29uc3QgbG9jYXRpb24gPSByZXN1bHQuZGVzdGluYXRpb247XG4gIGNvbnN0IGNvbWJpbmUgPSByZXN1bHQuY29tYmluZTtcbiAgaWYgKGxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIGBcbiAgICAgIFlvdSBoYXZlIGRyb3BwZWQgdGhlIGl0ZW0uXG4gICAgICAke3dpdGhMb2NhdGlvbihyZXN1bHQuc291cmNlLCBsb2NhdGlvbil9XG4gICAgYDtcbiAgfVxuICBpZiAoY29tYmluZSkge1xuICAgIHJldHVybiBgXG4gICAgICBZb3UgaGF2ZSBkcm9wcGVkIHRoZSBpdGVtLlxuICAgICAgJHt3aXRoQ29tYmluZShyZXN1bHQuZHJhZ2dhYmxlSWQsIHJlc3VsdC5zb3VyY2UsIGNvbWJpbmUpfVxuICAgIGA7XG4gIH1cbiAgcmV0dXJuIGBcbiAgICBUaGUgaXRlbSBoYXMgYmVlbiBkcm9wcGVkIHdoaWxlIG5vdCBvdmVyIGEgZHJvcCBhcmVhLlxuICAgICR7cmV0dXJuZWRUb1N0YXJ0KHJlc3VsdC5zb3VyY2UpfVxuICBgO1xufTtcbmNvbnN0IHByZXNldCA9IHtcbiAgZHJhZ0hhbmRsZVVzYWdlSW5zdHJ1Y3Rpb25zLFxuICBvbkRyYWdTdGFydCxcbiAgb25EcmFnVXBkYXRlLFxuICBvbkRyYWdFbmRcbn07XG52YXIgcHJlc2V0JDEgPSBwcmVzZXQ7XG5cbmNvbnN0IG9yaWdpbiA9IHtcbiAgeDogMCxcbiAgeTogMFxufTtcbmNvbnN0IGFkZCA9IChwb2ludDEsIHBvaW50MikgPT4gKHtcbiAgeDogcG9pbnQxLnggKyBwb2ludDIueCxcbiAgeTogcG9pbnQxLnkgKyBwb2ludDIueVxufSk7XG5jb25zdCBzdWJ0cmFjdCA9IChwb2ludDEsIHBvaW50MikgPT4gKHtcbiAgeDogcG9pbnQxLnggLSBwb2ludDIueCxcbiAgeTogcG9pbnQxLnkgLSBwb2ludDIueVxufSk7XG5jb25zdCBpc0VxdWFsJDEgPSAocG9pbnQxLCBwb2ludDIpID0+IHBvaW50MS54ID09PSBwb2ludDIueCAmJiBwb2ludDEueSA9PT0gcG9pbnQyLnk7XG5jb25zdCBuZWdhdGUgPSBwb2ludCA9PiAoe1xuICB4OiBwb2ludC54ICE9PSAwID8gLXBvaW50LnggOiAwLFxuICB5OiBwb2ludC55ICE9PSAwID8gLXBvaW50LnkgOiAwXG59KTtcbmNvbnN0IHBhdGNoID0gKGxpbmUsIHZhbHVlLCBvdGhlclZhbHVlID0gMCkgPT4ge1xuICBpZiAobGluZSA9PT0gJ3gnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHZhbHVlLFxuICAgICAgeTogb3RoZXJWYWx1ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiBvdGhlclZhbHVlLFxuICAgIHk6IHZhbHVlXG4gIH07XG59O1xuY29uc3QgZGlzdGFuY2UgPSAocG9pbnQxLCBwb2ludDIpID0+IE1hdGguc3FydCgocG9pbnQyLnggLSBwb2ludDEueCkgKiogMiArIChwb2ludDIueSAtIHBvaW50MS55KSAqKiAyKTtcbmNvbnN0IGNsb3Nlc3QkMSA9ICh0YXJnZXQsIHBvaW50cykgPT4gTWF0aC5taW4oLi4ucG9pbnRzLm1hcChwb2ludCA9PiBkaXN0YW5jZSh0YXJnZXQsIHBvaW50KSkpO1xuY29uc3QgYXBwbHkgPSBmbiA9PiBwb2ludCA9PiAoe1xuICB4OiBmbihwb2ludC54KSxcbiAgeTogZm4ocG9pbnQueSlcbn0pO1xuXG52YXIgZXhlY3V0ZUNsaXAgPSAoKGZyYW1lLCBzdWJqZWN0KSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGdldFJlY3Qoe1xuICAgIHRvcDogTWF0aC5tYXgoc3ViamVjdC50b3AsIGZyYW1lLnRvcCksXG4gICAgcmlnaHQ6IE1hdGgubWluKHN1YmplY3QucmlnaHQsIGZyYW1lLnJpZ2h0KSxcbiAgICBib3R0b206IE1hdGgubWluKHN1YmplY3QuYm90dG9tLCBmcmFtZS5ib3R0b20pLFxuICAgIGxlZnQ6IE1hdGgubWF4KHN1YmplY3QubGVmdCwgZnJhbWUubGVmdClcbiAgfSk7XG4gIGlmIChyZXN1bHQud2lkdGggPD0gMCB8fCByZXN1bHQuaGVpZ2h0IDw9IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbmNvbnN0IG9mZnNldEJ5UG9zaXRpb24gPSAoc3BhY2luZywgcG9pbnQpID0+ICh7XG4gIHRvcDogc3BhY2luZy50b3AgKyBwb2ludC55LFxuICBsZWZ0OiBzcGFjaW5nLmxlZnQgKyBwb2ludC54LFxuICBib3R0b206IHNwYWNpbmcuYm90dG9tICsgcG9pbnQueSxcbiAgcmlnaHQ6IHNwYWNpbmcucmlnaHQgKyBwb2ludC54XG59KTtcbmNvbnN0IGdldENvcm5lcnMgPSBzcGFjaW5nID0+IFt7XG4gIHg6IHNwYWNpbmcubGVmdCxcbiAgeTogc3BhY2luZy50b3Bcbn0sIHtcbiAgeDogc3BhY2luZy5yaWdodCxcbiAgeTogc3BhY2luZy50b3Bcbn0sIHtcbiAgeDogc3BhY2luZy5sZWZ0LFxuICB5OiBzcGFjaW5nLmJvdHRvbVxufSwge1xuICB4OiBzcGFjaW5nLnJpZ2h0LFxuICB5OiBzcGFjaW5nLmJvdHRvbVxufV07XG5jb25zdCBub1NwYWNpbmcgPSB7XG4gIHRvcDogMCxcbiAgcmlnaHQ6IDAsXG4gIGJvdHRvbTogMCxcbiAgbGVmdDogMFxufTtcblxuY29uc3Qgc2Nyb2xsJDEgPSAodGFyZ2V0LCBmcmFtZSkgPT4ge1xuICBpZiAoIWZyYW1lKSB7XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuICByZXR1cm4gb2Zmc2V0QnlQb3NpdGlvbih0YXJnZXQsIGZyYW1lLnNjcm9sbC5kaWZmLmRpc3BsYWNlbWVudCk7XG59O1xuY29uc3QgaW5jcmVhc2UgPSAodGFyZ2V0LCBheGlzLCB3aXRoUGxhY2Vob2xkZXIpID0+IHtcbiAgaWYgKHdpdGhQbGFjZWhvbGRlciAmJiB3aXRoUGxhY2Vob2xkZXIuaW5jcmVhc2VkQnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGFyZ2V0LFxuICAgICAgW2F4aXMuZW5kXTogdGFyZ2V0W2F4aXMuZW5kXSArIHdpdGhQbGFjZWhvbGRlci5pbmNyZWFzZWRCeVtheGlzLmxpbmVdXG4gICAgfTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmNvbnN0IGNsaXAgPSAodGFyZ2V0LCBmcmFtZSkgPT4ge1xuICBpZiAoZnJhbWUgJiYgZnJhbWUuc2hvdWxkQ2xpcFN1YmplY3QpIHtcbiAgICByZXR1cm4gZXhlY3V0ZUNsaXAoZnJhbWUucGFnZU1hcmdpbkJveCwgdGFyZ2V0KTtcbiAgfVxuICByZXR1cm4gZ2V0UmVjdCh0YXJnZXQpO1xufTtcbnZhciBnZXRTdWJqZWN0ID0gKCh7XG4gIHBhZ2UsXG4gIHdpdGhQbGFjZWhvbGRlcixcbiAgYXhpcyxcbiAgZnJhbWVcbn0pID0+IHtcbiAgY29uc3Qgc2Nyb2xsZWQgPSBzY3JvbGwkMShwYWdlLm1hcmdpbkJveCwgZnJhbWUpO1xuICBjb25zdCBpbmNyZWFzZWQgPSBpbmNyZWFzZShzY3JvbGxlZCwgYXhpcywgd2l0aFBsYWNlaG9sZGVyKTtcbiAgY29uc3QgY2xpcHBlZCA9IGNsaXAoaW5jcmVhc2VkLCBmcmFtZSk7XG4gIHJldHVybiB7XG4gICAgcGFnZSxcbiAgICB3aXRoUGxhY2Vob2xkZXIsXG4gICAgYWN0aXZlOiBjbGlwcGVkXG4gIH07XG59KTtcblxudmFyIHNjcm9sbERyb3BwYWJsZSA9ICgoZHJvcHBhYmxlLCBuZXdTY3JvbGwpID0+IHtcbiAgIWRyb3BwYWJsZS5mcmFtZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBjb25zdCBzY3JvbGxhYmxlID0gZHJvcHBhYmxlLmZyYW1lO1xuICBjb25zdCBzY3JvbGxEaWZmID0gc3VidHJhY3QobmV3U2Nyb2xsLCBzY3JvbGxhYmxlLnNjcm9sbC5pbml0aWFsKTtcbiAgY29uc3Qgc2Nyb2xsRGlzcGxhY2VtZW50ID0gbmVnYXRlKHNjcm9sbERpZmYpO1xuICBjb25zdCBmcmFtZSA9IHtcbiAgICAuLi5zY3JvbGxhYmxlLFxuICAgIHNjcm9sbDoge1xuICAgICAgaW5pdGlhbDogc2Nyb2xsYWJsZS5zY3JvbGwuaW5pdGlhbCxcbiAgICAgIGN1cnJlbnQ6IG5ld1Njcm9sbCxcbiAgICAgIGRpZmY6IHtcbiAgICAgICAgdmFsdWU6IHNjcm9sbERpZmYsXG4gICAgICAgIGRpc3BsYWNlbWVudDogc2Nyb2xsRGlzcGxhY2VtZW50XG4gICAgICB9LFxuICAgICAgbWF4OiBzY3JvbGxhYmxlLnNjcm9sbC5tYXhcbiAgICB9XG4gIH07XG4gIGNvbnN0IHN1YmplY3QgPSBnZXRTdWJqZWN0KHtcbiAgICBwYWdlOiBkcm9wcGFibGUuc3ViamVjdC5wYWdlLFxuICAgIHdpdGhQbGFjZWhvbGRlcjogZHJvcHBhYmxlLnN1YmplY3Qud2l0aFBsYWNlaG9sZGVyLFxuICAgIGF4aXM6IGRyb3BwYWJsZS5heGlzLFxuICAgIGZyYW1lXG4gIH0pO1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgLi4uZHJvcHBhYmxlLFxuICAgIGZyYW1lLFxuICAgIHN1YmplY3RcbiAgfTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG5jb25zdCB0b0Ryb3BwYWJsZU1hcCA9IG1lbW9pemVPbmUoZHJvcHBhYmxlcyA9PiBkcm9wcGFibGVzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IHtcbiAgcHJldmlvdXNbY3VycmVudC5kZXNjcmlwdG9yLmlkXSA9IGN1cnJlbnQ7XG4gIHJldHVybiBwcmV2aW91cztcbn0sIHt9KSk7XG5jb25zdCB0b0RyYWdnYWJsZU1hcCA9IG1lbW9pemVPbmUoZHJhZ2dhYmxlcyA9PiBkcmFnZ2FibGVzLnJlZHVjZSgocHJldmlvdXMsIGN1cnJlbnQpID0+IHtcbiAgcHJldmlvdXNbY3VycmVudC5kZXNjcmlwdG9yLmlkXSA9IGN1cnJlbnQ7XG4gIHJldHVybiBwcmV2aW91cztcbn0sIHt9KSk7XG5jb25zdCB0b0Ryb3BwYWJsZUxpc3QgPSBtZW1vaXplT25lKGRyb3BwYWJsZXMgPT4gT2JqZWN0LnZhbHVlcyhkcm9wcGFibGVzKSk7XG5jb25zdCB0b0RyYWdnYWJsZUxpc3QgPSBtZW1vaXplT25lKGRyYWdnYWJsZXMgPT4gT2JqZWN0LnZhbHVlcyhkcmFnZ2FibGVzKSk7XG5cbnZhciBnZXREcmFnZ2FibGVzSW5zaWRlRHJvcHBhYmxlID0gbWVtb2l6ZU9uZSgoZHJvcHBhYmxlSWQsIGRyYWdnYWJsZXMpID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gdG9EcmFnZ2FibGVMaXN0KGRyYWdnYWJsZXMpLmZpbHRlcihkcmFnZ2FibGUgPT4gZHJvcHBhYmxlSWQgPT09IGRyYWdnYWJsZS5kZXNjcmlwdG9yLmRyb3BwYWJsZUlkKS5zb3J0KChhLCBiKSA9PiBhLmRlc2NyaXB0b3IuaW5kZXggLSBiLmRlc2NyaXB0b3IuaW5kZXgpO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbmZ1bmN0aW9uIHRyeUdldERlc3RpbmF0aW9uKGltcGFjdCkge1xuICBpZiAoaW1wYWN0LmF0ICYmIGltcGFjdC5hdC50eXBlID09PSAnUkVPUkRFUicpIHtcbiAgICByZXR1cm4gaW1wYWN0LmF0LmRlc3RpbmF0aW9uO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gdHJ5R2V0Q29tYmluZShpbXBhY3QpIHtcbiAgaWYgKGltcGFjdC5hdCAmJiBpbXBhY3QuYXQudHlwZSA9PT0gJ0NPTUJJTkUnKSB7XG4gICAgcmV0dXJuIGltcGFjdC5hdC5jb21iaW5lO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG52YXIgcmVtb3ZlRHJhZ2dhYmxlRnJvbUxpc3QgPSBtZW1vaXplT25lKChyZW1vdmUsIGxpc3QpID0+IGxpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS5kZXNjcmlwdG9yLmlkICE9PSByZW1vdmUuZGVzY3JpcHRvci5pZCkpO1xuXG52YXIgbW92ZVRvTmV4dENvbWJpbmUgPSAoKHtcbiAgaXNNb3ZpbmdGb3J3YXJkLFxuICBkcmFnZ2FibGUsXG4gIGRlc3RpbmF0aW9uLFxuICBpbnNpZGVEZXN0aW5hdGlvbixcbiAgcHJldmlvdXNJbXBhY3Rcbn0pID0+IHtcbiAgaWYgKCFkZXN0aW5hdGlvbi5pc0NvbWJpbmVFbmFibGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgbG9jYXRpb24gPSB0cnlHZXREZXN0aW5hdGlvbihwcmV2aW91c0ltcGFjdCk7XG4gIGlmICghbG9jYXRpb24pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBmdW5jdGlvbiBnZXRJbXBhY3QodGFyZ2V0KSB7XG4gICAgY29uc3QgYXQgPSB7XG4gICAgICB0eXBlOiAnQ09NQklORScsXG4gICAgICBjb21iaW5lOiB7XG4gICAgICAgIGRyYWdnYWJsZUlkOiB0YXJnZXQsXG4gICAgICAgIGRyb3BwYWJsZUlkOiBkZXN0aW5hdGlvbi5kZXNjcmlwdG9yLmlkXG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucHJldmlvdXNJbXBhY3QsXG4gICAgICBhdFxuICAgIH07XG4gIH1cbiAgY29uc3QgYWxsID0gcHJldmlvdXNJbXBhY3QuZGlzcGxhY2VkLmFsbDtcbiAgY29uc3QgY2xvc2VzdElkID0gYWxsLmxlbmd0aCA/IGFsbFswXSA6IG51bGw7XG4gIGlmIChpc01vdmluZ0ZvcndhcmQpIHtcbiAgICByZXR1cm4gY2xvc2VzdElkID8gZ2V0SW1wYWN0KGNsb3Nlc3RJZCkgOiBudWxsO1xuICB9XG4gIGNvbnN0IHdpdGhvdXREcmFnZ2FibGUgPSByZW1vdmVEcmFnZ2FibGVGcm9tTGlzdChkcmFnZ2FibGUsIGluc2lkZURlc3RpbmF0aW9uKTtcbiAgaWYgKCFjbG9zZXN0SWQpIHtcbiAgICBpZiAoIXdpdGhvdXREcmFnZ2FibGUubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbGFzdCA9IHdpdGhvdXREcmFnZ2FibGVbd2l0aG91dERyYWdnYWJsZS5sZW5ndGggLSAxXTtcbiAgICByZXR1cm4gZ2V0SW1wYWN0KGxhc3QuZGVzY3JpcHRvci5pZCk7XG4gIH1cbiAgY29uc3QgaW5kZXhPZkNsb3Nlc3QgPSB3aXRob3V0RHJhZ2dhYmxlLmZpbmRJbmRleChkID0+IGQuZGVzY3JpcHRvci5pZCA9PT0gY2xvc2VzdElkKTtcbiAgIShpbmRleE9mQ2xvc2VzdCAhPT0gLTEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ291bGQgbm90IGZpbmQgZGlzcGxhY2VkIGl0ZW0gaW4gc2V0JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBjb25zdCBwcm9wb3NlZEluZGV4ID0gaW5kZXhPZkNsb3Nlc3QgLSAxO1xuICBpZiAocHJvcG9zZWRJbmRleCA8IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBiZWZvcmUgPSB3aXRob3V0RHJhZ2dhYmxlW3Byb3Bvc2VkSW5kZXhdO1xuICByZXR1cm4gZ2V0SW1wYWN0KGJlZm9yZS5kZXNjcmlwdG9yLmlkKTtcbn0pO1xuXG52YXIgaXNIb21lT2YgPSAoKGRyYWdnYWJsZSwgZGVzdGluYXRpb24pID0+IGRyYWdnYWJsZS5kZXNjcmlwdG9yLmRyb3BwYWJsZUlkID09PSBkZXN0aW5hdGlvbi5kZXNjcmlwdG9yLmlkKTtcblxuY29uc3Qgbm9EaXNwbGFjZWRCeSA9IHtcbiAgcG9pbnQ6IG9yaWdpbixcbiAgdmFsdWU6IDBcbn07XG5jb25zdCBlbXB0eUdyb3VwcyA9IHtcbiAgaW52aXNpYmxlOiB7fSxcbiAgdmlzaWJsZToge30sXG4gIGFsbDogW11cbn07XG5jb25zdCBub0ltcGFjdCA9IHtcbiAgZGlzcGxhY2VkOiBlbXB0eUdyb3VwcyxcbiAgZGlzcGxhY2VkQnk6IG5vRGlzcGxhY2VkQnksXG4gIGF0OiBudWxsXG59O1xudmFyIG5vSW1wYWN0JDEgPSBub0ltcGFjdDtcblxudmFyIGlzV2l0aGluID0gKChsb3dlckJvdW5kLCB1cHBlckJvdW5kKSA9PiB2YWx1ZSA9PiBsb3dlckJvdW5kIDw9IHZhbHVlICYmIHZhbHVlIDw9IHVwcGVyQm91bmQpO1xuXG52YXIgaXNQYXJ0aWFsbHlWaXNpYmxlVGhyb3VnaEZyYW1lID0gKGZyYW1lID0+IHtcbiAgY29uc3QgaXNXaXRoaW5WZXJ0aWNhbCA9IGlzV2l0aGluKGZyYW1lLnRvcCwgZnJhbWUuYm90dG9tKTtcbiAgY29uc3QgaXNXaXRoaW5Ib3Jpem9udGFsID0gaXNXaXRoaW4oZnJhbWUubGVmdCwgZnJhbWUucmlnaHQpO1xuICByZXR1cm4gc3ViamVjdCA9PiB7XG4gICAgY29uc3QgaXNDb250YWluZWQgPSBpc1dpdGhpblZlcnRpY2FsKHN1YmplY3QudG9wKSAmJiBpc1dpdGhpblZlcnRpY2FsKHN1YmplY3QuYm90dG9tKSAmJiBpc1dpdGhpbkhvcml6b250YWwoc3ViamVjdC5sZWZ0KSAmJiBpc1dpdGhpbkhvcml6b250YWwoc3ViamVjdC5yaWdodCk7XG4gICAgaWYgKGlzQ29udGFpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgaXNQYXJ0aWFsbHlWaXNpYmxlVmVydGljYWxseSA9IGlzV2l0aGluVmVydGljYWwoc3ViamVjdC50b3ApIHx8IGlzV2l0aGluVmVydGljYWwoc3ViamVjdC5ib3R0b20pO1xuICAgIGNvbnN0IGlzUGFydGlhbGx5VmlzaWJsZUhvcml6b250YWxseSA9IGlzV2l0aGluSG9yaXpvbnRhbChzdWJqZWN0LmxlZnQpIHx8IGlzV2l0aGluSG9yaXpvbnRhbChzdWJqZWN0LnJpZ2h0KTtcbiAgICBjb25zdCBpc1BhcnRpYWxseUNvbnRhaW5lZCA9IGlzUGFydGlhbGx5VmlzaWJsZVZlcnRpY2FsbHkgJiYgaXNQYXJ0aWFsbHlWaXNpYmxlSG9yaXpvbnRhbGx5O1xuICAgIGlmIChpc1BhcnRpYWxseUNvbnRhaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGlzQmlnZ2VyVmVydGljYWxseSA9IHN1YmplY3QudG9wIDwgZnJhbWUudG9wICYmIHN1YmplY3QuYm90dG9tID4gZnJhbWUuYm90dG9tO1xuICAgIGNvbnN0IGlzQmlnZ2VySG9yaXpvbnRhbGx5ID0gc3ViamVjdC5sZWZ0IDwgZnJhbWUubGVmdCAmJiBzdWJqZWN0LnJpZ2h0ID4gZnJhbWUucmlnaHQ7XG4gICAgY29uc3QgaXNUYXJnZXRCaWdnZXJUaGFuRnJhbWUgPSBpc0JpZ2dlclZlcnRpY2FsbHkgJiYgaXNCaWdnZXJIb3Jpem9udGFsbHk7XG4gICAgaWYgKGlzVGFyZ2V0QmlnZ2VyVGhhbkZyYW1lKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgaXNUYXJnZXRCaWdnZXJPbk9uZUF4aXMgPSBpc0JpZ2dlclZlcnRpY2FsbHkgJiYgaXNQYXJ0aWFsbHlWaXNpYmxlSG9yaXpvbnRhbGx5IHx8IGlzQmlnZ2VySG9yaXpvbnRhbGx5ICYmIGlzUGFydGlhbGx5VmlzaWJsZVZlcnRpY2FsbHk7XG4gICAgcmV0dXJuIGlzVGFyZ2V0QmlnZ2VyT25PbmVBeGlzO1xuICB9O1xufSk7XG5cbnZhciBpc1RvdGFsbHlWaXNpYmxlVGhyb3VnaEZyYW1lID0gKGZyYW1lID0+IHtcbiAgY29uc3QgaXNXaXRoaW5WZXJ0aWNhbCA9IGlzV2l0aGluKGZyYW1lLnRvcCwgZnJhbWUuYm90dG9tKTtcbiAgY29uc3QgaXNXaXRoaW5Ib3Jpem9udGFsID0gaXNXaXRoaW4oZnJhbWUubGVmdCwgZnJhbWUucmlnaHQpO1xuICByZXR1cm4gc3ViamVjdCA9PiB7XG4gICAgY29uc3QgaXNDb250YWluZWQgPSBpc1dpdGhpblZlcnRpY2FsKHN1YmplY3QudG9wKSAmJiBpc1dpdGhpblZlcnRpY2FsKHN1YmplY3QuYm90dG9tKSAmJiBpc1dpdGhpbkhvcml6b250YWwoc3ViamVjdC5sZWZ0KSAmJiBpc1dpdGhpbkhvcml6b250YWwoc3ViamVjdC5yaWdodCk7XG4gICAgcmV0dXJuIGlzQ29udGFpbmVkO1xuICB9O1xufSk7XG5cbmNvbnN0IHZlcnRpY2FsID0ge1xuICBkaXJlY3Rpb246ICd2ZXJ0aWNhbCcsXG4gIGxpbmU6ICd5JyxcbiAgY3Jvc3NBeGlzTGluZTogJ3gnLFxuICBzdGFydDogJ3RvcCcsXG4gIGVuZDogJ2JvdHRvbScsXG4gIHNpemU6ICdoZWlnaHQnLFxuICBjcm9zc0F4aXNTdGFydDogJ2xlZnQnLFxuICBjcm9zc0F4aXNFbmQ6ICdyaWdodCcsXG4gIGNyb3NzQXhpc1NpemU6ICd3aWR0aCdcbn07XG5jb25zdCBob3Jpem9udGFsID0ge1xuICBkaXJlY3Rpb246ICdob3Jpem9udGFsJyxcbiAgbGluZTogJ3gnLFxuICBjcm9zc0F4aXNMaW5lOiAneScsXG4gIHN0YXJ0OiAnbGVmdCcsXG4gIGVuZDogJ3JpZ2h0JyxcbiAgc2l6ZTogJ3dpZHRoJyxcbiAgY3Jvc3NBeGlzU3RhcnQ6ICd0b3AnLFxuICBjcm9zc0F4aXNFbmQ6ICdib3R0b20nLFxuICBjcm9zc0F4aXNTaXplOiAnaGVpZ2h0J1xufTtcblxudmFyIGlzVG90YWxseVZpc2libGVUaHJvdWdoRnJhbWVPbkF4aXMgPSAoYXhpcyA9PiBmcmFtZSA9PiB7XG4gIGNvbnN0IGlzV2l0aGluVmVydGljYWwgPSBpc1dpdGhpbihmcmFtZS50b3AsIGZyYW1lLmJvdHRvbSk7XG4gIGNvbnN0IGlzV2l0aGluSG9yaXpvbnRhbCA9IGlzV2l0aGluKGZyYW1lLmxlZnQsIGZyYW1lLnJpZ2h0KTtcbiAgcmV0dXJuIHN1YmplY3QgPT4ge1xuICAgIGlmIChheGlzID09PSB2ZXJ0aWNhbCkge1xuICAgICAgcmV0dXJuIGlzV2l0aGluVmVydGljYWwoc3ViamVjdC50b3ApICYmIGlzV2l0aGluVmVydGljYWwoc3ViamVjdC5ib3R0b20pO1xuICAgIH1cbiAgICByZXR1cm4gaXNXaXRoaW5Ib3Jpem9udGFsKHN1YmplY3QubGVmdCkgJiYgaXNXaXRoaW5Ib3Jpem9udGFsKHN1YmplY3QucmlnaHQpO1xuICB9O1xufSk7XG5cbmNvbnN0IGdldERyb3BwYWJsZURpc3BsYWNlZCA9ICh0YXJnZXQsIGRlc3RpbmF0aW9uKSA9PiB7XG4gIGNvbnN0IGRpc3BsYWNlbWVudCA9IGRlc3RpbmF0aW9uLmZyYW1lID8gZGVzdGluYXRpb24uZnJhbWUuc2Nyb2xsLmRpZmYuZGlzcGxhY2VtZW50IDogb3JpZ2luO1xuICByZXR1cm4gb2Zmc2V0QnlQb3NpdGlvbih0YXJnZXQsIGRpc3BsYWNlbWVudCk7XG59O1xuY29uc3QgaXNWaXNpYmxlSW5Ecm9wcGFibGUgPSAodGFyZ2V0LCBkZXN0aW5hdGlvbiwgaXNWaXNpYmxlVGhyb3VnaEZyYW1lRm4pID0+IHtcbiAgaWYgKCFkZXN0aW5hdGlvbi5zdWJqZWN0LmFjdGl2ZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNWaXNpYmxlVGhyb3VnaEZyYW1lRm4oZGVzdGluYXRpb24uc3ViamVjdC5hY3RpdmUpKHRhcmdldCk7XG59O1xuY29uc3QgaXNWaXNpYmxlSW5WaWV3cG9ydCA9ICh0YXJnZXQsIHZpZXdwb3J0LCBpc1Zpc2libGVUaHJvdWdoRnJhbWVGbikgPT4gaXNWaXNpYmxlVGhyb3VnaEZyYW1lRm4odmlld3BvcnQpKHRhcmdldCk7XG5jb25zdCBpc1Zpc2libGUkMSA9ICh7XG4gIHRhcmdldDogdG9CZURpc3BsYWNlZCxcbiAgZGVzdGluYXRpb24sXG4gIHZpZXdwb3J0LFxuICB3aXRoRHJvcHBhYmxlRGlzcGxhY2VtZW50LFxuICBpc1Zpc2libGVUaHJvdWdoRnJhbWVGblxufSkgPT4ge1xuICBjb25zdCBkaXNwbGFjZWRUYXJnZXQgPSB3aXRoRHJvcHBhYmxlRGlzcGxhY2VtZW50ID8gZ2V0RHJvcHBhYmxlRGlzcGxhY2VkKHRvQmVEaXNwbGFjZWQsIGRlc3RpbmF0aW9uKSA6IHRvQmVEaXNwbGFjZWQ7XG4gIHJldHVybiBpc1Zpc2libGVJbkRyb3BwYWJsZShkaXNwbGFjZWRUYXJnZXQsIGRlc3RpbmF0aW9uLCBpc1Zpc2libGVUaHJvdWdoRnJhbWVGbikgJiYgaXNWaXNpYmxlSW5WaWV3cG9ydChkaXNwbGFjZWRUYXJnZXQsIHZpZXdwb3J0LCBpc1Zpc2libGVUaHJvdWdoRnJhbWVGbik7XG59O1xuY29uc3QgaXNQYXJ0aWFsbHlWaXNpYmxlID0gYXJncyA9PiBpc1Zpc2libGUkMSh7XG4gIC4uLmFyZ3MsXG4gIGlzVmlzaWJsZVRocm91Z2hGcmFtZUZuOiBpc1BhcnRpYWxseVZpc2libGVUaHJvdWdoRnJhbWVcbn0pO1xuY29uc3QgaXNUb3RhbGx5VmlzaWJsZSA9IGFyZ3MgPT4gaXNWaXNpYmxlJDEoe1xuICAuLi5hcmdzLFxuICBpc1Zpc2libGVUaHJvdWdoRnJhbWVGbjogaXNUb3RhbGx5VmlzaWJsZVRocm91Z2hGcmFtZVxufSk7XG5jb25zdCBpc1RvdGFsbHlWaXNpYmxlT25BeGlzID0gYXJncyA9PiBpc1Zpc2libGUkMSh7XG4gIC4uLmFyZ3MsXG4gIGlzVmlzaWJsZVRocm91Z2hGcmFtZUZuOiBpc1RvdGFsbHlWaXNpYmxlVGhyb3VnaEZyYW1lT25BeGlzKGFyZ3MuZGVzdGluYXRpb24uYXhpcylcbn0pO1xuXG5jb25zdCBnZXRTaG91bGRBbmltYXRlID0gKGlkLCBsYXN0LCBmb3JjZVNob3VsZEFuaW1hdGUpID0+IHtcbiAgaWYgKHR5cGVvZiBmb3JjZVNob3VsZEFuaW1hdGUgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBmb3JjZVNob3VsZEFuaW1hdGU7XG4gIH1cbiAgaWYgKCFsYXN0KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3Qge1xuICAgIGludmlzaWJsZSxcbiAgICB2aXNpYmxlXG4gIH0gPSBsYXN0O1xuICBpZiAoaW52aXNpYmxlW2lkXSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBwcmV2aW91cyA9IHZpc2libGVbaWRdO1xuICByZXR1cm4gcHJldmlvdXMgPyBwcmV2aW91cy5zaG91bGRBbmltYXRlIDogdHJ1ZTtcbn07XG5mdW5jdGlvbiBnZXRUYXJnZXQoZHJhZ2dhYmxlLCBkaXNwbGFjZWRCeSkge1xuICBjb25zdCBtYXJnaW5Cb3ggPSBkcmFnZ2FibGUucGFnZS5tYXJnaW5Cb3g7XG4gIGNvbnN0IGV4cGFuZEJ5ID0ge1xuICAgIHRvcDogZGlzcGxhY2VkQnkucG9pbnQueSxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogZGlzcGxhY2VkQnkucG9pbnQueFxuICB9O1xuICByZXR1cm4gZ2V0UmVjdChleHBhbmQobWFyZ2luQm94LCBleHBhbmRCeSkpO1xufVxuZnVuY3Rpb24gZ2V0RGlzcGxhY2VtZW50R3JvdXBzKHtcbiAgYWZ0ZXJEcmFnZ2luZyxcbiAgZGVzdGluYXRpb24sXG4gIGRpc3BsYWNlZEJ5LFxuICB2aWV3cG9ydCxcbiAgZm9yY2VTaG91bGRBbmltYXRlLFxuICBsYXN0XG59KSB7XG4gIHJldHVybiBhZnRlckRyYWdnaW5nLnJlZHVjZShmdW5jdGlvbiBwcm9jZXNzKGdyb3VwcywgZHJhZ2dhYmxlKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGRyYWdnYWJsZSwgZGlzcGxhY2VkQnkpO1xuICAgIGNvbnN0IGlkID0gZHJhZ2dhYmxlLmRlc2NyaXB0b3IuaWQ7XG4gICAgZ3JvdXBzLmFsbC5wdXNoKGlkKTtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBpc1BhcnRpYWxseVZpc2libGUoe1xuICAgICAgdGFyZ2V0LFxuICAgICAgZGVzdGluYXRpb24sXG4gICAgICB2aWV3cG9ydCxcbiAgICAgIHdpdGhEcm9wcGFibGVEaXNwbGFjZW1lbnQ6IHRydWVcbiAgICB9KTtcbiAgICBpZiAoIWlzVmlzaWJsZSkge1xuICAgICAgZ3JvdXBzLmludmlzaWJsZVtkcmFnZ2FibGUuZGVzY3JpcHRvci5pZF0gPSB0cnVlO1xuICAgICAgcmV0dXJuIGdyb3VwcztcbiAgICB9XG4gICAgY29uc3Qgc2hvdWxkQW5pbWF0ZSA9IGdldFNob3VsZEFuaW1hdGUoaWQsIGxhc3QsIGZvcmNlU2hvdWxkQW5pbWF0ZSk7XG4gICAgY29uc3QgZGlzcGxhY2VtZW50ID0ge1xuICAgICAgZHJhZ2dhYmxlSWQ6IGlkLFxuICAgICAgc2hvdWxkQW5pbWF0ZVxuICAgIH07XG4gICAgZ3JvdXBzLnZpc2libGVbaWRdID0gZGlzcGxhY2VtZW50O1xuICAgIHJldHVybiBncm91cHM7XG4gIH0sIHtcbiAgICBhbGw6IFtdLFxuICAgIHZpc2libGU6IHt9LFxuICAgIGludmlzaWJsZToge31cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEluZGV4T2ZMYXN0SXRlbShkcmFnZ2FibGVzLCBvcHRpb25zKSB7XG4gIGlmICghZHJhZ2dhYmxlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBjb25zdCBpbmRleE9mTGFzdEl0ZW0gPSBkcmFnZ2FibGVzW2RyYWdnYWJsZXMubGVuZ3RoIC0gMV0uZGVzY3JpcHRvci5pbmRleDtcbiAgcmV0dXJuIG9wdGlvbnMuaW5Ib21lTGlzdCA/IGluZGV4T2ZMYXN0SXRlbSA6IGluZGV4T2ZMYXN0SXRlbSArIDE7XG59XG5mdW5jdGlvbiBnb0F0RW5kKHtcbiAgaW5zaWRlRGVzdGluYXRpb24sXG4gIGluSG9tZUxpc3QsXG4gIGRpc3BsYWNlZEJ5LFxuICBkZXN0aW5hdGlvblxufSkge1xuICBjb25zdCBuZXdJbmRleCA9IGdldEluZGV4T2ZMYXN0SXRlbShpbnNpZGVEZXN0aW5hdGlvbiwge1xuICAgIGluSG9tZUxpc3RcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgZGlzcGxhY2VkOiBlbXB0eUdyb3VwcyxcbiAgICBkaXNwbGFjZWRCeSxcbiAgICBhdDoge1xuICAgICAgdHlwZTogJ1JFT1JERVInLFxuICAgICAgZGVzdGluYXRpb246IHtcbiAgICAgICAgZHJvcHBhYmxlSWQ6IGRlc3RpbmF0aW9uLmRlc2NyaXB0b3IuaWQsXG4gICAgICAgIGluZGV4OiBuZXdJbmRleFxuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbmZ1bmN0aW9uIGNhbGN1bGF0ZVJlb3JkZXJJbXBhY3Qoe1xuICBkcmFnZ2FibGUsXG4gIGluc2lkZURlc3RpbmF0aW9uLFxuICBkZXN0aW5hdGlvbixcbiAgdmlld3BvcnQsXG4gIGRpc3BsYWNlZEJ5LFxuICBsYXN0LFxuICBpbmRleCxcbiAgZm9yY2VTaG91bGRBbmltYXRlXG59KSB7XG4gIGNvbnN0IGluSG9tZUxpc3QgPSBpc0hvbWVPZihkcmFnZ2FibGUsIGRlc3RpbmF0aW9uKTtcbiAgaWYgKGluZGV4ID09IG51bGwpIHtcbiAgICByZXR1cm4gZ29BdEVuZCh7XG4gICAgICBpbnNpZGVEZXN0aW5hdGlvbixcbiAgICAgIGluSG9tZUxpc3QsXG4gICAgICBkaXNwbGFjZWRCeSxcbiAgICAgIGRlc3RpbmF0aW9uXG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbWF0Y2ggPSBpbnNpZGVEZXN0aW5hdGlvbi5maW5kKGl0ZW0gPT4gaXRlbS5kZXNjcmlwdG9yLmluZGV4ID09PSBpbmRleCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gZ29BdEVuZCh7XG4gICAgICBpbnNpZGVEZXN0aW5hdGlvbixcbiAgICAgIGluSG9tZUxpc3QsXG4gICAgICBkaXNwbGFjZWRCeSxcbiAgICAgIGRlc3RpbmF0aW9uXG4gICAgfSk7XG4gIH1cbiAgY29uc3Qgd2l0aG91dERyYWdnaW5nID0gcmVtb3ZlRHJhZ2dhYmxlRnJvbUxpc3QoZHJhZ2dhYmxlLCBpbnNpZGVEZXN0aW5hdGlvbik7XG4gIGNvbnN0IHNsaWNlRnJvbSA9IGluc2lkZURlc3RpbmF0aW9uLmluZGV4T2YobWF0Y2gpO1xuICBjb25zdCBpbXBhY3RlZCA9IHdpdGhvdXREcmFnZ2luZy5zbGljZShzbGljZUZyb20pO1xuICBjb25zdCBkaXNwbGFjZWQgPSBnZXREaXNwbGFjZW1lbnRHcm91cHMoe1xuICAgIGFmdGVyRHJhZ2dpbmc6IGltcGFjdGVkLFxuICAgIGRlc3RpbmF0aW9uLFxuICAgIGRpc3BsYWNlZEJ5LFxuICAgIGxhc3QsXG4gICAgdmlld3BvcnQ6IHZpZXdwb3J0LmZyYW1lLFxuICAgIGZvcmNlU2hvdWxkQW5pbWF0ZVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBkaXNwbGFjZWQsXG4gICAgZGlzcGxhY2VkQnksXG4gICAgYXQ6IHtcbiAgICAgIHR5cGU6ICdSRU9SREVSJyxcbiAgICAgIGRlc3RpbmF0aW9uOiB7XG4gICAgICAgIGRyb3BwYWJsZUlkOiBkZXN0aW5hdGlvbi5kZXNjcmlwdG9yLmlkLFxuICAgICAgICBpbmRleFxuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZGlkU3RhcnRBZnRlckNyaXRpY2FsKGRyYWdnYWJsZUlkLCBhZnRlckNyaXRpY2FsKSB7XG4gIHJldHVybiBCb29sZWFuKGFmdGVyQ3JpdGljYWwuZWZmZWN0ZWRbZHJhZ2dhYmxlSWRdKTtcbn1cblxudmFyIGZyb21Db21iaW5lID0gKCh7XG4gIGlzTW92aW5nRm9yd2FyZCxcbiAgZGVzdGluYXRpb24sXG4gIGRyYWdnYWJsZXMsXG4gIGNvbWJpbmUsXG4gIGFmdGVyQ3JpdGljYWxcbn0pID0+IHtcbiAgaWYgKCFkZXN0aW5hdGlvbi5pc0NvbWJpbmVFbmFibGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgY29tYmluZUlkID0gY29tYmluZS5kcmFnZ2FibGVJZDtcbiAgY29uc3QgY29tYmluZVdpdGggPSBkcmFnZ2FibGVzW2NvbWJpbmVJZF07XG4gIGNvbnN0IGNvbWJpbmVXaXRoSW5kZXggPSBjb21iaW5lV2l0aC5kZXNjcmlwdG9yLmluZGV4O1xuICBjb25zdCBkaWRDb21iaW5lV2l0aFN0YXJ0QWZ0ZXJDcml0aWNhbCA9IGRpZFN0YXJ0QWZ0ZXJDcml0aWNhbChjb21iaW5lSWQsIGFmdGVyQ3JpdGljYWwpO1xuICBpZiAoZGlkQ29tYmluZVdpdGhTdGFydEFmdGVyQ3JpdGljYWwpIHtcbiAgICBpZiAoaXNNb3ZpbmdGb3J3YXJkKSB7XG4gICAgICByZXR1cm4gY29tYmluZVdpdGhJbmRleDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbWJpbmVXaXRoSW5kZXggLSAxO1xuICB9XG4gIGlmIChpc01vdmluZ0ZvcndhcmQpIHtcbiAgICByZXR1cm4gY29tYmluZVdpdGhJbmRleCArIDE7XG4gIH1cbiAgcmV0dXJuIGNvbWJpbmVXaXRoSW5kZXg7XG59KTtcblxudmFyIGZyb21SZW9yZGVyID0gKCh7XG4gIGlzTW92aW5nRm9yd2FyZCxcbiAgaXNJbkhvbWVMaXN0LFxuICBpbnNpZGVEZXN0aW5hdGlvbixcbiAgbG9jYXRpb25cbn0pID0+IHtcbiAgaWYgKCFpbnNpZGVEZXN0aW5hdGlvbi5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBjdXJyZW50SW5kZXggPSBsb2NhdGlvbi5pbmRleDtcbiAgY29uc3QgcHJvcG9zZWRJbmRleCA9IGlzTW92aW5nRm9yd2FyZCA/IGN1cnJlbnRJbmRleCArIDEgOiBjdXJyZW50SW5kZXggLSAxO1xuICBjb25zdCBmaXJzdEluZGV4ID0gaW5zaWRlRGVzdGluYXRpb25bMF0uZGVzY3JpcHRvci5pbmRleDtcbiAgY29uc3QgbGFzdEluZGV4ID0gaW5zaWRlRGVzdGluYXRpb25baW5zaWRlRGVzdGluYXRpb24ubGVuZ3RoIC0gMV0uZGVzY3JpcHRvci5pbmRleDtcbiAgY29uc3QgdXBwZXJCb3VuZCA9IGlzSW5Ib21lTGlzdCA/IGxhc3RJbmRleCA6IGxhc3RJbmRleCArIDE7XG4gIGlmIChwcm9wb3NlZEluZGV4IDwgZmlyc3RJbmRleCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChwcm9wb3NlZEluZGV4ID4gdXBwZXJCb3VuZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBwcm9wb3NlZEluZGV4O1xufSk7XG5cbnZhciBtb3ZlVG9OZXh0SW5kZXggPSAoKHtcbiAgaXNNb3ZpbmdGb3J3YXJkLFxuICBpc0luSG9tZUxpc3QsXG4gIGRyYWdnYWJsZSxcbiAgZHJhZ2dhYmxlcyxcbiAgZGVzdGluYXRpb24sXG4gIGluc2lkZURlc3RpbmF0aW9uLFxuICBwcmV2aW91c0ltcGFjdCxcbiAgdmlld3BvcnQsXG4gIGFmdGVyQ3JpdGljYWxcbn0pID0+IHtcbiAgY29uc3Qgd2FzQXQgPSBwcmV2aW91c0ltcGFjdC5hdDtcbiAgIXdhc0F0ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IG1vdmUgaW4gZGlyZWN0aW9uIHdpdGhvdXQgcHJldmlvdXMgaW1wYWN0IGxvY2F0aW9uJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBpZiAod2FzQXQudHlwZSA9PT0gJ1JFT1JERVInKSB7XG4gICAgY29uc3QgbmV3SW5kZXggPSBmcm9tUmVvcmRlcih7XG4gICAgICBpc01vdmluZ0ZvcndhcmQsXG4gICAgICBpc0luSG9tZUxpc3QsXG4gICAgICBsb2NhdGlvbjogd2FzQXQuZGVzdGluYXRpb24sXG4gICAgICBpbnNpZGVEZXN0aW5hdGlvblxuICAgIH0pO1xuICAgIGlmIChuZXdJbmRleCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNhbGN1bGF0ZVJlb3JkZXJJbXBhY3Qoe1xuICAgICAgZHJhZ2dhYmxlLFxuICAgICAgaW5zaWRlRGVzdGluYXRpb24sXG4gICAgICBkZXN0aW5hdGlvbixcbiAgICAgIHZpZXdwb3J0LFxuICAgICAgbGFzdDogcHJldmlvdXNJbXBhY3QuZGlzcGxhY2VkLFxuICAgICAgZGlzcGxhY2VkQnk6IHByZXZpb3VzSW1wYWN0LmRpc3BsYWNlZEJ5LFxuICAgICAgaW5kZXg6IG5ld0luZGV4XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbmV3SW5kZXggPSBmcm9tQ29tYmluZSh7XG4gICAgaXNNb3ZpbmdGb3J3YXJkLFxuICAgIGRlc3RpbmF0aW9uLFxuICAgIGRpc3BsYWNlZDogcHJldmlvdXNJbXBhY3QuZGlzcGxhY2VkLFxuICAgIGRyYWdnYWJsZXMsXG4gICAgY29tYmluZTogd2FzQXQuY29tYmluZSxcbiAgICBhZnRlckNyaXRpY2FsXG4gIH0pO1xuICBpZiAobmV3SW5kZXggPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBjYWxjdWxhdGVSZW9yZGVySW1wYWN0KHtcbiAgICBkcmFnZ2FibGUsXG4gICAgaW5zaWRlRGVzdGluYXRpb24sXG4gICAgZGVzdGluYXRpb24sXG4gICAgdmlld3BvcnQsXG4gICAgbGFzdDogcHJldmlvdXNJbXBhY3QuZGlzcGxhY2VkLFxuICAgIGRpc3BsYWNlZEJ5OiBwcmV2aW91c0ltcGFjdC5kaXNwbGFjZWRCeSxcbiAgICBpbmRleDogbmV3SW5kZXhcbiAgfSk7XG59KTtcblxudmFyIGdldENvbWJpbmVkSXRlbURpc3BsYWNlbWVudCA9ICgoe1xuICBkaXNwbGFjZWQsXG4gIGFmdGVyQ3JpdGljYWwsXG4gIGNvbWJpbmVXaXRoLFxuICBkaXNwbGFjZWRCeVxufSkgPT4ge1xuICBjb25zdCBpc0Rpc3BsYWNlZCA9IEJvb2xlYW4oZGlzcGxhY2VkLnZpc2libGVbY29tYmluZVdpdGhdIHx8IGRpc3BsYWNlZC5pbnZpc2libGVbY29tYmluZVdpdGhdKTtcbiAgaWYgKGRpZFN0YXJ0QWZ0ZXJDcml0aWNhbChjb21iaW5lV2l0aCwgYWZ0ZXJDcml0aWNhbCkpIHtcbiAgICByZXR1cm4gaXNEaXNwbGFjZWQgPyBvcmlnaW4gOiBuZWdhdGUoZGlzcGxhY2VkQnkucG9pbnQpO1xuICB9XG4gIHJldHVybiBpc0Rpc3BsYWNlZCA/IGRpc3BsYWNlZEJ5LnBvaW50IDogb3JpZ2luO1xufSk7XG5cbnZhciB3aGVuQ29tYmluaW5nID0gKCh7XG4gIGFmdGVyQ3JpdGljYWwsXG4gIGltcGFjdCxcbiAgZHJhZ2dhYmxlc1xufSkgPT4ge1xuICBjb25zdCBjb21iaW5lID0gdHJ5R2V0Q29tYmluZShpbXBhY3QpO1xuICAhY29tYmluZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBjb25zdCBjb21iaW5lV2l0aCA9IGNvbWJpbmUuZHJhZ2dhYmxlSWQ7XG4gIGNvbnN0IGNlbnRlciA9IGRyYWdnYWJsZXNbY29tYmluZVdpdGhdLnBhZ2UuYm9yZGVyQm94LmNlbnRlcjtcbiAgY29uc3QgZGlzcGxhY2VCeSA9IGdldENvbWJpbmVkSXRlbURpc3BsYWNlbWVudCh7XG4gICAgZGlzcGxhY2VkOiBpbXBhY3QuZGlzcGxhY2VkLFxuICAgIGFmdGVyQ3JpdGljYWwsXG4gICAgY29tYmluZVdpdGgsXG4gICAgZGlzcGxhY2VkQnk6IGltcGFjdC5kaXNwbGFjZWRCeVxuICB9KTtcbiAgcmV0dXJuIGFkZChjZW50ZXIsIGRpc3BsYWNlQnkpO1xufSk7XG5cbmNvbnN0IGRpc3RhbmNlRnJvbVN0YXJ0VG9Cb3JkZXJCb3hDZW50ZXIgPSAoYXhpcywgYm94KSA9PiBib3gubWFyZ2luW2F4aXMuc3RhcnRdICsgYm94LmJvcmRlckJveFtheGlzLnNpemVdIC8gMjtcbmNvbnN0IGRpc3RhbmNlRnJvbUVuZFRvQm9yZGVyQm94Q2VudGVyID0gKGF4aXMsIGJveCkgPT4gYm94Lm1hcmdpbltheGlzLmVuZF0gKyBib3guYm9yZGVyQm94W2F4aXMuc2l6ZV0gLyAyO1xuY29uc3QgZ2V0Q3Jvc3NBeGlzQm9yZGVyQm94Q2VudGVyID0gKGF4aXMsIHRhcmdldCwgaXNNb3ZpbmcpID0+IHRhcmdldFtheGlzLmNyb3NzQXhpc1N0YXJ0XSArIGlzTW92aW5nLm1hcmdpbltheGlzLmNyb3NzQXhpc1N0YXJ0XSArIGlzTW92aW5nLmJvcmRlckJveFtheGlzLmNyb3NzQXhpc1NpemVdIC8gMjtcbmNvbnN0IGdvQWZ0ZXIgPSAoe1xuICBheGlzLFxuICBtb3ZlUmVsYXRpdmVUbyxcbiAgaXNNb3Zpbmdcbn0pID0+IHBhdGNoKGF4aXMubGluZSwgbW92ZVJlbGF0aXZlVG8ubWFyZ2luQm94W2F4aXMuZW5kXSArIGRpc3RhbmNlRnJvbVN0YXJ0VG9Cb3JkZXJCb3hDZW50ZXIoYXhpcywgaXNNb3ZpbmcpLCBnZXRDcm9zc0F4aXNCb3JkZXJCb3hDZW50ZXIoYXhpcywgbW92ZVJlbGF0aXZlVG8ubWFyZ2luQm94LCBpc01vdmluZykpO1xuY29uc3QgZ29CZWZvcmUgPSAoe1xuICBheGlzLFxuICBtb3ZlUmVsYXRpdmVUbyxcbiAgaXNNb3Zpbmdcbn0pID0+IHBhdGNoKGF4aXMubGluZSwgbW92ZVJlbGF0aXZlVG8ubWFyZ2luQm94W2F4aXMuc3RhcnRdIC0gZGlzdGFuY2VGcm9tRW5kVG9Cb3JkZXJCb3hDZW50ZXIoYXhpcywgaXNNb3ZpbmcpLCBnZXRDcm9zc0F4aXNCb3JkZXJCb3hDZW50ZXIoYXhpcywgbW92ZVJlbGF0aXZlVG8ubWFyZ2luQm94LCBpc01vdmluZykpO1xuY29uc3QgZ29JbnRvU3RhcnQgPSAoe1xuICBheGlzLFxuICBtb3ZlSW50byxcbiAgaXNNb3Zpbmdcbn0pID0+IHBhdGNoKGF4aXMubGluZSwgbW92ZUludG8uY29udGVudEJveFtheGlzLnN0YXJ0XSArIGRpc3RhbmNlRnJvbVN0YXJ0VG9Cb3JkZXJCb3hDZW50ZXIoYXhpcywgaXNNb3ZpbmcpLCBnZXRDcm9zc0F4aXNCb3JkZXJCb3hDZW50ZXIoYXhpcywgbW92ZUludG8uY29udGVudEJveCwgaXNNb3ZpbmcpKTtcblxudmFyIHdoZW5SZW9yZGVyaW5nID0gKCh7XG4gIGltcGFjdCxcbiAgZHJhZ2dhYmxlLFxuICBkcmFnZ2FibGVzLFxuICBkcm9wcGFibGUsXG4gIGFmdGVyQ3JpdGljYWxcbn0pID0+IHtcbiAgY29uc3QgaW5zaWRlRGVzdGluYXRpb24gPSBnZXREcmFnZ2FibGVzSW5zaWRlRHJvcHBhYmxlKGRyb3BwYWJsZS5kZXNjcmlwdG9yLmlkLCBkcmFnZ2FibGVzKTtcbiAgY29uc3QgZHJhZ2dhYmxlUGFnZSA9IGRyYWdnYWJsZS5wYWdlO1xuICBjb25zdCBheGlzID0gZHJvcHBhYmxlLmF4aXM7XG4gIGlmICghaW5zaWRlRGVzdGluYXRpb24ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGdvSW50b1N0YXJ0KHtcbiAgICAgIGF4aXMsXG4gICAgICBtb3ZlSW50bzogZHJvcHBhYmxlLnBhZ2UsXG4gICAgICBpc01vdmluZzogZHJhZ2dhYmxlUGFnZVxuICAgIH0pO1xuICB9XG4gIGNvbnN0IHtcbiAgICBkaXNwbGFjZWQsXG4gICAgZGlzcGxhY2VkQnlcbiAgfSA9IGltcGFjdDtcbiAgY29uc3QgY2xvc2VzdEFmdGVyID0gZGlzcGxhY2VkLmFsbFswXTtcbiAgaWYgKGNsb3Nlc3RBZnRlcikge1xuICAgIGNvbnN0IGNsb3Nlc3QgPSBkcmFnZ2FibGVzW2Nsb3Nlc3RBZnRlcl07XG4gICAgaWYgKGRpZFN0YXJ0QWZ0ZXJDcml0aWNhbChjbG9zZXN0QWZ0ZXIsIGFmdGVyQ3JpdGljYWwpKSB7XG4gICAgICByZXR1cm4gZ29CZWZvcmUoe1xuICAgICAgICBheGlzLFxuICAgICAgICBtb3ZlUmVsYXRpdmVUbzogY2xvc2VzdC5wYWdlLFxuICAgICAgICBpc01vdmluZzogZHJhZ2dhYmxlUGFnZVxuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IHdpdGhEaXNwbGFjZW1lbnQgPSBvZmZzZXQoY2xvc2VzdC5wYWdlLCBkaXNwbGFjZWRCeS5wb2ludCk7XG4gICAgcmV0dXJuIGdvQmVmb3JlKHtcbiAgICAgIGF4aXMsXG4gICAgICBtb3ZlUmVsYXRpdmVUbzogd2l0aERpc3BsYWNlbWVudCxcbiAgICAgIGlzTW92aW5nOiBkcmFnZ2FibGVQYWdlXG4gICAgfSk7XG4gIH1cbiAgY29uc3QgbGFzdCA9IGluc2lkZURlc3RpbmF0aW9uW2luc2lkZURlc3RpbmF0aW9uLmxlbmd0aCAtIDFdO1xuICBpZiAobGFzdC5kZXNjcmlwdG9yLmlkID09PSBkcmFnZ2FibGUuZGVzY3JpcHRvci5pZCkge1xuICAgIHJldHVybiBkcmFnZ2FibGVQYWdlLmJvcmRlckJveC5jZW50ZXI7XG4gIH1cbiAgaWYgKGRpZFN0YXJ0QWZ0ZXJDcml0aWNhbChsYXN0LmRlc2NyaXB0b3IuaWQsIGFmdGVyQ3JpdGljYWwpKSB7XG4gICAgY29uc3QgcGFnZSA9IG9mZnNldChsYXN0LnBhZ2UsIG5lZ2F0ZShhZnRlckNyaXRpY2FsLmRpc3BsYWNlZEJ5LnBvaW50KSk7XG4gICAgcmV0dXJuIGdvQWZ0ZXIoe1xuICAgICAgYXhpcyxcbiAgICAgIG1vdmVSZWxhdGl2ZVRvOiBwYWdlLFxuICAgICAgaXNNb3Zpbmc6IGRyYWdnYWJsZVBhZ2VcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZ29BZnRlcih7XG4gICAgYXhpcyxcbiAgICBtb3ZlUmVsYXRpdmVUbzogbGFzdC5wYWdlLFxuICAgIGlzTW92aW5nOiBkcmFnZ2FibGVQYWdlXG4gIH0pO1xufSk7XG5cbnZhciB3aXRoRHJvcHBhYmxlRGlzcGxhY2VtZW50ID0gKChkcm9wcGFibGUsIHBvaW50KSA9PiB7XG4gIGNvbnN0IGZyYW1lID0gZHJvcHBhYmxlLmZyYW1lO1xuICBpZiAoIWZyYW1lKSB7XG4gICAgcmV0dXJuIHBvaW50O1xuICB9XG4gIHJldHVybiBhZGQocG9pbnQsIGZyYW1lLnNjcm9sbC5kaWZmLmRpc3BsYWNlbWVudCk7XG59KTtcblxuY29uc3QgZ2V0UmVzdWx0V2l0aG91dERyb3BwYWJsZURpc3BsYWNlbWVudCA9ICh7XG4gIGltcGFjdCxcbiAgZHJhZ2dhYmxlLFxuICBkcm9wcGFibGUsXG4gIGRyYWdnYWJsZXMsXG4gIGFmdGVyQ3JpdGljYWxcbn0pID0+IHtcbiAgY29uc3Qgb3JpZ2luYWwgPSBkcmFnZ2FibGUucGFnZS5ib3JkZXJCb3guY2VudGVyO1xuICBjb25zdCBhdCA9IGltcGFjdC5hdDtcbiAgaWYgKCFkcm9wcGFibGUpIHtcbiAgICByZXR1cm4gb3JpZ2luYWw7XG4gIH1cbiAgaWYgKCFhdCkge1xuICAgIHJldHVybiBvcmlnaW5hbDtcbiAgfVxuICBpZiAoYXQudHlwZSA9PT0gJ1JFT1JERVInKSB7XG4gICAgcmV0dXJuIHdoZW5SZW9yZGVyaW5nKHtcbiAgICAgIGltcGFjdCxcbiAgICAgIGRyYWdnYWJsZSxcbiAgICAgIGRyYWdnYWJsZXMsXG4gICAgICBkcm9wcGFibGUsXG4gICAgICBhZnRlckNyaXRpY2FsXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHdoZW5Db21iaW5pbmcoe1xuICAgIGltcGFjdCxcbiAgICBkcmFnZ2FibGVzLFxuICAgIGFmdGVyQ3JpdGljYWxcbiAgfSk7XG59O1xudmFyIGdldFBhZ2VCb3JkZXJCb3hDZW50ZXJGcm9tSW1wYWN0ID0gKGFyZ3MgPT4ge1xuICBjb25zdCB3aXRob3V0RGlzcGxhY2VtZW50ID0gZ2V0UmVzdWx0V2l0aG91dERyb3BwYWJsZURpc3BsYWNlbWVudChhcmdzKTtcbiAgY29uc3QgZHJvcHBhYmxlID0gYXJncy5kcm9wcGFibGU7XG4gIGNvbnN0IHdpdGhEaXNwbGFjZW1lbnQgPSBkcm9wcGFibGUgPyB3aXRoRHJvcHBhYmxlRGlzcGxhY2VtZW50KGRyb3BwYWJsZSwgd2l0aG91dERpc3BsYWNlbWVudCkgOiB3aXRob3V0RGlzcGxhY2VtZW50O1xuICByZXR1cm4gd2l0aERpc3BsYWNlbWVudDtcbn0pO1xuXG52YXIgc2Nyb2xsVmlld3BvcnQgPSAoKHZpZXdwb3J0LCBuZXdTY3JvbGwpID0+IHtcbiAgY29uc3QgZGlmZiA9IHN1YnRyYWN0KG5ld1Njcm9sbCwgdmlld3BvcnQuc2Nyb2xsLmluaXRpYWwpO1xuICBjb25zdCBkaXNwbGFjZW1lbnQgPSBuZWdhdGUoZGlmZik7XG4gIGNvbnN0IGZyYW1lID0gZ2V0UmVjdCh7XG4gICAgdG9wOiBuZXdTY3JvbGwueSxcbiAgICBib3R0b206IG5ld1Njcm9sbC55ICsgdmlld3BvcnQuZnJhbWUuaGVpZ2h0LFxuICAgIGxlZnQ6IG5ld1Njcm9sbC54LFxuICAgIHJpZ2h0OiBuZXdTY3JvbGwueCArIHZpZXdwb3J0LmZyYW1lLndpZHRoXG4gIH0pO1xuICBjb25zdCB1cGRhdGVkID0ge1xuICAgIGZyYW1lLFxuICAgIHNjcm9sbDoge1xuICAgICAgaW5pdGlhbDogdmlld3BvcnQuc2Nyb2xsLmluaXRpYWwsXG4gICAgICBtYXg6IHZpZXdwb3J0LnNjcm9sbC5tYXgsXG4gICAgICBjdXJyZW50OiBuZXdTY3JvbGwsXG4gICAgICBkaWZmOiB7XG4gICAgICAgIHZhbHVlOiBkaWZmLFxuICAgICAgICBkaXNwbGFjZW1lbnRcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVkO1xufSk7XG5cbmZ1bmN0aW9uIGdldERyYWdnYWJsZXMkMShpZHMsIGRyYWdnYWJsZXMpIHtcbiAgcmV0dXJuIGlkcy5tYXAoaWQgPT4gZHJhZ2dhYmxlc1tpZF0pO1xufVxuZnVuY3Rpb24gdHJ5R2V0VmlzaWJsZShpZCwgZ3JvdXBzKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZGlzcGxhY2VtZW50ID0gZ3JvdXBzW2ldLnZpc2libGVbaWRdO1xuICAgIGlmIChkaXNwbGFjZW1lbnQpIHtcbiAgICAgIHJldHVybiBkaXNwbGFjZW1lbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxudmFyIHNwZWN1bGF0aXZlbHlJbmNyZWFzZSA9ICgoe1xuICBpbXBhY3QsXG4gIHZpZXdwb3J0LFxuICBkZXN0aW5hdGlvbixcbiAgZHJhZ2dhYmxlcyxcbiAgbWF4U2Nyb2xsQ2hhbmdlXG59KSA9PiB7XG4gIGNvbnN0IHNjcm9sbGVkVmlld3BvcnQgPSBzY3JvbGxWaWV3cG9ydCh2aWV3cG9ydCwgYWRkKHZpZXdwb3J0LnNjcm9sbC5jdXJyZW50LCBtYXhTY3JvbGxDaGFuZ2UpKTtcbiAgY29uc3Qgc2Nyb2xsZWREcm9wcGFibGUgPSBkZXN0aW5hdGlvbi5mcmFtZSA/IHNjcm9sbERyb3BwYWJsZShkZXN0aW5hdGlvbiwgYWRkKGRlc3RpbmF0aW9uLmZyYW1lLnNjcm9sbC5jdXJyZW50LCBtYXhTY3JvbGxDaGFuZ2UpKSA6IGRlc3RpbmF0aW9uO1xuICBjb25zdCBsYXN0ID0gaW1wYWN0LmRpc3BsYWNlZDtcbiAgY29uc3Qgd2l0aFZpZXdwb3J0U2Nyb2xsID0gZ2V0RGlzcGxhY2VtZW50R3JvdXBzKHtcbiAgICBhZnRlckRyYWdnaW5nOiBnZXREcmFnZ2FibGVzJDEobGFzdC5hbGwsIGRyYWdnYWJsZXMpLFxuICAgIGRlc3RpbmF0aW9uLFxuICAgIGRpc3BsYWNlZEJ5OiBpbXBhY3QuZGlzcGxhY2VkQnksXG4gICAgdmlld3BvcnQ6IHNjcm9sbGVkVmlld3BvcnQuZnJhbWUsXG4gICAgbGFzdCxcbiAgICBmb3JjZVNob3VsZEFuaW1hdGU6IGZhbHNlXG4gIH0pO1xuICBjb25zdCB3aXRoRHJvcHBhYmxlU2Nyb2xsID0gZ2V0RGlzcGxhY2VtZW50R3JvdXBzKHtcbiAgICBhZnRlckRyYWdnaW5nOiBnZXREcmFnZ2FibGVzJDEobGFzdC5hbGwsIGRyYWdnYWJsZXMpLFxuICAgIGRlc3RpbmF0aW9uOiBzY3JvbGxlZERyb3BwYWJsZSxcbiAgICBkaXNwbGFjZWRCeTogaW1wYWN0LmRpc3BsYWNlZEJ5LFxuICAgIHZpZXdwb3J0OiB2aWV3cG9ydC5mcmFtZSxcbiAgICBsYXN0LFxuICAgIGZvcmNlU2hvdWxkQW5pbWF0ZTogZmFsc2VcbiAgfSk7XG4gIGNvbnN0IGludmlzaWJsZSA9IHt9O1xuICBjb25zdCB2aXNpYmxlID0ge307XG4gIGNvbnN0IGdyb3VwcyA9IFtsYXN0LCB3aXRoVmlld3BvcnRTY3JvbGwsIHdpdGhEcm9wcGFibGVTY3JvbGxdO1xuICBsYXN0LmFsbC5mb3JFYWNoKGlkID0+IHtcbiAgICBjb25zdCBkaXNwbGFjZW1lbnQgPSB0cnlHZXRWaXNpYmxlKGlkLCBncm91cHMpO1xuICAgIGlmIChkaXNwbGFjZW1lbnQpIHtcbiAgICAgIHZpc2libGVbaWRdID0gZGlzcGxhY2VtZW50O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbnZpc2libGVbaWRdID0gdHJ1ZTtcbiAgfSk7XG4gIGNvbnN0IG5ld0ltcGFjdCA9IHtcbiAgICAuLi5pbXBhY3QsXG4gICAgZGlzcGxhY2VkOiB7XG4gICAgICBhbGw6IGxhc3QuYWxsLFxuICAgICAgaW52aXNpYmxlLFxuICAgICAgdmlzaWJsZVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIG5ld0ltcGFjdDtcbn0pO1xuXG52YXIgd2l0aFZpZXdwb3J0RGlzcGxhY2VtZW50ID0gKCh2aWV3cG9ydCwgcG9pbnQpID0+IGFkZCh2aWV3cG9ydC5zY3JvbGwuZGlmZi5kaXNwbGFjZW1lbnQsIHBvaW50KSk7XG5cbnZhciBnZXRDbGllbnRGcm9tUGFnZUJvcmRlckJveENlbnRlciA9ICgoe1xuICBwYWdlQm9yZGVyQm94Q2VudGVyLFxuICBkcmFnZ2FibGUsXG4gIHZpZXdwb3J0XG59KSA9PiB7XG4gIGNvbnN0IHdpdGhvdXRQYWdlU2Nyb2xsQ2hhbmdlID0gd2l0aFZpZXdwb3J0RGlzcGxhY2VtZW50KHZpZXdwb3J0LCBwYWdlQm9yZGVyQm94Q2VudGVyKTtcbiAgY29uc3Qgb2Zmc2V0ID0gc3VidHJhY3Qod2l0aG91dFBhZ2VTY3JvbGxDaGFuZ2UsIGRyYWdnYWJsZS5wYWdlLmJvcmRlckJveC5jZW50ZXIpO1xuICByZXR1cm4gYWRkKGRyYWdnYWJsZS5jbGllbnQuYm9yZGVyQm94LmNlbnRlciwgb2Zmc2V0KTtcbn0pO1xuXG52YXIgaXNUb3RhbGx5VmlzaWJsZUluTmV3TG9jYXRpb24gPSAoKHtcbiAgZHJhZ2dhYmxlLFxuICBkZXN0aW5hdGlvbixcbiAgbmV3UGFnZUJvcmRlckJveENlbnRlcixcbiAgdmlld3BvcnQsXG4gIHdpdGhEcm9wcGFibGVEaXNwbGFjZW1lbnQsXG4gIG9ubHlPbk1haW5BeGlzID0gZmFsc2Vcbn0pID0+IHtcbiAgY29uc3QgY2hhbmdlTmVlZGVkID0gc3VidHJhY3QobmV3UGFnZUJvcmRlckJveENlbnRlciwgZHJhZ2dhYmxlLnBhZ2UuYm9yZGVyQm94LmNlbnRlcik7XG4gIGNvbnN0IHNoaWZ0ZWQgPSBvZmZzZXRCeVBvc2l0aW9uKGRyYWdnYWJsZS5wYWdlLmJvcmRlckJveCwgY2hhbmdlTmVlZGVkKTtcbiAgY29uc3QgYXJncyA9IHtcbiAgICB0YXJnZXQ6IHNoaWZ0ZWQsXG4gICAgZGVzdGluYXRpb24sXG4gICAgd2l0aERyb3BwYWJsZURpc3BsYWNlbWVudCxcbiAgICB2aWV3cG9ydFxuICB9O1xuICByZXR1cm4gb25seU9uTWFpbkF4aXMgPyBpc1RvdGFsbHlWaXNpYmxlT25BeGlzKGFyZ3MpIDogaXNUb3RhbGx5VmlzaWJsZShhcmdzKTtcbn0pO1xuXG52YXIgbW92ZVRvTmV4dFBsYWNlID0gKCh7XG4gIGlzTW92aW5nRm9yd2FyZCxcbiAgZHJhZ2dhYmxlLFxuICBkZXN0aW5hdGlvbixcbiAgZHJhZ2dhYmxlcyxcbiAgcHJldmlvdXNJbXBhY3QsXG4gIHZpZXdwb3J0LFxuICBwcmV2aW91c1BhZ2VCb3JkZXJCb3hDZW50ZXIsXG4gIHByZXZpb3VzQ2xpZW50U2VsZWN0aW9uLFxuICBhZnRlckNyaXRpY2FsXG59KSA9PiB7XG4gIGlmICghZGVzdGluYXRpb24uaXNFbmFibGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgaW5zaWRlRGVzdGluYXRpb24gPSBnZXREcmFnZ2FibGVzSW5zaWRlRHJvcHBhYmxlKGRlc3RpbmF0aW9uLmRlc2NyaXB0b3IuaWQsIGRyYWdnYWJsZXMpO1xuICBjb25zdCBpc0luSG9tZUxpc3QgPSBpc0hvbWVPZihkcmFnZ2FibGUsIGRlc3RpbmF0aW9uKTtcbiAgY29uc3QgaW1wYWN0ID0gbW92ZVRvTmV4dENvbWJpbmUoe1xuICAgIGlzTW92aW5nRm9yd2FyZCxcbiAgICBkcmFnZ2FibGUsXG4gICAgZGVzdGluYXRpb24sXG4gICAgaW5zaWRlRGVzdGluYXRpb24sXG4gICAgcHJldmlvdXNJbXBhY3RcbiAgfSkgfHwgbW92ZVRvTmV4dEluZGV4KHtcbiAgICBpc01vdmluZ0ZvcndhcmQsXG4gICAgaXNJbkhvbWVMaXN0LFxuICAgIGRyYWdnYWJsZSxcbiAgICBkcmFnZ2FibGVzLFxuICAgIGRlc3RpbmF0aW9uLFxuICAgIGluc2lkZURlc3RpbmF0aW9uLFxuICAgIHByZXZpb3VzSW1wYWN0LFxuICAgIHZpZXdwb3J0LFxuICAgIGFmdGVyQ3JpdGljYWxcbiAgfSk7XG4gIGlmICghaW1wYWN0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcGFnZUJvcmRlckJveENlbnRlciA9IGdldFBhZ2VCb3JkZXJCb3hDZW50ZXJGcm9tSW1wYWN0KHtcbiAgICBpbXBhY3QsXG4gICAgZHJhZ2dhYmxlLFxuICAgIGRyb3BwYWJsZTogZGVzdGluYXRpb24sXG4gICAgZHJhZ2dhYmxlcyxcbiAgICBhZnRlckNyaXRpY2FsXG4gIH0pO1xuICBjb25zdCBpc1Zpc2libGVJbk5ld0xvY2F0aW9uID0gaXNUb3RhbGx5VmlzaWJsZUluTmV3TG9jYXRpb24oe1xuICAgIGRyYWdnYWJsZSxcbiAgICBkZXN0aW5hdGlvbixcbiAgICBuZXdQYWdlQm9yZGVyQm94Q2VudGVyOiBwYWdlQm9yZGVyQm94Q2VudGVyLFxuICAgIHZpZXdwb3J0OiB2aWV3cG9ydC5mcmFtZSxcbiAgICB3aXRoRHJvcHBhYmxlRGlzcGxhY2VtZW50OiBmYWxzZSxcbiAgICBvbmx5T25NYWluQXhpczogdHJ1ZVxuICB9KTtcbiAgaWYgKGlzVmlzaWJsZUluTmV3TG9jYXRpb24pIHtcbiAgICBjb25zdCBjbGllbnRTZWxlY3Rpb24gPSBnZXRDbGllbnRGcm9tUGFnZUJvcmRlckJveENlbnRlcih7XG4gICAgICBwYWdlQm9yZGVyQm94Q2VudGVyLFxuICAgICAgZHJhZ2dhYmxlLFxuICAgICAgdmlld3BvcnRcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgY2xpZW50U2VsZWN0aW9uLFxuICAgICAgaW1wYWN0LFxuICAgICAgc2Nyb2xsSnVtcFJlcXVlc3Q6IG51bGxcbiAgICB9O1xuICB9XG4gIGNvbnN0IGRpc3RhbmNlID0gc3VidHJhY3QocGFnZUJvcmRlckJveENlbnRlciwgcHJldmlvdXNQYWdlQm9yZGVyQm94Q2VudGVyKTtcbiAgY29uc3QgY2F1dGlvdXMgPSBzcGVjdWxhdGl2ZWx5SW5jcmVhc2Uoe1xuICAgIGltcGFjdCxcbiAgICB2aWV3cG9ydCxcbiAgICBkZXN0aW5hdGlvbixcbiAgICBkcmFnZ2FibGVzLFxuICAgIG1heFNjcm9sbENoYW5nZTogZGlzdGFuY2VcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY2xpZW50U2VsZWN0aW9uOiBwcmV2aW91c0NsaWVudFNlbGVjdGlvbixcbiAgICBpbXBhY3Q6IGNhdXRpb3VzLFxuICAgIHNjcm9sbEp1bXBSZXF1ZXN0OiBkaXN0YW5jZVxuICB9O1xufSk7XG5cbmNvbnN0IGdldEtub3duQWN0aXZlID0gZHJvcHBhYmxlID0+IHtcbiAgY29uc3QgcmVjdCA9IGRyb3BwYWJsZS5zdWJqZWN0LmFjdGl2ZTtcbiAgIXJlY3QgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgZ2V0IGNsaXBwZWQgYXJlYSBmcm9tIGRyb3BwYWJsZScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgcmV0dXJuIHJlY3Q7XG59O1xudmFyIGdldEJlc3RDcm9zc0F4aXNEcm9wcGFibGUgPSAoKHtcbiAgaXNNb3ZpbmdGb3J3YXJkLFxuICBwYWdlQm9yZGVyQm94Q2VudGVyLFxuICBzb3VyY2UsXG4gIGRyb3BwYWJsZXMsXG4gIHZpZXdwb3J0XG59KSA9PiB7XG4gIGNvbnN0IGFjdGl2ZSA9IHNvdXJjZS5zdWJqZWN0LmFjdGl2ZTtcbiAgaWYgKCFhY3RpdmUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBheGlzID0gc291cmNlLmF4aXM7XG4gIGNvbnN0IGlzQmV0d2VlblNvdXJjZUNsaXBwZWQgPSBpc1dpdGhpbihhY3RpdmVbYXhpcy5zdGFydF0sIGFjdGl2ZVtheGlzLmVuZF0pO1xuICBjb25zdCBjYW5kaWRhdGVzID0gdG9Ecm9wcGFibGVMaXN0KGRyb3BwYWJsZXMpLmZpbHRlcihkcm9wcGFibGUgPT4gZHJvcHBhYmxlICE9PSBzb3VyY2UpLmZpbHRlcihkcm9wcGFibGUgPT4gZHJvcHBhYmxlLmlzRW5hYmxlZCkuZmlsdGVyKGRyb3BwYWJsZSA9PiBCb29sZWFuKGRyb3BwYWJsZS5zdWJqZWN0LmFjdGl2ZSkpLmZpbHRlcihkcm9wcGFibGUgPT4gaXNQYXJ0aWFsbHlWaXNpYmxlVGhyb3VnaEZyYW1lKHZpZXdwb3J0LmZyYW1lKShnZXRLbm93bkFjdGl2ZShkcm9wcGFibGUpKSkuZmlsdGVyKGRyb3BwYWJsZSA9PiB7XG4gICAgY29uc3QgYWN0aXZlT2ZUYXJnZXQgPSBnZXRLbm93bkFjdGl2ZShkcm9wcGFibGUpO1xuICAgIGlmIChpc01vdmluZ0ZvcndhcmQpIHtcbiAgICAgIHJldHVybiBhY3RpdmVbYXhpcy5jcm9zc0F4aXNFbmRdIDwgYWN0aXZlT2ZUYXJnZXRbYXhpcy5jcm9zc0F4aXNFbmRdO1xuICAgIH1cbiAgICByZXR1cm4gYWN0aXZlT2ZUYXJnZXRbYXhpcy5jcm9zc0F4aXNTdGFydF0gPCBhY3RpdmVbYXhpcy5jcm9zc0F4aXNTdGFydF07XG4gIH0pLmZpbHRlcihkcm9wcGFibGUgPT4ge1xuICAgIGNvbnN0IGFjdGl2ZU9mVGFyZ2V0ID0gZ2V0S25vd25BY3RpdmUoZHJvcHBhYmxlKTtcbiAgICBjb25zdCBpc0JldHdlZW5EZXN0aW5hdGlvbkNsaXBwZWQgPSBpc1dpdGhpbihhY3RpdmVPZlRhcmdldFtheGlzLnN0YXJ0XSwgYWN0aXZlT2ZUYXJnZXRbYXhpcy5lbmRdKTtcbiAgICByZXR1cm4gaXNCZXR3ZWVuU291cmNlQ2xpcHBlZChhY3RpdmVPZlRhcmdldFtheGlzLnN0YXJ0XSkgfHwgaXNCZXR3ZWVuU291cmNlQ2xpcHBlZChhY3RpdmVPZlRhcmdldFtheGlzLmVuZF0pIHx8IGlzQmV0d2VlbkRlc3RpbmF0aW9uQ2xpcHBlZChhY3RpdmVbYXhpcy5zdGFydF0pIHx8IGlzQmV0d2VlbkRlc3RpbmF0aW9uQ2xpcHBlZChhY3RpdmVbYXhpcy5lbmRdKTtcbiAgfSkuc29ydCgoYSwgYikgPT4ge1xuICAgIGNvbnN0IGZpcnN0ID0gZ2V0S25vd25BY3RpdmUoYSlbYXhpcy5jcm9zc0F4aXNTdGFydF07XG4gICAgY29uc3Qgc2Vjb25kID0gZ2V0S25vd25BY3RpdmUoYilbYXhpcy5jcm9zc0F4aXNTdGFydF07XG4gICAgaWYgKGlzTW92aW5nRm9yd2FyZCkge1xuICAgICAgcmV0dXJuIGZpcnN0IC0gc2Vjb25kO1xuICAgIH1cbiAgICByZXR1cm4gc2Vjb25kIC0gZmlyc3Q7XG4gIH0pLmZpbHRlcigoZHJvcHBhYmxlLCBpbmRleCwgYXJyYXkpID0+IGdldEtub3duQWN0aXZlKGRyb3BwYWJsZSlbYXhpcy5jcm9zc0F4aXNTdGFydF0gPT09IGdldEtub3duQWN0aXZlKGFycmF5WzBdKVtheGlzLmNyb3NzQXhpc1N0YXJ0XSk7XG4gIGlmICghY2FuZGlkYXRlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoY2FuZGlkYXRlcy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gY2FuZGlkYXRlc1swXTtcbiAgfVxuICBjb25zdCBjb250YWlucyA9IGNhbmRpZGF0ZXMuZmlsdGVyKGRyb3BwYWJsZSA9PiB7XG4gICAgY29uc3QgaXNXaXRoaW5Ecm9wcGFibGUgPSBpc1dpdGhpbihnZXRLbm93bkFjdGl2ZShkcm9wcGFibGUpW2F4aXMuc3RhcnRdLCBnZXRLbm93bkFjdGl2ZShkcm9wcGFibGUpW2F4aXMuZW5kXSk7XG4gICAgcmV0dXJuIGlzV2l0aGluRHJvcHBhYmxlKHBhZ2VCb3JkZXJCb3hDZW50ZXJbYXhpcy5saW5lXSk7XG4gIH0pO1xuICBpZiAoY29udGFpbnMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5zWzBdO1xuICB9XG4gIGlmIChjb250YWlucy5sZW5ndGggPiAxKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5zLnNvcnQoKGEsIGIpID0+IGdldEtub3duQWN0aXZlKGEpW2F4aXMuc3RhcnRdIC0gZ2V0S25vd25BY3RpdmUoYilbYXhpcy5zdGFydF0pWzBdO1xuICB9XG4gIHJldHVybiBjYW5kaWRhdGVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICBjb25zdCBmaXJzdCA9IGNsb3Nlc3QkMShwYWdlQm9yZGVyQm94Q2VudGVyLCBnZXRDb3JuZXJzKGdldEtub3duQWN0aXZlKGEpKSk7XG4gICAgY29uc3Qgc2Vjb25kID0gY2xvc2VzdCQxKHBhZ2VCb3JkZXJCb3hDZW50ZXIsIGdldENvcm5lcnMoZ2V0S25vd25BY3RpdmUoYikpKTtcbiAgICBpZiAoZmlyc3QgIT09IHNlY29uZCkge1xuICAgICAgcmV0dXJuIGZpcnN0IC0gc2Vjb25kO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0S25vd25BY3RpdmUoYSlbYXhpcy5zdGFydF0gLSBnZXRLbm93bkFjdGl2ZShiKVtheGlzLnN0YXJ0XTtcbiAgfSlbMF07XG59KTtcblxuY29uc3QgZ2V0Q3VycmVudFBhZ2VCb3JkZXJCb3hDZW50ZXIgPSAoZHJhZ2dhYmxlLCBhZnRlckNyaXRpY2FsKSA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsID0gZHJhZ2dhYmxlLnBhZ2UuYm9yZGVyQm94LmNlbnRlcjtcbiAgcmV0dXJuIGRpZFN0YXJ0QWZ0ZXJDcml0aWNhbChkcmFnZ2FibGUuZGVzY3JpcHRvci5pZCwgYWZ0ZXJDcml0aWNhbCkgPyBzdWJ0cmFjdChvcmlnaW5hbCwgYWZ0ZXJDcml0aWNhbC5kaXNwbGFjZWRCeS5wb2ludCkgOiBvcmlnaW5hbDtcbn07XG5jb25zdCBnZXRDdXJyZW50UGFnZUJvcmRlckJveCA9IChkcmFnZ2FibGUsIGFmdGVyQ3JpdGljYWwpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWwgPSBkcmFnZ2FibGUucGFnZS5ib3JkZXJCb3g7XG4gIHJldHVybiBkaWRTdGFydEFmdGVyQ3JpdGljYWwoZHJhZ2dhYmxlLmRlc2NyaXB0b3IuaWQsIGFmdGVyQ3JpdGljYWwpID8gb2Zmc2V0QnlQb3NpdGlvbihvcmlnaW5hbCwgbmVnYXRlKGFmdGVyQ3JpdGljYWwuZGlzcGxhY2VkQnkucG9pbnQpKSA6IG9yaWdpbmFsO1xufTtcblxudmFyIGdldENsb3Nlc3REcmFnZ2FibGUgPSAoKHtcbiAgcGFnZUJvcmRlckJveENlbnRlcixcbiAgdmlld3BvcnQsXG4gIGRlc3RpbmF0aW9uLFxuICBpbnNpZGVEZXN0aW5hdGlvbixcbiAgYWZ0ZXJDcml0aWNhbFxufSkgPT4ge1xuICBjb25zdCBzb3J0ZWQgPSBpbnNpZGVEZXN0aW5hdGlvbi5maWx0ZXIoZHJhZ2dhYmxlID0+IGlzVG90YWxseVZpc2libGUoe1xuICAgIHRhcmdldDogZ2V0Q3VycmVudFBhZ2VCb3JkZXJCb3goZHJhZ2dhYmxlLCBhZnRlckNyaXRpY2FsKSxcbiAgICBkZXN0aW5hdGlvbixcbiAgICB2aWV3cG9ydDogdmlld3BvcnQuZnJhbWUsXG4gICAgd2l0aERyb3BwYWJsZURpc3BsYWNlbWVudDogdHJ1ZVxuICB9KSkuc29ydCgoYSwgYikgPT4ge1xuICAgIGNvbnN0IGRpc3RhbmNlVG9BID0gZGlzdGFuY2UocGFnZUJvcmRlckJveENlbnRlciwgd2l0aERyb3BwYWJsZURpc3BsYWNlbWVudChkZXN0aW5hdGlvbiwgZ2V0Q3VycmVudFBhZ2VCb3JkZXJCb3hDZW50ZXIoYSwgYWZ0ZXJDcml0aWNhbCkpKTtcbiAgICBjb25zdCBkaXN0YW5jZVRvQiA9IGRpc3RhbmNlKHBhZ2VCb3JkZXJCb3hDZW50ZXIsIHdpdGhEcm9wcGFibGVEaXNwbGFjZW1lbnQoZGVzdGluYXRpb24sIGdldEN1cnJlbnRQYWdlQm9yZGVyQm94Q2VudGVyKGIsIGFmdGVyQ3JpdGljYWwpKSk7XG4gICAgaWYgKGRpc3RhbmNlVG9BIDwgZGlzdGFuY2VUb0IpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgaWYgKGRpc3RhbmNlVG9CIDwgZGlzdGFuY2VUb0EpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICByZXR1cm4gYS5kZXNjcmlwdG9yLmluZGV4IC0gYi5kZXNjcmlwdG9yLmluZGV4O1xuICB9KTtcbiAgcmV0dXJuIHNvcnRlZFswXSB8fCBudWxsO1xufSk7XG5cbnZhciBnZXREaXNwbGFjZWRCeSA9IG1lbW9pemVPbmUoZnVuY3Rpb24gZ2V0RGlzcGxhY2VkQnkoYXhpcywgZGlzcGxhY2VCeSkge1xuICBjb25zdCBkaXNwbGFjZW1lbnQgPSBkaXNwbGFjZUJ5W2F4aXMubGluZV07XG4gIHJldHVybiB7XG4gICAgdmFsdWU6IGRpc3BsYWNlbWVudCxcbiAgICBwb2ludDogcGF0Y2goYXhpcy5saW5lLCBkaXNwbGFjZW1lbnQpXG4gIH07XG59KTtcblxuY29uc3QgZ2V0UmVxdWlyZWRHcm93dGhGb3JQbGFjZWhvbGRlciA9IChkcm9wcGFibGUsIHBsYWNlaG9sZGVyU2l6ZSwgZHJhZ2dhYmxlcykgPT4ge1xuICBjb25zdCBheGlzID0gZHJvcHBhYmxlLmF4aXM7XG4gIGlmIChkcm9wcGFibGUuZGVzY3JpcHRvci5tb2RlID09PSAndmlydHVhbCcpIHtcbiAgICByZXR1cm4gcGF0Y2goYXhpcy5saW5lLCBwbGFjZWhvbGRlclNpemVbYXhpcy5saW5lXSk7XG4gIH1cbiAgY29uc3QgYXZhaWxhYmxlU3BhY2UgPSBkcm9wcGFibGUuc3ViamVjdC5wYWdlLmNvbnRlbnRCb3hbYXhpcy5zaXplXTtcbiAgY29uc3QgaW5zaWRlRHJvcHBhYmxlID0gZ2V0RHJhZ2dhYmxlc0luc2lkZURyb3BwYWJsZShkcm9wcGFibGUuZGVzY3JpcHRvci5pZCwgZHJhZ2dhYmxlcyk7XG4gIGNvbnN0IHNwYWNlVXNlZCA9IGluc2lkZURyb3BwYWJsZS5yZWR1Y2UoKHN1bSwgZGltZW5zaW9uKSA9PiBzdW0gKyBkaW1lbnNpb24uY2xpZW50Lm1hcmdpbkJveFtheGlzLnNpemVdLCAwKTtcbiAgY29uc3QgcmVxdWlyZWRTcGFjZSA9IHNwYWNlVXNlZCArIHBsYWNlaG9sZGVyU2l6ZVtheGlzLmxpbmVdO1xuICBjb25zdCBuZWVkc1RvR3Jvd0J5ID0gcmVxdWlyZWRTcGFjZSAtIGF2YWlsYWJsZVNwYWNlO1xuICBpZiAobmVlZHNUb0dyb3dCeSA8PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHBhdGNoKGF4aXMubGluZSwgbmVlZHNUb0dyb3dCeSk7XG59O1xuY29uc3Qgd2l0aE1heFNjcm9sbCA9IChmcmFtZSwgbWF4KSA9PiAoe1xuICAuLi5mcmFtZSxcbiAgc2Nyb2xsOiB7XG4gICAgLi4uZnJhbWUuc2Nyb2xsLFxuICAgIG1heFxuICB9XG59KTtcbmNvbnN0IGFkZFBsYWNlaG9sZGVyID0gKGRyb3BwYWJsZSwgZHJhZ2dhYmxlLCBkcmFnZ2FibGVzKSA9PiB7XG4gIGNvbnN0IGZyYW1lID0gZHJvcHBhYmxlLmZyYW1lO1xuICAhIWlzSG9tZU9mKGRyYWdnYWJsZSwgZHJvcHBhYmxlKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ1Nob3VsZCBub3QgYWRkIHBsYWNlaG9sZGVyIHNwYWNlIHRvIGhvbWUgbGlzdCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgISFkcm9wcGFibGUuc3ViamVjdC53aXRoUGxhY2Vob2xkZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgYWRkIHBsYWNlaG9sZGVyIHNpemUgdG8gYSBzdWJqZWN0IHdoZW4gaXQgYWxyZWFkeSBoYXMgb25lJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBjb25zdCBwbGFjZWhvbGRlclNpemUgPSBnZXREaXNwbGFjZWRCeShkcm9wcGFibGUuYXhpcywgZHJhZ2dhYmxlLmRpc3BsYWNlQnkpLnBvaW50O1xuICBjb25zdCByZXF1aXJlZEdyb3d0aCA9IGdldFJlcXVpcmVkR3Jvd3RoRm9yUGxhY2Vob2xkZXIoZHJvcHBhYmxlLCBwbGFjZWhvbGRlclNpemUsIGRyYWdnYWJsZXMpO1xuICBjb25zdCBhZGRlZCA9IHtcbiAgICBwbGFjZWhvbGRlclNpemUsXG4gICAgaW5jcmVhc2VkQnk6IHJlcXVpcmVkR3Jvd3RoLFxuICAgIG9sZEZyYW1lTWF4U2Nyb2xsOiBkcm9wcGFibGUuZnJhbWUgPyBkcm9wcGFibGUuZnJhbWUuc2Nyb2xsLm1heCA6IG51bGxcbiAgfTtcbiAgaWYgKCFmcmFtZSkge1xuICAgIGNvbnN0IHN1YmplY3QgPSBnZXRTdWJqZWN0KHtcbiAgICAgIHBhZ2U6IGRyb3BwYWJsZS5zdWJqZWN0LnBhZ2UsXG4gICAgICB3aXRoUGxhY2Vob2xkZXI6IGFkZGVkLFxuICAgICAgYXhpczogZHJvcHBhYmxlLmF4aXMsXG4gICAgICBmcmFtZTogZHJvcHBhYmxlLmZyYW1lXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRyb3BwYWJsZSxcbiAgICAgIHN1YmplY3RcbiAgICB9O1xuICB9XG4gIGNvbnN0IG1heFNjcm9sbCA9IHJlcXVpcmVkR3Jvd3RoID8gYWRkKGZyYW1lLnNjcm9sbC5tYXgsIHJlcXVpcmVkR3Jvd3RoKSA6IGZyYW1lLnNjcm9sbC5tYXg7XG4gIGNvbnN0IG5ld0ZyYW1lID0gd2l0aE1heFNjcm9sbChmcmFtZSwgbWF4U2Nyb2xsKTtcbiAgY29uc3Qgc3ViamVjdCA9IGdldFN1YmplY3Qoe1xuICAgIHBhZ2U6IGRyb3BwYWJsZS5zdWJqZWN0LnBhZ2UsXG4gICAgd2l0aFBsYWNlaG9sZGVyOiBhZGRlZCxcbiAgICBheGlzOiBkcm9wcGFibGUuYXhpcyxcbiAgICBmcmFtZTogbmV3RnJhbWVcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgLi4uZHJvcHBhYmxlLFxuICAgIHN1YmplY3QsXG4gICAgZnJhbWU6IG5ld0ZyYW1lXG4gIH07XG59O1xuY29uc3QgcmVtb3ZlUGxhY2Vob2xkZXIgPSBkcm9wcGFibGUgPT4ge1xuICBjb25zdCBhZGRlZCA9IGRyb3BwYWJsZS5zdWJqZWN0LndpdGhQbGFjZWhvbGRlcjtcbiAgIWFkZGVkID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHJlbW92ZSBwbGFjZWhvbGRlciBmb3JtIHN1YmplY3Qgd2hlbiB0aGVyZSB3YXMgbm9uZScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgY29uc3QgZnJhbWUgPSBkcm9wcGFibGUuZnJhbWU7XG4gIGlmICghZnJhbWUpIHtcbiAgICBjb25zdCBzdWJqZWN0ID0gZ2V0U3ViamVjdCh7XG4gICAgICBwYWdlOiBkcm9wcGFibGUuc3ViamVjdC5wYWdlLFxuICAgICAgYXhpczogZHJvcHBhYmxlLmF4aXMsXG4gICAgICBmcmFtZTogbnVsbCxcbiAgICAgIHdpdGhQbGFjZWhvbGRlcjogbnVsbFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5kcm9wcGFibGUsXG4gICAgICBzdWJqZWN0XG4gICAgfTtcbiAgfVxuICBjb25zdCBvbGRNYXhTY3JvbGwgPSBhZGRlZC5vbGRGcmFtZU1heFNjcm9sbDtcbiAgIW9sZE1heFNjcm9sbCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIGRyb3BwYWJsZSB3aXRoIGZyYW1lIHRvIGhhdmUgb2xkIG1heCBmcmFtZSBzY3JvbGwgd2hlbiByZW1vdmluZyBwbGFjZWhvbGRlcicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgY29uc3QgbmV3RnJhbWUgPSB3aXRoTWF4U2Nyb2xsKGZyYW1lLCBvbGRNYXhTY3JvbGwpO1xuICBjb25zdCBzdWJqZWN0ID0gZ2V0U3ViamVjdCh7XG4gICAgcGFnZTogZHJvcHBhYmxlLnN1YmplY3QucGFnZSxcbiAgICBheGlzOiBkcm9wcGFibGUuYXhpcyxcbiAgICBmcmFtZTogbmV3RnJhbWUsXG4gICAgd2l0aFBsYWNlaG9sZGVyOiBudWxsXG4gIH0pO1xuICByZXR1cm4ge1xuICAgIC4uLmRyb3BwYWJsZSxcbiAgICBzdWJqZWN0LFxuICAgIGZyYW1lOiBuZXdGcmFtZVxuICB9O1xufTtcblxudmFyIG1vdmVUb05ld0Ryb3BwYWJsZSA9ICgoe1xuICBwcmV2aW91c1BhZ2VCb3JkZXJCb3hDZW50ZXIsXG4gIG1vdmVSZWxhdGl2ZVRvLFxuICBpbnNpZGVEZXN0aW5hdGlvbixcbiAgZHJhZ2dhYmxlLFxuICBkcmFnZ2FibGVzLFxuICBkZXN0aW5hdGlvbixcbiAgdmlld3BvcnQsXG4gIGFmdGVyQ3JpdGljYWxcbn0pID0+IHtcbiAgaWYgKCFtb3ZlUmVsYXRpdmVUbykge1xuICAgIGlmIChpbnNpZGVEZXN0aW5hdGlvbi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBwcm9wb3NlZCA9IHtcbiAgICAgIGRpc3BsYWNlZDogZW1wdHlHcm91cHMsXG4gICAgICBkaXNwbGFjZWRCeTogbm9EaXNwbGFjZWRCeSxcbiAgICAgIGF0OiB7XG4gICAgICAgIHR5cGU6ICdSRU9SREVSJyxcbiAgICAgICAgZGVzdGluYXRpb246IHtcbiAgICAgICAgICBkcm9wcGFibGVJZDogZGVzdGluYXRpb24uZGVzY3JpcHRvci5pZCxcbiAgICAgICAgICBpbmRleDogMFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBwcm9wb3NlZFBhZ2VCb3JkZXJCb3hDZW50ZXIgPSBnZXRQYWdlQm9yZGVyQm94Q2VudGVyRnJvbUltcGFjdCh7XG4gICAgICBpbXBhY3Q6IHByb3Bvc2VkLFxuICAgICAgZHJhZ2dhYmxlLFxuICAgICAgZHJvcHBhYmxlOiBkZXN0aW5hdGlvbixcbiAgICAgIGRyYWdnYWJsZXMsXG4gICAgICBhZnRlckNyaXRpY2FsXG4gICAgfSk7XG4gICAgY29uc3Qgd2l0aFBsYWNlaG9sZGVyID0gaXNIb21lT2YoZHJhZ2dhYmxlLCBkZXN0aW5hdGlvbikgPyBkZXN0aW5hdGlvbiA6IGFkZFBsYWNlaG9sZGVyKGRlc3RpbmF0aW9uLCBkcmFnZ2FibGUsIGRyYWdnYWJsZXMpO1xuICAgIGNvbnN0IGlzVmlzaWJsZUluTmV3TG9jYXRpb24gPSBpc1RvdGFsbHlWaXNpYmxlSW5OZXdMb2NhdGlvbih7XG4gICAgICBkcmFnZ2FibGUsXG4gICAgICBkZXN0aW5hdGlvbjogd2l0aFBsYWNlaG9sZGVyLFxuICAgICAgbmV3UGFnZUJvcmRlckJveENlbnRlcjogcHJvcG9zZWRQYWdlQm9yZGVyQm94Q2VudGVyLFxuICAgICAgdmlld3BvcnQ6IHZpZXdwb3J0LmZyYW1lLFxuICAgICAgd2l0aERyb3BwYWJsZURpc3BsYWNlbWVudDogZmFsc2UsXG4gICAgICBvbmx5T25NYWluQXhpczogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBpc1Zpc2libGVJbk5ld0xvY2F0aW9uID8gcHJvcG9zZWQgOiBudWxsO1xuICB9XG4gIGNvbnN0IGlzR29pbmdCZWZvcmVUYXJnZXQgPSBCb29sZWFuKHByZXZpb3VzUGFnZUJvcmRlckJveENlbnRlcltkZXN0aW5hdGlvbi5heGlzLmxpbmVdIDw9IG1vdmVSZWxhdGl2ZVRvLnBhZ2UuYm9yZGVyQm94LmNlbnRlcltkZXN0aW5hdGlvbi5heGlzLmxpbmVdKTtcbiAgY29uc3QgcHJvcG9zZWRJbmRleCA9ICgoKSA9PiB7XG4gICAgY29uc3QgcmVsYXRpdmVUbyA9IG1vdmVSZWxhdGl2ZVRvLmRlc2NyaXB0b3IuaW5kZXg7XG4gICAgaWYgKG1vdmVSZWxhdGl2ZVRvLmRlc2NyaXB0b3IuaWQgPT09IGRyYWdnYWJsZS5kZXNjcmlwdG9yLmlkKSB7XG4gICAgICByZXR1cm4gcmVsYXRpdmVUbztcbiAgICB9XG4gICAgaWYgKGlzR29pbmdCZWZvcmVUYXJnZXQpIHtcbiAgICAgIHJldHVybiByZWxhdGl2ZVRvO1xuICAgIH1cbiAgICByZXR1cm4gcmVsYXRpdmVUbyArIDE7XG4gIH0pKCk7XG4gIGNvbnN0IGRpc3BsYWNlZEJ5ID0gZ2V0RGlzcGxhY2VkQnkoZGVzdGluYXRpb24uYXhpcywgZHJhZ2dhYmxlLmRpc3BsYWNlQnkpO1xuICByZXR1cm4gY2FsY3VsYXRlUmVvcmRlckltcGFjdCh7XG4gICAgZHJhZ2dhYmxlLFxuICAgIGluc2lkZURlc3RpbmF0aW9uLFxuICAgIGRlc3RpbmF0aW9uLFxuICAgIHZpZXdwb3J0LFxuICAgIGRpc3BsYWNlZEJ5LFxuICAgIGxhc3Q6IGVtcHR5R3JvdXBzLFxuICAgIGluZGV4OiBwcm9wb3NlZEluZGV4XG4gIH0pO1xufSk7XG5cbnZhciBtb3ZlQ3Jvc3NBeGlzID0gKCh7XG4gIGlzTW92aW5nRm9yd2FyZCxcbiAgcHJldmlvdXNQYWdlQm9yZGVyQm94Q2VudGVyLFxuICBkcmFnZ2FibGUsXG4gIGlzT3ZlcixcbiAgZHJhZ2dhYmxlcyxcbiAgZHJvcHBhYmxlcyxcbiAgdmlld3BvcnQsXG4gIGFmdGVyQ3JpdGljYWxcbn0pID0+IHtcbiAgY29uc3QgZGVzdGluYXRpb24gPSBnZXRCZXN0Q3Jvc3NBeGlzRHJvcHBhYmxlKHtcbiAgICBpc01vdmluZ0ZvcndhcmQsXG4gICAgcGFnZUJvcmRlckJveENlbnRlcjogcHJldmlvdXNQYWdlQm9yZGVyQm94Q2VudGVyLFxuICAgIHNvdXJjZTogaXNPdmVyLFxuICAgIGRyb3BwYWJsZXMsXG4gICAgdmlld3BvcnRcbiAgfSk7XG4gIGlmICghZGVzdGluYXRpb24pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBpbnNpZGVEZXN0aW5hdGlvbiA9IGdldERyYWdnYWJsZXNJbnNpZGVEcm9wcGFibGUoZGVzdGluYXRpb24uZGVzY3JpcHRvci5pZCwgZHJhZ2dhYmxlcyk7XG4gIGNvbnN0IG1vdmVSZWxhdGl2ZVRvID0gZ2V0Q2xvc2VzdERyYWdnYWJsZSh7XG4gICAgcGFnZUJvcmRlckJveENlbnRlcjogcHJldmlvdXNQYWdlQm9yZGVyQm94Q2VudGVyLFxuICAgIHZpZXdwb3J0LFxuICAgIGRlc3RpbmF0aW9uLFxuICAgIGluc2lkZURlc3RpbmF0aW9uLFxuICAgIGFmdGVyQ3JpdGljYWxcbiAgfSk7XG4gIGNvbnN0IGltcGFjdCA9IG1vdmVUb05ld0Ryb3BwYWJsZSh7XG4gICAgcHJldmlvdXNQYWdlQm9yZGVyQm94Q2VudGVyLFxuICAgIGRlc3RpbmF0aW9uLFxuICAgIGRyYWdnYWJsZSxcbiAgICBkcmFnZ2FibGVzLFxuICAgIG1vdmVSZWxhdGl2ZVRvLFxuICAgIGluc2lkZURlc3RpbmF0aW9uLFxuICAgIHZpZXdwb3J0LFxuICAgIGFmdGVyQ3JpdGljYWxcbiAgfSk7XG4gIGlmICghaW1wYWN0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcGFnZUJvcmRlckJveENlbnRlciA9IGdldFBhZ2VCb3JkZXJCb3hDZW50ZXJGcm9tSW1wYWN0KHtcbiAgICBpbXBhY3QsXG4gICAgZHJhZ2dhYmxlLFxuICAgIGRyb3BwYWJsZTogZGVzdGluYXRpb24sXG4gICAgZHJhZ2dhYmxlcyxcbiAgICBhZnRlckNyaXRpY2FsXG4gIH0pO1xuICBjb25zdCBjbGllbnRTZWxlY3Rpb24gPSBnZXRDbGllbnRGcm9tUGFnZUJvcmRlckJveENlbnRlcih7XG4gICAgcGFnZUJvcmRlckJveENlbnRlcixcbiAgICBkcmFnZ2FibGUsXG4gICAgdmlld3BvcnRcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgY2xpZW50U2VsZWN0aW9uLFxuICAgIGltcGFjdCxcbiAgICBzY3JvbGxKdW1wUmVxdWVzdDogbnVsbFxuICB9O1xufSk7XG5cbnZhciB3aGF0SXNEcmFnZ2VkT3ZlciA9IChpbXBhY3QgPT4ge1xuICBjb25zdCBhdCA9IGltcGFjdC5hdDtcbiAgaWYgKCFhdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChhdC50eXBlID09PSAnUkVPUkRFUicpIHtcbiAgICByZXR1cm4gYXQuZGVzdGluYXRpb24uZHJvcHBhYmxlSWQ7XG4gIH1cbiAgcmV0dXJuIGF0LmNvbWJpbmUuZHJvcHBhYmxlSWQ7XG59KTtcblxuY29uc3QgZ2V0RHJvcHBhYmxlT3ZlciQxID0gKGltcGFjdCwgZHJvcHBhYmxlcykgPT4ge1xuICBjb25zdCBpZCA9IHdoYXRJc0RyYWdnZWRPdmVyKGltcGFjdCk7XG4gIHJldHVybiBpZCA/IGRyb3BwYWJsZXNbaWRdIDogbnVsbDtcbn07XG52YXIgbW92ZUluRGlyZWN0aW9uID0gKCh7XG4gIHN0YXRlLFxuICB0eXBlXG59KSA9PiB7XG4gIGNvbnN0IGlzQWN0dWFsbHlPdmVyID0gZ2V0RHJvcHBhYmxlT3ZlciQxKHN0YXRlLmltcGFjdCwgc3RhdGUuZGltZW5zaW9ucy5kcm9wcGFibGVzKTtcbiAgY29uc3QgaXNNYWluQXhpc01vdmVtZW50QWxsb3dlZCA9IEJvb2xlYW4oaXNBY3R1YWxseU92ZXIpO1xuICBjb25zdCBob21lID0gc3RhdGUuZGltZW5zaW9ucy5kcm9wcGFibGVzW3N0YXRlLmNyaXRpY2FsLmRyb3BwYWJsZS5pZF07XG4gIGNvbnN0IGlzT3ZlciA9IGlzQWN0dWFsbHlPdmVyIHx8IGhvbWU7XG4gIGNvbnN0IGRpcmVjdGlvbiA9IGlzT3Zlci5heGlzLmRpcmVjdGlvbjtcbiAgY29uc3QgaXNNb3ZpbmdPbk1haW5BeGlzID0gZGlyZWN0aW9uID09PSAndmVydGljYWwnICYmICh0eXBlID09PSAnTU9WRV9VUCcgfHwgdHlwZSA9PT0gJ01PVkVfRE9XTicpIHx8IGRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnICYmICh0eXBlID09PSAnTU9WRV9MRUZUJyB8fCB0eXBlID09PSAnTU9WRV9SSUdIVCcpO1xuICBpZiAoaXNNb3ZpbmdPbk1haW5BeGlzICYmICFpc01haW5BeGlzTW92ZW1lbnRBbGxvd2VkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgaXNNb3ZpbmdGb3J3YXJkID0gdHlwZSA9PT0gJ01PVkVfRE9XTicgfHwgdHlwZSA9PT0gJ01PVkVfUklHSFQnO1xuICBjb25zdCBkcmFnZ2FibGUgPSBzdGF0ZS5kaW1lbnNpb25zLmRyYWdnYWJsZXNbc3RhdGUuY3JpdGljYWwuZHJhZ2dhYmxlLmlkXTtcbiAgY29uc3QgcHJldmlvdXNQYWdlQm9yZGVyQm94Q2VudGVyID0gc3RhdGUuY3VycmVudC5wYWdlLmJvcmRlckJveENlbnRlcjtcbiAgY29uc3Qge1xuICAgIGRyYWdnYWJsZXMsXG4gICAgZHJvcHBhYmxlc1xuICB9ID0gc3RhdGUuZGltZW5zaW9ucztcbiAgcmV0dXJuIGlzTW92aW5nT25NYWluQXhpcyA/IG1vdmVUb05leHRQbGFjZSh7XG4gICAgaXNNb3ZpbmdGb3J3YXJkLFxuICAgIHByZXZpb3VzUGFnZUJvcmRlckJveENlbnRlcixcbiAgICBkcmFnZ2FibGUsXG4gICAgZGVzdGluYXRpb246IGlzT3ZlcixcbiAgICBkcmFnZ2FibGVzLFxuICAgIHZpZXdwb3J0OiBzdGF0ZS52aWV3cG9ydCxcbiAgICBwcmV2aW91c0NsaWVudFNlbGVjdGlvbjogc3RhdGUuY3VycmVudC5jbGllbnQuc2VsZWN0aW9uLFxuICAgIHByZXZpb3VzSW1wYWN0OiBzdGF0ZS5pbXBhY3QsXG4gICAgYWZ0ZXJDcml0aWNhbDogc3RhdGUuYWZ0ZXJDcml0aWNhbFxuICB9KSA6IG1vdmVDcm9zc0F4aXMoe1xuICAgIGlzTW92aW5nRm9yd2FyZCxcbiAgICBwcmV2aW91c1BhZ2VCb3JkZXJCb3hDZW50ZXIsXG4gICAgZHJhZ2dhYmxlLFxuICAgIGlzT3ZlcixcbiAgICBkcmFnZ2FibGVzLFxuICAgIGRyb3BwYWJsZXMsXG4gICAgdmlld3BvcnQ6IHN0YXRlLnZpZXdwb3J0LFxuICAgIGFmdGVyQ3JpdGljYWw6IHN0YXRlLmFmdGVyQ3JpdGljYWxcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gaXNNb3ZlbWVudEFsbG93ZWQoc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLnBoYXNlID09PSAnRFJBR0dJTkcnIHx8IHN0YXRlLnBoYXNlID09PSAnQ09MTEVDVElORyc7XG59XG5cbmZ1bmN0aW9uIGlzUG9zaXRpb25JbkZyYW1lKGZyYW1lKSB7XG4gIGNvbnN0IGlzV2l0aGluVmVydGljYWwgPSBpc1dpdGhpbihmcmFtZS50b3AsIGZyYW1lLmJvdHRvbSk7XG4gIGNvbnN0IGlzV2l0aGluSG9yaXpvbnRhbCA9IGlzV2l0aGluKGZyYW1lLmxlZnQsIGZyYW1lLnJpZ2h0KTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJ1bihwb2ludCkge1xuICAgIHJldHVybiBpc1dpdGhpblZlcnRpY2FsKHBvaW50LnkpICYmIGlzV2l0aGluSG9yaXpvbnRhbChwb2ludC54KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0SGFzT3ZlcmxhcChmaXJzdCwgc2Vjb25kKSB7XG4gIHJldHVybiBmaXJzdC5sZWZ0IDwgc2Vjb25kLnJpZ2h0ICYmIGZpcnN0LnJpZ2h0ID4gc2Vjb25kLmxlZnQgJiYgZmlyc3QudG9wIDwgc2Vjb25kLmJvdHRvbSAmJiBmaXJzdC5ib3R0b20gPiBzZWNvbmQudG9wO1xufVxuZnVuY3Rpb24gZ2V0RnVydGhlc3RBd2F5KHtcbiAgcGFnZUJvcmRlckJveCxcbiAgZHJhZ2dhYmxlLFxuICBjYW5kaWRhdGVzXG59KSB7XG4gIGNvbnN0IHN0YXJ0Q2VudGVyID0gZHJhZ2dhYmxlLnBhZ2UuYm9yZGVyQm94LmNlbnRlcjtcbiAgY29uc3Qgc29ydGVkID0gY2FuZGlkYXRlcy5tYXAoY2FuZGlkYXRlID0+IHtcbiAgICBjb25zdCBheGlzID0gY2FuZGlkYXRlLmF4aXM7XG4gICAgY29uc3QgdGFyZ2V0ID0gcGF0Y2goY2FuZGlkYXRlLmF4aXMubGluZSwgcGFnZUJvcmRlckJveC5jZW50ZXJbYXhpcy5saW5lXSwgY2FuZGlkYXRlLnBhZ2UuYm9yZGVyQm94LmNlbnRlcltheGlzLmNyb3NzQXhpc0xpbmVdKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGNhbmRpZGF0ZS5kZXNjcmlwdG9yLmlkLFxuICAgICAgZGlzdGFuY2U6IGRpc3RhbmNlKHN0YXJ0Q2VudGVyLCB0YXJnZXQpXG4gICAgfTtcbiAgfSkuc29ydCgoYSwgYikgPT4gYi5kaXN0YW5jZSAtIGEuZGlzdGFuY2UpO1xuICByZXR1cm4gc29ydGVkWzBdID8gc29ydGVkWzBdLmlkIDogbnVsbDtcbn1cbmZ1bmN0aW9uIGdldERyb3BwYWJsZU92ZXIoe1xuICBwYWdlQm9yZGVyQm94LFxuICBkcmFnZ2FibGUsXG4gIGRyb3BwYWJsZXNcbn0pIHtcbiAgY29uc3QgY2FuZGlkYXRlcyA9IHRvRHJvcHBhYmxlTGlzdChkcm9wcGFibGVzKS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgaWYgKCFpdGVtLmlzRW5hYmxlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBhY3RpdmUgPSBpdGVtLnN1YmplY3QuYWN0aXZlO1xuICAgIGlmICghYWN0aXZlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghZ2V0SGFzT3ZlcmxhcChwYWdlQm9yZGVyQm94LCBhY3RpdmUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpc1Bvc2l0aW9uSW5GcmFtZShhY3RpdmUpKHBhZ2VCb3JkZXJCb3guY2VudGVyKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGF4aXMgPSBpdGVtLmF4aXM7XG4gICAgY29uc3QgY2hpbGRDZW50ZXIgPSBhY3RpdmUuY2VudGVyW2F4aXMuY3Jvc3NBeGlzTGluZV07XG4gICAgY29uc3QgY3Jvc3NBeGlzU3RhcnQgPSBwYWdlQm9yZGVyQm94W2F4aXMuY3Jvc3NBeGlzU3RhcnRdO1xuICAgIGNvbnN0IGNyb3NzQXhpc0VuZCA9IHBhZ2VCb3JkZXJCb3hbYXhpcy5jcm9zc0F4aXNFbmRdO1xuICAgIGNvbnN0IGlzQ29udGFpbmVkID0gaXNXaXRoaW4oYWN0aXZlW2F4aXMuY3Jvc3NBeGlzU3RhcnRdLCBhY3RpdmVbYXhpcy5jcm9zc0F4aXNFbmRdKTtcbiAgICBjb25zdCBpc1N0YXJ0Q29udGFpbmVkID0gaXNDb250YWluZWQoY3Jvc3NBeGlzU3RhcnQpO1xuICAgIGNvbnN0IGlzRW5kQ29udGFpbmVkID0gaXNDb250YWluZWQoY3Jvc3NBeGlzRW5kKTtcbiAgICBpZiAoIWlzU3RhcnRDb250YWluZWQgJiYgIWlzRW5kQ29udGFpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGlzU3RhcnRDb250YWluZWQpIHtcbiAgICAgIHJldHVybiBjcm9zc0F4aXNTdGFydCA8IGNoaWxkQ2VudGVyO1xuICAgIH1cbiAgICByZXR1cm4gY3Jvc3NBeGlzRW5kID4gY2hpbGRDZW50ZXI7XG4gIH0pO1xuICBpZiAoIWNhbmRpZGF0ZXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKGNhbmRpZGF0ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIGNhbmRpZGF0ZXNbMF0uZGVzY3JpcHRvci5pZDtcbiAgfVxuICByZXR1cm4gZ2V0RnVydGhlc3RBd2F5KHtcbiAgICBwYWdlQm9yZGVyQm94LFxuICAgIGRyYWdnYWJsZSxcbiAgICBjYW5kaWRhdGVzXG4gIH0pO1xufVxuXG5jb25zdCBvZmZzZXRSZWN0QnlQb3NpdGlvbiA9IChyZWN0LCBwb2ludCkgPT4gZ2V0UmVjdChvZmZzZXRCeVBvc2l0aW9uKHJlY3QsIHBvaW50KSk7XG5cbnZhciB3aXRoRHJvcHBhYmxlU2Nyb2xsID0gKChkcm9wcGFibGUsIGFyZWEpID0+IHtcbiAgY29uc3QgZnJhbWUgPSBkcm9wcGFibGUuZnJhbWU7XG4gIGlmICghZnJhbWUpIHtcbiAgICByZXR1cm4gYXJlYTtcbiAgfVxuICByZXR1cm4gb2Zmc2V0UmVjdEJ5UG9zaXRpb24oYXJlYSwgZnJhbWUuc2Nyb2xsLmRpZmYudmFsdWUpO1xufSk7XG5cbmZ1bmN0aW9uIGdldElzRGlzcGxhY2VkKHtcbiAgZGlzcGxhY2VkLFxuICBpZFxufSkge1xuICByZXR1cm4gQm9vbGVhbihkaXNwbGFjZWQudmlzaWJsZVtpZF0gfHwgZGlzcGxhY2VkLmludmlzaWJsZVtpZF0pO1xufVxuXG5mdW5jdGlvbiBhdEluZGV4KHtcbiAgZHJhZ2dhYmxlLFxuICBjbG9zZXN0LFxuICBpbkhvbWVMaXN0XG59KSB7XG4gIGlmICghY2xvc2VzdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmICghaW5Ib21lTGlzdCkge1xuICAgIHJldHVybiBjbG9zZXN0LmRlc2NyaXB0b3IuaW5kZXg7XG4gIH1cbiAgaWYgKGNsb3Nlc3QuZGVzY3JpcHRvci5pbmRleCA+IGRyYWdnYWJsZS5kZXNjcmlwdG9yLmluZGV4KSB7XG4gICAgcmV0dXJuIGNsb3Nlc3QuZGVzY3JpcHRvci5pbmRleCAtIDE7XG4gIH1cbiAgcmV0dXJuIGNsb3Nlc3QuZGVzY3JpcHRvci5pbmRleDtcbn1cbnZhciBnZXRSZW9yZGVySW1wYWN0ID0gKCh7XG4gIHBhZ2VCb3JkZXJCb3hXaXRoRHJvcHBhYmxlU2Nyb2xsOiB0YXJnZXRSZWN0LFxuICBkcmFnZ2FibGUsXG4gIGRlc3RpbmF0aW9uLFxuICBpbnNpZGVEZXN0aW5hdGlvbixcbiAgbGFzdCxcbiAgdmlld3BvcnQsXG4gIGFmdGVyQ3JpdGljYWxcbn0pID0+IHtcbiAgY29uc3QgYXhpcyA9IGRlc3RpbmF0aW9uLmF4aXM7XG4gIGNvbnN0IGRpc3BsYWNlZEJ5ID0gZ2V0RGlzcGxhY2VkQnkoZGVzdGluYXRpb24uYXhpcywgZHJhZ2dhYmxlLmRpc3BsYWNlQnkpO1xuICBjb25zdCBkaXNwbGFjZW1lbnQgPSBkaXNwbGFjZWRCeS52YWx1ZTtcbiAgY29uc3QgdGFyZ2V0U3RhcnQgPSB0YXJnZXRSZWN0W2F4aXMuc3RhcnRdO1xuICBjb25zdCB0YXJnZXRFbmQgPSB0YXJnZXRSZWN0W2F4aXMuZW5kXTtcbiAgY29uc3Qgd2l0aG91dERyYWdnaW5nID0gcmVtb3ZlRHJhZ2dhYmxlRnJvbUxpc3QoZHJhZ2dhYmxlLCBpbnNpZGVEZXN0aW5hdGlvbik7XG4gIGNvbnN0IGNsb3Nlc3QgPSB3aXRob3V0RHJhZ2dpbmcuZmluZChjaGlsZCA9PiB7XG4gICAgY29uc3QgaWQgPSBjaGlsZC5kZXNjcmlwdG9yLmlkO1xuICAgIGNvbnN0IGNoaWxkQ2VudGVyID0gY2hpbGQucGFnZS5ib3JkZXJCb3guY2VudGVyW2F4aXMubGluZV07XG4gICAgY29uc3QgZGlkU3RhcnRBZnRlckNyaXRpY2FsJDEgPSBkaWRTdGFydEFmdGVyQ3JpdGljYWwoaWQsIGFmdGVyQ3JpdGljYWwpO1xuICAgIGNvbnN0IGlzRGlzcGxhY2VkID0gZ2V0SXNEaXNwbGFjZWQoe1xuICAgICAgZGlzcGxhY2VkOiBsYXN0LFxuICAgICAgaWRcbiAgICB9KTtcbiAgICBpZiAoZGlkU3RhcnRBZnRlckNyaXRpY2FsJDEpIHtcbiAgICAgIGlmIChpc0Rpc3BsYWNlZCkge1xuICAgICAgICByZXR1cm4gdGFyZ2V0RW5kIDw9IGNoaWxkQ2VudGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldFN0YXJ0IDwgY2hpbGRDZW50ZXIgLSBkaXNwbGFjZW1lbnQ7XG4gICAgfVxuICAgIGlmIChpc0Rpc3BsYWNlZCkge1xuICAgICAgcmV0dXJuIHRhcmdldEVuZCA8PSBjaGlsZENlbnRlciArIGRpc3BsYWNlbWVudDtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldFN0YXJ0IDwgY2hpbGRDZW50ZXI7XG4gIH0pIHx8IG51bGw7XG4gIGNvbnN0IG5ld0luZGV4ID0gYXRJbmRleCh7XG4gICAgZHJhZ2dhYmxlLFxuICAgIGNsb3Nlc3QsXG4gICAgaW5Ib21lTGlzdDogaXNIb21lT2YoZHJhZ2dhYmxlLCBkZXN0aW5hdGlvbilcbiAgfSk7XG4gIHJldHVybiBjYWxjdWxhdGVSZW9yZGVySW1wYWN0KHtcbiAgICBkcmFnZ2FibGUsXG4gICAgaW5zaWRlRGVzdGluYXRpb24sXG4gICAgZGVzdGluYXRpb24sXG4gICAgdmlld3BvcnQsXG4gICAgbGFzdCxcbiAgICBkaXNwbGFjZWRCeSxcbiAgICBpbmRleDogbmV3SW5kZXhcbiAgfSk7XG59KTtcblxuY29uc3QgY29tYmluZVRocmVzaG9sZERpdmlzb3IgPSA0O1xudmFyIGdldENvbWJpbmVJbXBhY3QgPSAoKHtcbiAgZHJhZ2dhYmxlLFxuICBwYWdlQm9yZGVyQm94V2l0aERyb3BwYWJsZVNjcm9sbDogdGFyZ2V0UmVjdCxcbiAgcHJldmlvdXNJbXBhY3QsXG4gIGRlc3RpbmF0aW9uLFxuICBpbnNpZGVEZXN0aW5hdGlvbixcbiAgYWZ0ZXJDcml0aWNhbFxufSkgPT4ge1xuICBpZiAoIWRlc3RpbmF0aW9uLmlzQ29tYmluZUVuYWJsZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBheGlzID0gZGVzdGluYXRpb24uYXhpcztcbiAgY29uc3QgZGlzcGxhY2VkQnkgPSBnZXREaXNwbGFjZWRCeShkZXN0aW5hdGlvbi5heGlzLCBkcmFnZ2FibGUuZGlzcGxhY2VCeSk7XG4gIGNvbnN0IGRpc3BsYWNlbWVudCA9IGRpc3BsYWNlZEJ5LnZhbHVlO1xuICBjb25zdCB0YXJnZXRTdGFydCA9IHRhcmdldFJlY3RbYXhpcy5zdGFydF07XG4gIGNvbnN0IHRhcmdldEVuZCA9IHRhcmdldFJlY3RbYXhpcy5lbmRdO1xuICBjb25zdCB3aXRob3V0RHJhZ2dpbmcgPSByZW1vdmVEcmFnZ2FibGVGcm9tTGlzdChkcmFnZ2FibGUsIGluc2lkZURlc3RpbmF0aW9uKTtcbiAgY29uc3QgY29tYmluZVdpdGggPSB3aXRob3V0RHJhZ2dpbmcuZmluZChjaGlsZCA9PiB7XG4gICAgY29uc3QgaWQgPSBjaGlsZC5kZXNjcmlwdG9yLmlkO1xuICAgIGNvbnN0IGNoaWxkUmVjdCA9IGNoaWxkLnBhZ2UuYm9yZGVyQm94O1xuICAgIGNvbnN0IGNoaWxkU2l6ZSA9IGNoaWxkUmVjdFtheGlzLnNpemVdO1xuICAgIGNvbnN0IHRocmVzaG9sZCA9IGNoaWxkU2l6ZSAvIGNvbWJpbmVUaHJlc2hvbGREaXZpc29yO1xuICAgIGNvbnN0IGRpZFN0YXJ0QWZ0ZXJDcml0aWNhbCQxID0gZGlkU3RhcnRBZnRlckNyaXRpY2FsKGlkLCBhZnRlckNyaXRpY2FsKTtcbiAgICBjb25zdCBpc0Rpc3BsYWNlZCA9IGdldElzRGlzcGxhY2VkKHtcbiAgICAgIGRpc3BsYWNlZDogcHJldmlvdXNJbXBhY3QuZGlzcGxhY2VkLFxuICAgICAgaWRcbiAgICB9KTtcbiAgICBpZiAoZGlkU3RhcnRBZnRlckNyaXRpY2FsJDEpIHtcbiAgICAgIGlmIChpc0Rpc3BsYWNlZCkge1xuICAgICAgICByZXR1cm4gdGFyZ2V0RW5kID4gY2hpbGRSZWN0W2F4aXMuc3RhcnRdICsgdGhyZXNob2xkICYmIHRhcmdldEVuZCA8IGNoaWxkUmVjdFtheGlzLmVuZF0gLSB0aHJlc2hvbGQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGFyZ2V0U3RhcnQgPiBjaGlsZFJlY3RbYXhpcy5zdGFydF0gLSBkaXNwbGFjZW1lbnQgKyB0aHJlc2hvbGQgJiYgdGFyZ2V0U3RhcnQgPCBjaGlsZFJlY3RbYXhpcy5lbmRdIC0gZGlzcGxhY2VtZW50IC0gdGhyZXNob2xkO1xuICAgIH1cbiAgICBpZiAoaXNEaXNwbGFjZWQpIHtcbiAgICAgIHJldHVybiB0YXJnZXRFbmQgPiBjaGlsZFJlY3RbYXhpcy5zdGFydF0gKyBkaXNwbGFjZW1lbnQgKyB0aHJlc2hvbGQgJiYgdGFyZ2V0RW5kIDwgY2hpbGRSZWN0W2F4aXMuZW5kXSArIGRpc3BsYWNlbWVudCAtIHRocmVzaG9sZDtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldFN0YXJ0ID4gY2hpbGRSZWN0W2F4aXMuc3RhcnRdICsgdGhyZXNob2xkICYmIHRhcmdldFN0YXJ0IDwgY2hpbGRSZWN0W2F4aXMuZW5kXSAtIHRocmVzaG9sZDtcbiAgfSk7XG4gIGlmICghY29tYmluZVdpdGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBpbXBhY3QgPSB7XG4gICAgZGlzcGxhY2VkQnksXG4gICAgZGlzcGxhY2VkOiBwcmV2aW91c0ltcGFjdC5kaXNwbGFjZWQsXG4gICAgYXQ6IHtcbiAgICAgIHR5cGU6ICdDT01CSU5FJyxcbiAgICAgIGNvbWJpbmU6IHtcbiAgICAgICAgZHJhZ2dhYmxlSWQ6IGNvbWJpbmVXaXRoLmRlc2NyaXB0b3IuaWQsXG4gICAgICAgIGRyb3BwYWJsZUlkOiBkZXN0aW5hdGlvbi5kZXNjcmlwdG9yLmlkXG4gICAgICB9XG4gICAgfVxuICB9O1xuICByZXR1cm4gaW1wYWN0O1xufSk7XG5cbnZhciBnZXREcmFnSW1wYWN0ID0gKCh7XG4gIHBhZ2VPZmZzZXQsXG4gIGRyYWdnYWJsZSxcbiAgZHJhZ2dhYmxlcyxcbiAgZHJvcHBhYmxlcyxcbiAgcHJldmlvdXNJbXBhY3QsXG4gIHZpZXdwb3J0LFxuICBhZnRlckNyaXRpY2FsXG59KSA9PiB7XG4gIGNvbnN0IHBhZ2VCb3JkZXJCb3ggPSBvZmZzZXRSZWN0QnlQb3NpdGlvbihkcmFnZ2FibGUucGFnZS5ib3JkZXJCb3gsIHBhZ2VPZmZzZXQpO1xuICBjb25zdCBkZXN0aW5hdGlvbklkID0gZ2V0RHJvcHBhYmxlT3Zlcih7XG4gICAgcGFnZUJvcmRlckJveCxcbiAgICBkcmFnZ2FibGUsXG4gICAgZHJvcHBhYmxlc1xuICB9KTtcbiAgaWYgKCFkZXN0aW5hdGlvbklkKSB7XG4gICAgcmV0dXJuIG5vSW1wYWN0JDE7XG4gIH1cbiAgY29uc3QgZGVzdGluYXRpb24gPSBkcm9wcGFibGVzW2Rlc3RpbmF0aW9uSWRdO1xuICBjb25zdCBpbnNpZGVEZXN0aW5hdGlvbiA9IGdldERyYWdnYWJsZXNJbnNpZGVEcm9wcGFibGUoZGVzdGluYXRpb24uZGVzY3JpcHRvci5pZCwgZHJhZ2dhYmxlcyk7XG4gIGNvbnN0IHBhZ2VCb3JkZXJCb3hXaXRoRHJvcHBhYmxlU2Nyb2xsID0gd2l0aERyb3BwYWJsZVNjcm9sbChkZXN0aW5hdGlvbiwgcGFnZUJvcmRlckJveCk7XG4gIHJldHVybiBnZXRDb21iaW5lSW1wYWN0KHtcbiAgICBwYWdlQm9yZGVyQm94V2l0aERyb3BwYWJsZVNjcm9sbCxcbiAgICBkcmFnZ2FibGUsXG4gICAgcHJldmlvdXNJbXBhY3QsXG4gICAgZGVzdGluYXRpb24sXG4gICAgaW5zaWRlRGVzdGluYXRpb24sXG4gICAgYWZ0ZXJDcml0aWNhbFxuICB9KSB8fCBnZXRSZW9yZGVySW1wYWN0KHtcbiAgICBwYWdlQm9yZGVyQm94V2l0aERyb3BwYWJsZVNjcm9sbCxcbiAgICBkcmFnZ2FibGUsXG4gICAgZGVzdGluYXRpb24sXG4gICAgaW5zaWRlRGVzdGluYXRpb24sXG4gICAgbGFzdDogcHJldmlvdXNJbXBhY3QuZGlzcGxhY2VkLFxuICAgIHZpZXdwb3J0LFxuICAgIGFmdGVyQ3JpdGljYWxcbiAgfSk7XG59KTtcblxudmFyIHBhdGNoRHJvcHBhYmxlTWFwID0gKChkcm9wcGFibGVzLCB1cGRhdGVkKSA9PiAoe1xuICAuLi5kcm9wcGFibGVzLFxuICBbdXBkYXRlZC5kZXNjcmlwdG9yLmlkXTogdXBkYXRlZFxufSkpO1xuXG5jb25zdCBjbGVhclVudXNlZFBsYWNlaG9sZGVyID0gKHtcbiAgcHJldmlvdXNJbXBhY3QsXG4gIGltcGFjdCxcbiAgZHJvcHBhYmxlc1xufSkgPT4ge1xuICBjb25zdCBsYXN0ID0gd2hhdElzRHJhZ2dlZE92ZXIocHJldmlvdXNJbXBhY3QpO1xuICBjb25zdCBub3cgPSB3aGF0SXNEcmFnZ2VkT3ZlcihpbXBhY3QpO1xuICBpZiAoIWxhc3QpIHtcbiAgICByZXR1cm4gZHJvcHBhYmxlcztcbiAgfVxuICBpZiAobGFzdCA9PT0gbm93KSB7XG4gICAgcmV0dXJuIGRyb3BwYWJsZXM7XG4gIH1cbiAgY29uc3QgbGFzdERyb3BwYWJsZSA9IGRyb3BwYWJsZXNbbGFzdF07XG4gIGlmICghbGFzdERyb3BwYWJsZS5zdWJqZWN0LndpdGhQbGFjZWhvbGRlcikge1xuICAgIHJldHVybiBkcm9wcGFibGVzO1xuICB9XG4gIGNvbnN0IHVwZGF0ZWQgPSByZW1vdmVQbGFjZWhvbGRlcihsYXN0RHJvcHBhYmxlKTtcbiAgcmV0dXJuIHBhdGNoRHJvcHBhYmxlTWFwKGRyb3BwYWJsZXMsIHVwZGF0ZWQpO1xufTtcbnZhciByZWNvbXB1dGVQbGFjZWhvbGRlcnMgPSAoKHtcbiAgZHJhZ2dhYmxlLFxuICBkcmFnZ2FibGVzLFxuICBkcm9wcGFibGVzLFxuICBwcmV2aW91c0ltcGFjdCxcbiAgaW1wYWN0XG59KSA9PiB7XG4gIGNvbnN0IGNsZWFuZWQgPSBjbGVhclVudXNlZFBsYWNlaG9sZGVyKHtcbiAgICBwcmV2aW91c0ltcGFjdCxcbiAgICBpbXBhY3QsXG4gICAgZHJvcHBhYmxlc1xuICB9KTtcbiAgY29uc3QgaXNPdmVyID0gd2hhdElzRHJhZ2dlZE92ZXIoaW1wYWN0KTtcbiAgaWYgKCFpc092ZXIpIHtcbiAgICByZXR1cm4gY2xlYW5lZDtcbiAgfVxuICBjb25zdCBkcm9wcGFibGUgPSBkcm9wcGFibGVzW2lzT3Zlcl07XG4gIGlmIChpc0hvbWVPZihkcmFnZ2FibGUsIGRyb3BwYWJsZSkpIHtcbiAgICByZXR1cm4gY2xlYW5lZDtcbiAgfVxuICBpZiAoZHJvcHBhYmxlLnN1YmplY3Qud2l0aFBsYWNlaG9sZGVyKSB7XG4gICAgcmV0dXJuIGNsZWFuZWQ7XG4gIH1cbiAgY29uc3QgcGF0Y2hlZCA9IGFkZFBsYWNlaG9sZGVyKGRyb3BwYWJsZSwgZHJhZ2dhYmxlLCBkcmFnZ2FibGVzKTtcbiAgcmV0dXJuIHBhdGNoRHJvcHBhYmxlTWFwKGNsZWFuZWQsIHBhdGNoZWQpO1xufSk7XG5cbnZhciB1cGRhdGUgPSAoKHtcbiAgc3RhdGUsXG4gIGNsaWVudFNlbGVjdGlvbjogZm9yY2VkQ2xpZW50U2VsZWN0aW9uLFxuICBkaW1lbnNpb25zOiBmb3JjZWREaW1lbnNpb25zLFxuICB2aWV3cG9ydDogZm9yY2VkVmlld3BvcnQsXG4gIGltcGFjdDogZm9yY2VkSW1wYWN0LFxuICBzY3JvbGxKdW1wUmVxdWVzdFxufSkgPT4ge1xuICBjb25zdCB2aWV3cG9ydCA9IGZvcmNlZFZpZXdwb3J0IHx8IHN0YXRlLnZpZXdwb3J0O1xuICBjb25zdCBkaW1lbnNpb25zID0gZm9yY2VkRGltZW5zaW9ucyB8fCBzdGF0ZS5kaW1lbnNpb25zO1xuICBjb25zdCBjbGllbnRTZWxlY3Rpb24gPSBmb3JjZWRDbGllbnRTZWxlY3Rpb24gfHwgc3RhdGUuY3VycmVudC5jbGllbnQuc2VsZWN0aW9uO1xuICBjb25zdCBvZmZzZXQgPSBzdWJ0cmFjdChjbGllbnRTZWxlY3Rpb24sIHN0YXRlLmluaXRpYWwuY2xpZW50LnNlbGVjdGlvbik7XG4gIGNvbnN0IGNsaWVudCA9IHtcbiAgICBvZmZzZXQsXG4gICAgc2VsZWN0aW9uOiBjbGllbnRTZWxlY3Rpb24sXG4gICAgYm9yZGVyQm94Q2VudGVyOiBhZGQoc3RhdGUuaW5pdGlhbC5jbGllbnQuYm9yZGVyQm94Q2VudGVyLCBvZmZzZXQpXG4gIH07XG4gIGNvbnN0IHBhZ2UgPSB7XG4gICAgc2VsZWN0aW9uOiBhZGQoY2xpZW50LnNlbGVjdGlvbiwgdmlld3BvcnQuc2Nyb2xsLmN1cnJlbnQpLFxuICAgIGJvcmRlckJveENlbnRlcjogYWRkKGNsaWVudC5ib3JkZXJCb3hDZW50ZXIsIHZpZXdwb3J0LnNjcm9sbC5jdXJyZW50KSxcbiAgICBvZmZzZXQ6IGFkZChjbGllbnQub2Zmc2V0LCB2aWV3cG9ydC5zY3JvbGwuZGlmZi52YWx1ZSlcbiAgfTtcbiAgY29uc3QgY3VycmVudCA9IHtcbiAgICBjbGllbnQsXG4gICAgcGFnZVxuICB9O1xuICBpZiAoc3RhdGUucGhhc2UgPT09ICdDT0xMRUNUSU5HJykge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGRpbWVuc2lvbnMsXG4gICAgICB2aWV3cG9ydCxcbiAgICAgIGN1cnJlbnRcbiAgICB9O1xuICB9XG4gIGNvbnN0IGRyYWdnYWJsZSA9IGRpbWVuc2lvbnMuZHJhZ2dhYmxlc1tzdGF0ZS5jcml0aWNhbC5kcmFnZ2FibGUuaWRdO1xuICBjb25zdCBuZXdJbXBhY3QgPSBmb3JjZWRJbXBhY3QgfHwgZ2V0RHJhZ0ltcGFjdCh7XG4gICAgcGFnZU9mZnNldDogcGFnZS5vZmZzZXQsXG4gICAgZHJhZ2dhYmxlLFxuICAgIGRyYWdnYWJsZXM6IGRpbWVuc2lvbnMuZHJhZ2dhYmxlcyxcbiAgICBkcm9wcGFibGVzOiBkaW1lbnNpb25zLmRyb3BwYWJsZXMsXG4gICAgcHJldmlvdXNJbXBhY3Q6IHN0YXRlLmltcGFjdCxcbiAgICB2aWV3cG9ydCxcbiAgICBhZnRlckNyaXRpY2FsOiBzdGF0ZS5hZnRlckNyaXRpY2FsXG4gIH0pO1xuICBjb25zdCB3aXRoVXBkYXRlZFBsYWNlaG9sZGVycyA9IHJlY29tcHV0ZVBsYWNlaG9sZGVycyh7XG4gICAgZHJhZ2dhYmxlLFxuICAgIGltcGFjdDogbmV3SW1wYWN0LFxuICAgIHByZXZpb3VzSW1wYWN0OiBzdGF0ZS5pbXBhY3QsXG4gICAgZHJhZ2dhYmxlczogZGltZW5zaW9ucy5kcmFnZ2FibGVzLFxuICAgIGRyb3BwYWJsZXM6IGRpbWVuc2lvbnMuZHJvcHBhYmxlc1xuICB9KTtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGN1cnJlbnQsXG4gICAgZGltZW5zaW9uczoge1xuICAgICAgZHJhZ2dhYmxlczogZGltZW5zaW9ucy5kcmFnZ2FibGVzLFxuICAgICAgZHJvcHBhYmxlczogd2l0aFVwZGF0ZWRQbGFjZWhvbGRlcnNcbiAgICB9LFxuICAgIGltcGFjdDogbmV3SW1wYWN0LFxuICAgIHZpZXdwb3J0LFxuICAgIHNjcm9sbEp1bXBSZXF1ZXN0OiBzY3JvbGxKdW1wUmVxdWVzdCB8fCBudWxsLFxuICAgIGZvcmNlU2hvdWxkQW5pbWF0ZTogc2Nyb2xsSnVtcFJlcXVlc3QgPyBmYWxzZSA6IG51bGxcbiAgfTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG5mdW5jdGlvbiBnZXREcmFnZ2FibGVzKGlkcywgZHJhZ2dhYmxlcykge1xuICByZXR1cm4gaWRzLm1hcChpZCA9PiBkcmFnZ2FibGVzW2lkXSk7XG59XG52YXIgcmVjb21wdXRlID0gKCh7XG4gIGltcGFjdCxcbiAgdmlld3BvcnQsXG4gIGRyYWdnYWJsZXMsXG4gIGRlc3RpbmF0aW9uLFxuICBmb3JjZVNob3VsZEFuaW1hdGVcbn0pID0+IHtcbiAgY29uc3QgbGFzdCA9IGltcGFjdC5kaXNwbGFjZWQ7XG4gIGNvbnN0IGFmdGVyRHJhZ2dpbmcgPSBnZXREcmFnZ2FibGVzKGxhc3QuYWxsLCBkcmFnZ2FibGVzKTtcbiAgY29uc3QgZGlzcGxhY2VkID0gZ2V0RGlzcGxhY2VtZW50R3JvdXBzKHtcbiAgICBhZnRlckRyYWdnaW5nLFxuICAgIGRlc3RpbmF0aW9uLFxuICAgIGRpc3BsYWNlZEJ5OiBpbXBhY3QuZGlzcGxhY2VkQnksXG4gICAgdmlld3BvcnQ6IHZpZXdwb3J0LmZyYW1lLFxuICAgIGZvcmNlU2hvdWxkQW5pbWF0ZSxcbiAgICBsYXN0XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIC4uLmltcGFjdCxcbiAgICBkaXNwbGFjZWRcbiAgfTtcbn0pO1xuXG52YXIgZ2V0Q2xpZW50Qm9yZGVyQm94Q2VudGVyID0gKCh7XG4gIGltcGFjdCxcbiAgZHJhZ2dhYmxlLFxuICBkcm9wcGFibGUsXG4gIGRyYWdnYWJsZXMsXG4gIHZpZXdwb3J0LFxuICBhZnRlckNyaXRpY2FsXG59KSA9PiB7XG4gIGNvbnN0IHBhZ2VCb3JkZXJCb3hDZW50ZXIgPSBnZXRQYWdlQm9yZGVyQm94Q2VudGVyRnJvbUltcGFjdCh7XG4gICAgaW1wYWN0LFxuICAgIGRyYWdnYWJsZSxcbiAgICBkcmFnZ2FibGVzLFxuICAgIGRyb3BwYWJsZSxcbiAgICBhZnRlckNyaXRpY2FsXG4gIH0pO1xuICByZXR1cm4gZ2V0Q2xpZW50RnJvbVBhZ2VCb3JkZXJCb3hDZW50ZXIoe1xuICAgIHBhZ2VCb3JkZXJCb3hDZW50ZXIsXG4gICAgZHJhZ2dhYmxlLFxuICAgIHZpZXdwb3J0XG4gIH0pO1xufSk7XG5cbnZhciByZWZyZXNoU25hcCA9ICgoe1xuICBzdGF0ZSxcbiAgZGltZW5zaW9uczogZm9yY2VkRGltZW5zaW9ucyxcbiAgdmlld3BvcnQ6IGZvcmNlZFZpZXdwb3J0XG59KSA9PiB7XG4gICEoc3RhdGUubW92ZW1lbnRNb2RlID09PSAnU05BUCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIGNvbnN0IG5lZWRzVmlzaWJpbGl0eUNoZWNrID0gc3RhdGUuaW1wYWN0O1xuICBjb25zdCB2aWV3cG9ydCA9IGZvcmNlZFZpZXdwb3J0IHx8IHN0YXRlLnZpZXdwb3J0O1xuICBjb25zdCBkaW1lbnNpb25zID0gZm9yY2VkRGltZW5zaW9ucyB8fCBzdGF0ZS5kaW1lbnNpb25zO1xuICBjb25zdCB7XG4gICAgZHJhZ2dhYmxlcyxcbiAgICBkcm9wcGFibGVzXG4gIH0gPSBkaW1lbnNpb25zO1xuICBjb25zdCBkcmFnZ2FibGUgPSBkcmFnZ2FibGVzW3N0YXRlLmNyaXRpY2FsLmRyYWdnYWJsZS5pZF07XG4gIGNvbnN0IGlzT3ZlciA9IHdoYXRJc0RyYWdnZWRPdmVyKG5lZWRzVmlzaWJpbGl0eUNoZWNrKTtcbiAgIWlzT3ZlciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ011c3QgYmUgb3ZlciBhIGRlc3RpbmF0aW9uIGluIFNOQVAgbW92ZW1lbnQgbW9kZScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgY29uc3QgZGVzdGluYXRpb24gPSBkcm9wcGFibGVzW2lzT3Zlcl07XG4gIGNvbnN0IGltcGFjdCA9IHJlY29tcHV0ZSh7XG4gICAgaW1wYWN0OiBuZWVkc1Zpc2liaWxpdHlDaGVjayxcbiAgICB2aWV3cG9ydCxcbiAgICBkZXN0aW5hdGlvbixcbiAgICBkcmFnZ2FibGVzXG4gIH0pO1xuICBjb25zdCBjbGllbnRTZWxlY3Rpb24gPSBnZXRDbGllbnRCb3JkZXJCb3hDZW50ZXIoe1xuICAgIGltcGFjdCxcbiAgICBkcmFnZ2FibGUsXG4gICAgZHJvcHBhYmxlOiBkZXN0aW5hdGlvbixcbiAgICBkcmFnZ2FibGVzLFxuICAgIHZpZXdwb3J0LFxuICAgIGFmdGVyQ3JpdGljYWw6IHN0YXRlLmFmdGVyQ3JpdGljYWxcbiAgfSk7XG4gIHJldHVybiB1cGRhdGUoe1xuICAgIGltcGFjdCxcbiAgICBjbGllbnRTZWxlY3Rpb24sXG4gICAgc3RhdGUsXG4gICAgZGltZW5zaW9ucyxcbiAgICB2aWV3cG9ydFxuICB9KTtcbn0pO1xuXG52YXIgZ2V0SG9tZUxvY2F0aW9uID0gKGRlc2NyaXB0b3IgPT4gKHtcbiAgaW5kZXg6IGRlc2NyaXB0b3IuaW5kZXgsXG4gIGRyb3BwYWJsZUlkOiBkZXNjcmlwdG9yLmRyb3BwYWJsZUlkXG59KSk7XG5cbnZhciBnZXRMaWZ0RWZmZWN0ID0gKCh7XG4gIGRyYWdnYWJsZSxcbiAgaG9tZSxcbiAgZHJhZ2dhYmxlcyxcbiAgdmlld3BvcnRcbn0pID0+IHtcbiAgY29uc3QgZGlzcGxhY2VkQnkgPSBnZXREaXNwbGFjZWRCeShob21lLmF4aXMsIGRyYWdnYWJsZS5kaXNwbGFjZUJ5KTtcbiAgY29uc3QgaW5zaWRlSG9tZSA9IGdldERyYWdnYWJsZXNJbnNpZGVEcm9wcGFibGUoaG9tZS5kZXNjcmlwdG9yLmlkLCBkcmFnZ2FibGVzKTtcbiAgY29uc3QgcmF3SW5kZXggPSBpbnNpZGVIb21lLmluZGV4T2YoZHJhZ2dhYmxlKTtcbiAgIShyYXdJbmRleCAhPT0gLTEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgZHJhZ2dhYmxlIHRvIGJlIGluc2lkZSBob21lIGxpc3QnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIGNvbnN0IGFmdGVyRHJhZ2dpbmcgPSBpbnNpZGVIb21lLnNsaWNlKHJhd0luZGV4ICsgMSk7XG4gIGNvbnN0IGVmZmVjdGVkID0gYWZ0ZXJEcmFnZ2luZy5yZWR1Y2UoKHByZXZpb3VzLCBpdGVtKSA9PiB7XG4gICAgcHJldmlvdXNbaXRlbS5kZXNjcmlwdG9yLmlkXSA9IHRydWU7XG4gICAgcmV0dXJuIHByZXZpb3VzO1xuICB9LCB7fSk7XG4gIGNvbnN0IGFmdGVyQ3JpdGljYWwgPSB7XG4gICAgaW5WaXJ0dWFsTGlzdDogaG9tZS5kZXNjcmlwdG9yLm1vZGUgPT09ICd2aXJ0dWFsJyxcbiAgICBkaXNwbGFjZWRCeSxcbiAgICBlZmZlY3RlZFxuICB9O1xuICBjb25zdCBkaXNwbGFjZWQgPSBnZXREaXNwbGFjZW1lbnRHcm91cHMoe1xuICAgIGFmdGVyRHJhZ2dpbmcsXG4gICAgZGVzdGluYXRpb246IGhvbWUsXG4gICAgZGlzcGxhY2VkQnksXG4gICAgbGFzdDogbnVsbCxcbiAgICB2aWV3cG9ydDogdmlld3BvcnQuZnJhbWUsXG4gICAgZm9yY2VTaG91bGRBbmltYXRlOiBmYWxzZVxuICB9KTtcbiAgY29uc3QgaW1wYWN0ID0ge1xuICAgIGRpc3BsYWNlZCxcbiAgICBkaXNwbGFjZWRCeSxcbiAgICBhdDoge1xuICAgICAgdHlwZTogJ1JFT1JERVInLFxuICAgICAgZGVzdGluYXRpb246IGdldEhvbWVMb2NhdGlvbihkcmFnZ2FibGUuZGVzY3JpcHRvcilcbiAgICB9XG4gIH07XG4gIHJldHVybiB7XG4gICAgaW1wYWN0LFxuICAgIGFmdGVyQ3JpdGljYWxcbiAgfTtcbn0pO1xuXG52YXIgcGF0Y2hEaW1lbnNpb25NYXAgPSAoKGRpbWVuc2lvbnMsIHVwZGF0ZWQpID0+ICh7XG4gIGRyYWdnYWJsZXM6IGRpbWVuc2lvbnMuZHJhZ2dhYmxlcyxcbiAgZHJvcHBhYmxlczogcGF0Y2hEcm9wcGFibGVNYXAoZGltZW5zaW9ucy5kcm9wcGFibGVzLCB1cGRhdGVkKVxufSkpO1xuXG5jb25zdCBzdGFydCA9IGtleSA9PiB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufTtcbmNvbnN0IGZpbmlzaCA9IGtleSA9PiB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufTtcblxudmFyIG9mZnNldERyYWdnYWJsZSA9ICgoe1xuICBkcmFnZ2FibGUsXG4gIG9mZnNldDogb2Zmc2V0JDEsXG4gIGluaXRpYWxXaW5kb3dTY3JvbGxcbn0pID0+IHtcbiAgY29uc3QgY2xpZW50ID0gb2Zmc2V0KGRyYWdnYWJsZS5jbGllbnQsIG9mZnNldCQxKTtcbiAgY29uc3QgcGFnZSA9IHdpdGhTY3JvbGwoY2xpZW50LCBpbml0aWFsV2luZG93U2Nyb2xsKTtcbiAgY29uc3QgbW92ZWQgPSB7XG4gICAgLi4uZHJhZ2dhYmxlLFxuICAgIHBsYWNlaG9sZGVyOiB7XG4gICAgICAuLi5kcmFnZ2FibGUucGxhY2Vob2xkZXIsXG4gICAgICBjbGllbnRcbiAgICB9LFxuICAgIGNsaWVudCxcbiAgICBwYWdlXG4gIH07XG4gIHJldHVybiBtb3ZlZDtcbn0pO1xuXG52YXIgZ2V0RnJhbWUgPSAoZHJvcHBhYmxlID0+IHtcbiAgY29uc3QgZnJhbWUgPSBkcm9wcGFibGUuZnJhbWU7XG4gICFmcmFtZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIERyb3BwYWJsZSB0byBoYXZlIGEgZnJhbWUnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHJldHVybiBmcmFtZTtcbn0pO1xuXG52YXIgYWRqdXN0QWRkaXRpb25zRm9yU2Nyb2xsQ2hhbmdlcyA9ICgoe1xuICBhZGRpdGlvbnMsXG4gIHVwZGF0ZWREcm9wcGFibGVzLFxuICB2aWV3cG9ydFxufSkgPT4ge1xuICBjb25zdCB3aW5kb3dTY3JvbGxDaGFuZ2UgPSB2aWV3cG9ydC5zY3JvbGwuZGlmZi52YWx1ZTtcbiAgcmV0dXJuIGFkZGl0aW9ucy5tYXAoZHJhZ2dhYmxlID0+IHtcbiAgICBjb25zdCBkcm9wcGFibGVJZCA9IGRyYWdnYWJsZS5kZXNjcmlwdG9yLmRyb3BwYWJsZUlkO1xuICAgIGNvbnN0IG1vZGlmaWVkID0gdXBkYXRlZERyb3BwYWJsZXNbZHJvcHBhYmxlSWRdO1xuICAgIGNvbnN0IGZyYW1lID0gZ2V0RnJhbWUobW9kaWZpZWQpO1xuICAgIGNvbnN0IGRyb3BwYWJsZVNjcm9sbENoYW5nZSA9IGZyYW1lLnNjcm9sbC5kaWZmLnZhbHVlO1xuICAgIGNvbnN0IHRvdGFsQ2hhbmdlID0gYWRkKHdpbmRvd1Njcm9sbENoYW5nZSwgZHJvcHBhYmxlU2Nyb2xsQ2hhbmdlKTtcbiAgICBjb25zdCBtb3ZlZCA9IG9mZnNldERyYWdnYWJsZSh7XG4gICAgICBkcmFnZ2FibGUsXG4gICAgICBvZmZzZXQ6IHRvdGFsQ2hhbmdlLFxuICAgICAgaW5pdGlhbFdpbmRvd1Njcm9sbDogdmlld3BvcnQuc2Nyb2xsLmluaXRpYWxcbiAgICB9KTtcbiAgICByZXR1cm4gbW92ZWQ7XG4gIH0pO1xufSk7XG5cbmNvbnN0IHRpbWluZ3NLZXkgPSAnUHJvY2Vzc2luZyBkeW5hbWljIGNoYW5nZXMnO1xudmFyIHB1Ymxpc2hXaGlsZURyYWdnaW5nSW5WaXJ0dWFsID0gKCh7XG4gIHN0YXRlLFxuICBwdWJsaXNoZWRcbn0pID0+IHtcbiAgc3RhcnQodGltaW5nc0tleSk7XG4gIGNvbnN0IHdpdGhTY3JvbGxDaGFuZ2UgPSBwdWJsaXNoZWQubW9kaWZpZWQubWFwKHVwZGF0ZSA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBzdGF0ZS5kaW1lbnNpb25zLmRyb3BwYWJsZXNbdXBkYXRlLmRyb3BwYWJsZUlkXTtcbiAgICBjb25zdCBzY3JvbGxlZCA9IHNjcm9sbERyb3BwYWJsZShleGlzdGluZywgdXBkYXRlLnNjcm9sbCk7XG4gICAgcmV0dXJuIHNjcm9sbGVkO1xuICB9KTtcbiAgY29uc3QgZHJvcHBhYmxlcyA9IHtcbiAgICAuLi5zdGF0ZS5kaW1lbnNpb25zLmRyb3BwYWJsZXMsXG4gICAgLi4udG9Ecm9wcGFibGVNYXAod2l0aFNjcm9sbENoYW5nZSlcbiAgfTtcbiAgY29uc3QgdXBkYXRlZEFkZGl0aW9ucyA9IHRvRHJhZ2dhYmxlTWFwKGFkanVzdEFkZGl0aW9uc0ZvclNjcm9sbENoYW5nZXMoe1xuICAgIGFkZGl0aW9uczogcHVibGlzaGVkLmFkZGl0aW9ucyxcbiAgICB1cGRhdGVkRHJvcHBhYmxlczogZHJvcHBhYmxlcyxcbiAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnRcbiAgfSkpO1xuICBjb25zdCBkcmFnZ2FibGVzID0ge1xuICAgIC4uLnN0YXRlLmRpbWVuc2lvbnMuZHJhZ2dhYmxlcyxcbiAgICAuLi51cGRhdGVkQWRkaXRpb25zXG4gIH07XG4gIHB1Ymxpc2hlZC5yZW1vdmFscy5mb3JFYWNoKGlkID0+IHtcbiAgICBkZWxldGUgZHJhZ2dhYmxlc1tpZF07XG4gIH0pO1xuICBjb25zdCBkaW1lbnNpb25zID0ge1xuICAgIGRyb3BwYWJsZXMsXG4gICAgZHJhZ2dhYmxlc1xuICB9O1xuICBjb25zdCB3YXNPdmVySWQgPSB3aGF0SXNEcmFnZ2VkT3ZlcihzdGF0ZS5pbXBhY3QpO1xuICBjb25zdCB3YXNPdmVyID0gd2FzT3ZlcklkID8gZGltZW5zaW9ucy5kcm9wcGFibGVzW3dhc092ZXJJZF0gOiBudWxsO1xuICBjb25zdCBkcmFnZ2FibGUgPSBkaW1lbnNpb25zLmRyYWdnYWJsZXNbc3RhdGUuY3JpdGljYWwuZHJhZ2dhYmxlLmlkXTtcbiAgY29uc3QgaG9tZSA9IGRpbWVuc2lvbnMuZHJvcHBhYmxlc1tzdGF0ZS5jcml0aWNhbC5kcm9wcGFibGUuaWRdO1xuICBjb25zdCB7XG4gICAgaW1wYWN0OiBvbkxpZnRJbXBhY3QsXG4gICAgYWZ0ZXJDcml0aWNhbFxuICB9ID0gZ2V0TGlmdEVmZmVjdCh7XG4gICAgZHJhZ2dhYmxlLFxuICAgIGhvbWUsXG4gICAgZHJhZ2dhYmxlcyxcbiAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnRcbiAgfSk7XG4gIGNvbnN0IHByZXZpb3VzSW1wYWN0ID0gd2FzT3ZlciAmJiB3YXNPdmVyLmlzQ29tYmluZUVuYWJsZWQgPyBzdGF0ZS5pbXBhY3QgOiBvbkxpZnRJbXBhY3Q7XG4gIGNvbnN0IGltcGFjdCA9IGdldERyYWdJbXBhY3Qoe1xuICAgIHBhZ2VPZmZzZXQ6IHN0YXRlLmN1cnJlbnQucGFnZS5vZmZzZXQsXG4gICAgZHJhZ2dhYmxlOiBkaW1lbnNpb25zLmRyYWdnYWJsZXNbc3RhdGUuY3JpdGljYWwuZHJhZ2dhYmxlLmlkXSxcbiAgICBkcmFnZ2FibGVzOiBkaW1lbnNpb25zLmRyYWdnYWJsZXMsXG4gICAgZHJvcHBhYmxlczogZGltZW5zaW9ucy5kcm9wcGFibGVzLFxuICAgIHByZXZpb3VzSW1wYWN0LFxuICAgIHZpZXdwb3J0OiBzdGF0ZS52aWV3cG9ydCxcbiAgICBhZnRlckNyaXRpY2FsXG4gIH0pO1xuICBmaW5pc2godGltaW5nc0tleSk7XG4gIGNvbnN0IGRyYWdnaW5nU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgcGhhc2U6ICdEUkFHR0lORycsXG4gICAgaW1wYWN0LFxuICAgIG9uTGlmdEltcGFjdCxcbiAgICBkaW1lbnNpb25zLFxuICAgIGFmdGVyQ3JpdGljYWwsXG4gICAgZm9yY2VTaG91bGRBbmltYXRlOiBmYWxzZVxuICB9O1xuICBpZiAoc3RhdGUucGhhc2UgPT09ICdDT0xMRUNUSU5HJykge1xuICAgIHJldHVybiBkcmFnZ2luZ1N0YXRlO1xuICB9XG4gIGNvbnN0IGRyb3BQZW5kaW5nID0ge1xuICAgIC4uLmRyYWdnaW5nU3RhdGUsXG4gICAgcGhhc2U6ICdEUk9QX1BFTkRJTkcnLFxuICAgIHJlYXNvbjogc3RhdGUucmVhc29uLFxuICAgIGlzV2FpdGluZzogZmFsc2VcbiAgfTtcbiAgcmV0dXJuIGRyb3BQZW5kaW5nO1xufSk7XG5cbmNvbnN0IGlzU25hcHBpbmcgPSBzdGF0ZSA9PiBzdGF0ZS5tb3ZlbWVudE1vZGUgPT09ICdTTkFQJztcbmNvbnN0IHBvc3REcm9wcGFibGVDaGFuZ2UgPSAoc3RhdGUsIHVwZGF0ZWQsIGlzRW5hYmxlZENoYW5naW5nKSA9PiB7XG4gIGNvbnN0IGRpbWVuc2lvbnMgPSBwYXRjaERpbWVuc2lvbk1hcChzdGF0ZS5kaW1lbnNpb25zLCB1cGRhdGVkKTtcbiAgaWYgKCFpc1NuYXBwaW5nKHN0YXRlKSB8fCBpc0VuYWJsZWRDaGFuZ2luZykge1xuICAgIHJldHVybiB1cGRhdGUoe1xuICAgICAgc3RhdGUsXG4gICAgICBkaW1lbnNpb25zXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHJlZnJlc2hTbmFwKHtcbiAgICBzdGF0ZSxcbiAgICBkaW1lbnNpb25zXG4gIH0pO1xufTtcbmZ1bmN0aW9uIHJlbW92ZVNjcm9sbEp1bXBSZXF1ZXN0KHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5pc0RyYWdnaW5nICYmIHN0YXRlLm1vdmVtZW50TW9kZSA9PT0gJ1NOQVAnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgc2Nyb2xsSnVtcFJlcXVlc3Q6IG51bGxcbiAgICB9O1xuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cbmNvbnN0IGlkbGUkMiA9IHtcbiAgcGhhc2U6ICdJRExFJyxcbiAgY29tcGxldGVkOiBudWxsLFxuICBzaG91bGRGbHVzaDogZmFsc2Vcbn07XG52YXIgcmVkdWNlciA9ICgoc3RhdGUgPSBpZGxlJDIsIGFjdGlvbikgPT4ge1xuICBpZiAoYWN0aW9uLnR5cGUgPT09ICdGTFVTSCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uaWRsZSQyLFxuICAgICAgc2hvdWxkRmx1c2g6IHRydWVcbiAgICB9O1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gJ0lOSVRJQUxfUFVCTElTSCcpIHtcbiAgICAhKHN0YXRlLnBoYXNlID09PSAnSURMRScpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnSU5JVElBTF9QVUJMSVNIIG11c3QgY29tZSBhZnRlciBhIElETEUgcGhhc2UnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3Qge1xuICAgICAgY3JpdGljYWwsXG4gICAgICBjbGllbnRTZWxlY3Rpb24sXG4gICAgICB2aWV3cG9ydCxcbiAgICAgIGRpbWVuc2lvbnMsXG4gICAgICBtb3ZlbWVudE1vZGVcbiAgICB9ID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgY29uc3QgZHJhZ2dhYmxlID0gZGltZW5zaW9ucy5kcmFnZ2FibGVzW2NyaXRpY2FsLmRyYWdnYWJsZS5pZF07XG4gICAgY29uc3QgaG9tZSA9IGRpbWVuc2lvbnMuZHJvcHBhYmxlc1tjcml0aWNhbC5kcm9wcGFibGUuaWRdO1xuICAgIGNvbnN0IGNsaWVudCA9IHtcbiAgICAgIHNlbGVjdGlvbjogY2xpZW50U2VsZWN0aW9uLFxuICAgICAgYm9yZGVyQm94Q2VudGVyOiBkcmFnZ2FibGUuY2xpZW50LmJvcmRlckJveC5jZW50ZXIsXG4gICAgICBvZmZzZXQ6IG9yaWdpblxuICAgIH07XG4gICAgY29uc3QgaW5pdGlhbCA9IHtcbiAgICAgIGNsaWVudCxcbiAgICAgIHBhZ2U6IHtcbiAgICAgICAgc2VsZWN0aW9uOiBhZGQoY2xpZW50LnNlbGVjdGlvbiwgdmlld3BvcnQuc2Nyb2xsLmluaXRpYWwpLFxuICAgICAgICBib3JkZXJCb3hDZW50ZXI6IGFkZChjbGllbnQuc2VsZWN0aW9uLCB2aWV3cG9ydC5zY3JvbGwuaW5pdGlhbCksXG4gICAgICAgIG9mZnNldDogYWRkKGNsaWVudC5zZWxlY3Rpb24sIHZpZXdwb3J0LnNjcm9sbC5kaWZmLnZhbHVlKVxuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgaXNXaW5kb3dTY3JvbGxBbGxvd2VkID0gdG9Ecm9wcGFibGVMaXN0KGRpbWVuc2lvbnMuZHJvcHBhYmxlcykuZXZlcnkoaXRlbSA9PiAhaXRlbS5pc0ZpeGVkT25QYWdlKTtcbiAgICBjb25zdCB7XG4gICAgICBpbXBhY3QsXG4gICAgICBhZnRlckNyaXRpY2FsXG4gICAgfSA9IGdldExpZnRFZmZlY3Qoe1xuICAgICAgZHJhZ2dhYmxlLFxuICAgICAgaG9tZSxcbiAgICAgIGRyYWdnYWJsZXM6IGRpbWVuc2lvbnMuZHJhZ2dhYmxlcyxcbiAgICAgIHZpZXdwb3J0XG4gICAgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgcGhhc2U6ICdEUkFHR0lORycsXG4gICAgICBpc0RyYWdnaW5nOiB0cnVlLFxuICAgICAgY3JpdGljYWwsXG4gICAgICBtb3ZlbWVudE1vZGUsXG4gICAgICBkaW1lbnNpb25zLFxuICAgICAgaW5pdGlhbCxcbiAgICAgIGN1cnJlbnQ6IGluaXRpYWwsXG4gICAgICBpc1dpbmRvd1Njcm9sbEFsbG93ZWQsXG4gICAgICBpbXBhY3QsXG4gICAgICBhZnRlckNyaXRpY2FsLFxuICAgICAgb25MaWZ0SW1wYWN0OiBpbXBhY3QsXG4gICAgICB2aWV3cG9ydCxcbiAgICAgIHNjcm9sbEp1bXBSZXF1ZXN0OiBudWxsLFxuICAgICAgZm9yY2VTaG91bGRBbmltYXRlOiBudWxsXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gJ0NPTExFQ1RJT05fU1RBUlRJTkcnKSB7XG4gICAgaWYgKHN0YXRlLnBoYXNlID09PSAnQ09MTEVDVElORycgfHwgc3RhdGUucGhhc2UgPT09ICdEUk9QX1BFTkRJTkcnKSB7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICAgICEoc3RhdGUucGhhc2UgPT09ICdEUkFHR0lORycpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgQ29sbGVjdGlvbiBjYW5ub3Qgc3RhcnQgZnJvbSBwaGFzZSAke3N0YXRlLnBoYXNlfWApIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHBoYXNlOiAnQ09MTEVDVElORydcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKGFjdGlvbi50eXBlID09PSAnUFVCTElTSF9XSElMRV9EUkFHR0lORycpIHtcbiAgICAhKHN0YXRlLnBoYXNlID09PSAnQ09MTEVDVElORycgfHwgc3RhdGUucGhhc2UgPT09ICdEUk9QX1BFTkRJTkcnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgYFVuZXhwZWN0ZWQgJHthY3Rpb24udHlwZX0gcmVjZWl2ZWQgaW4gcGhhc2UgJHtzdGF0ZS5waGFzZX1gKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIHB1Ymxpc2hXaGlsZURyYWdnaW5nSW5WaXJ0dWFsKHtcbiAgICAgIHN0YXRlLFxuICAgICAgcHVibGlzaGVkOiBhY3Rpb24ucGF5bG9hZFxuICAgIH0pO1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gJ01PVkUnKSB7XG4gICAgaWYgKHN0YXRlLnBoYXNlID09PSAnRFJPUF9QRU5ESU5HJykge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgICAhaXNNb3ZlbWVudEFsbG93ZWQoc3RhdGUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgJHthY3Rpb24udHlwZX0gbm90IHBlcm1pdHRlZCBpbiBwaGFzZSAke3N0YXRlLnBoYXNlfWApIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjb25zdCB7XG4gICAgICBjbGllbnQ6IGNsaWVudFNlbGVjdGlvblxuICAgIH0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgICBpZiAoaXNFcXVhbCQxKGNsaWVudFNlbGVjdGlvbiwgc3RhdGUuY3VycmVudC5jbGllbnQuc2VsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlKHtcbiAgICAgIHN0YXRlLFxuICAgICAgY2xpZW50U2VsZWN0aW9uLFxuICAgICAgaW1wYWN0OiBpc1NuYXBwaW5nKHN0YXRlKSA/IHN0YXRlLmltcGFjdCA6IG51bGxcbiAgICB9KTtcbiAgfVxuICBpZiAoYWN0aW9uLnR5cGUgPT09ICdVUERBVEVfRFJPUFBBQkxFX1NDUk9MTCcpIHtcbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdEUk9QX1BFTkRJTkcnKSB7XG4gICAgICByZXR1cm4gcmVtb3ZlU2Nyb2xsSnVtcFJlcXVlc3Qoc3RhdGUpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdDT0xMRUNUSU5HJykge1xuICAgICAgcmV0dXJuIHJlbW92ZVNjcm9sbEp1bXBSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG4gICAgIWlzTW92ZW1lbnRBbGxvd2VkKHN0YXRlKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgYCR7YWN0aW9uLnR5cGV9IG5vdCBwZXJtaXR0ZWQgaW4gcGhhc2UgJHtzdGF0ZS5waGFzZX1gKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3Qge1xuICAgICAgaWQsXG4gICAgICBuZXdTY3JvbGxcbiAgICB9ID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgY29uc3QgdGFyZ2V0ID0gc3RhdGUuZGltZW5zaW9ucy5kcm9wcGFibGVzW2lkXTtcbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgICBjb25zdCBzY3JvbGxlZCA9IHNjcm9sbERyb3BwYWJsZSh0YXJnZXQsIG5ld1Njcm9sbCk7XG4gICAgcmV0dXJuIHBvc3REcm9wcGFibGVDaGFuZ2Uoc3RhdGUsIHNjcm9sbGVkLCBmYWxzZSk7XG4gIH1cbiAgaWYgKGFjdGlvbi50eXBlID09PSAnVVBEQVRFX0RST1BQQUJMRV9JU19FTkFCTEVEJykge1xuICAgIGlmIChzdGF0ZS5waGFzZSA9PT0gJ0RST1BfUEVORElORycpIHtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gICAgIWlzTW92ZW1lbnRBbGxvd2VkKHN0YXRlKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgYEF0dGVtcHRpbmcgdG8gbW92ZSBpbiBhbiB1bnN1cHBvcnRlZCBwaGFzZSAke3N0YXRlLnBoYXNlfWApIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjb25zdCB7XG4gICAgICBpZCxcbiAgICAgIGlzRW5hYmxlZFxuICAgIH0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgICBjb25zdCB0YXJnZXQgPSBzdGF0ZS5kaW1lbnNpb25zLmRyb3BwYWJsZXNbaWRdO1xuICAgICF0YXJnZXQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGBDYW5ub3QgZmluZCBEcm9wcGFibGVbaWQ6ICR7aWR9XSB0byB0b2dnbGUgaXRzIGVuYWJsZWQgc3RhdGVgKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgISh0YXJnZXQuaXNFbmFibGVkICE9PSBpc0VuYWJsZWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgVHJ5aW5nIHRvIHNldCBkcm9wcGFibGUgaXNFbmFibGVkIHRvICR7U3RyaW5nKGlzRW5hYmxlZCl9XG4gICAgICBidXQgaXQgaXMgYWxyZWFkeSAke1N0cmluZyh0YXJnZXQuaXNFbmFibGVkKX1gKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAgIC4uLnRhcmdldCxcbiAgICAgIGlzRW5hYmxlZFxuICAgIH07XG4gICAgcmV0dXJuIHBvc3REcm9wcGFibGVDaGFuZ2Uoc3RhdGUsIHVwZGF0ZWQsIHRydWUpO1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gJ1VQREFURV9EUk9QUEFCTEVfSVNfQ09NQklORV9FTkFCTEVEJykge1xuICAgIGlmIChzdGF0ZS5waGFzZSA9PT0gJ0RST1BfUEVORElORycpIHtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gICAgIWlzTW92ZW1lbnRBbGxvd2VkKHN0YXRlKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgYEF0dGVtcHRpbmcgdG8gbW92ZSBpbiBhbiB1bnN1cHBvcnRlZCBwaGFzZSAke3N0YXRlLnBoYXNlfWApIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjb25zdCB7XG4gICAgICBpZCxcbiAgICAgIGlzQ29tYmluZUVuYWJsZWRcbiAgICB9ID0gYWN0aW9uLnBheWxvYWQ7XG4gICAgY29uc3QgdGFyZ2V0ID0gc3RhdGUuZGltZW5zaW9ucy5kcm9wcGFibGVzW2lkXTtcbiAgICAhdGFyZ2V0ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgQ2Fubm90IGZpbmQgRHJvcHBhYmxlW2lkOiAke2lkfV0gdG8gdG9nZ2xlIGl0cyBpc0NvbWJpbmVFbmFibGVkIHN0YXRlYCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgICEodGFyZ2V0LmlzQ29tYmluZUVuYWJsZWQgIT09IGlzQ29tYmluZUVuYWJsZWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgVHJ5aW5nIHRvIHNldCBkcm9wcGFibGUgaXNDb21iaW5lRW5hYmxlZCB0byAke1N0cmluZyhpc0NvbWJpbmVFbmFibGVkKX1cbiAgICAgIGJ1dCBpdCBpcyBhbHJlYWR5ICR7U3RyaW5nKHRhcmdldC5pc0NvbWJpbmVFbmFibGVkKX1gKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAgIC4uLnRhcmdldCxcbiAgICAgIGlzQ29tYmluZUVuYWJsZWRcbiAgICB9O1xuICAgIHJldHVybiBwb3N0RHJvcHBhYmxlQ2hhbmdlKHN0YXRlLCB1cGRhdGVkLCB0cnVlKTtcbiAgfVxuICBpZiAoYWN0aW9uLnR5cGUgPT09ICdNT1ZFX0JZX1dJTkRPV19TQ1JPTEwnKSB7XG4gICAgaWYgKHN0YXRlLnBoYXNlID09PSAnRFJPUF9QRU5ESU5HJyB8fCBzdGF0ZS5waGFzZSA9PT0gJ0RST1BfQU5JTUFUSU5HJykge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgICAhaXNNb3ZlbWVudEFsbG93ZWQoc3RhdGUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgQ2Fubm90IG1vdmUgYnkgd2luZG93IGluIHBoYXNlICR7c3RhdGUucGhhc2V9YCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgICFzdGF0ZS5pc1dpbmRvd1Njcm9sbEFsbG93ZWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdXaW5kb3cgc2Nyb2xsaW5nIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIGZvciBmaXhlZCBsaXN0cycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjb25zdCBuZXdTY3JvbGwgPSBhY3Rpb24ucGF5bG9hZC5uZXdTY3JvbGw7XG4gICAgaWYgKGlzRXF1YWwkMShzdGF0ZS52aWV3cG9ydC5zY3JvbGwuY3VycmVudCwgbmV3U2Nyb2xsKSkge1xuICAgICAgcmV0dXJuIHJlbW92ZVNjcm9sbEp1bXBSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG4gICAgY29uc3Qgdmlld3BvcnQgPSBzY3JvbGxWaWV3cG9ydChzdGF0ZS52aWV3cG9ydCwgbmV3U2Nyb2xsKTtcbiAgICBpZiAoaXNTbmFwcGluZyhzdGF0ZSkpIHtcbiAgICAgIHJldHVybiByZWZyZXNoU25hcCh7XG4gICAgICAgIHN0YXRlLFxuICAgICAgICB2aWV3cG9ydFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGUoe1xuICAgICAgc3RhdGUsXG4gICAgICB2aWV3cG9ydFxuICAgIH0pO1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gJ1VQREFURV9WSUVXUE9SVF9NQVhfU0NST0xMJykge1xuICAgIGlmICghaXNNb3ZlbWVudEFsbG93ZWQoc3RhdGUpKSB7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICAgIGNvbnN0IG1heFNjcm9sbCA9IGFjdGlvbi5wYXlsb2FkLm1heFNjcm9sbDtcbiAgICBpZiAoaXNFcXVhbCQxKG1heFNjcm9sbCwgc3RhdGUudmlld3BvcnQuc2Nyb2xsLm1heCkpIHtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gICAgY29uc3Qgd2l0aE1heFNjcm9sbCA9IHtcbiAgICAgIC4uLnN0YXRlLnZpZXdwb3J0LFxuICAgICAgc2Nyb2xsOiB7XG4gICAgICAgIC4uLnN0YXRlLnZpZXdwb3J0LnNjcm9sbCxcbiAgICAgICAgbWF4OiBtYXhTY3JvbGxcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHZpZXdwb3J0OiB3aXRoTWF4U2Nyb2xsXG4gICAgfTtcbiAgfVxuICBpZiAoYWN0aW9uLnR5cGUgPT09ICdNT1ZFX1VQJyB8fCBhY3Rpb24udHlwZSA9PT0gJ01PVkVfRE9XTicgfHwgYWN0aW9uLnR5cGUgPT09ICdNT1ZFX0xFRlQnIHx8IGFjdGlvbi50eXBlID09PSAnTU9WRV9SSUdIVCcpIHtcbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdDT0xMRUNUSU5HJyB8fCBzdGF0ZS5waGFzZSA9PT0gJ0RST1BfUEVORElORycpIHtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gICAgIShzdGF0ZS5waGFzZSA9PT0gJ0RSQUdHSU5HJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGAke2FjdGlvbi50eXBlfSByZWNlaXZlZCB3aGlsZSBub3QgaW4gRFJBR0dJTkcgcGhhc2VgKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3QgcmVzdWx0ID0gbW92ZUluRGlyZWN0aW9uKHtcbiAgICAgIHN0YXRlLFxuICAgICAgdHlwZTogYWN0aW9uLnR5cGVcbiAgICB9KTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlKHtcbiAgICAgIHN0YXRlLFxuICAgICAgaW1wYWN0OiByZXN1bHQuaW1wYWN0LFxuICAgICAgY2xpZW50U2VsZWN0aW9uOiByZXN1bHQuY2xpZW50U2VsZWN0aW9uLFxuICAgICAgc2Nyb2xsSnVtcFJlcXVlc3Q6IHJlc3VsdC5zY3JvbGxKdW1wUmVxdWVzdFxuICAgIH0pO1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gJ0RST1BfUEVORElORycpIHtcbiAgICBjb25zdCByZWFzb24gPSBhY3Rpb24ucGF5bG9hZC5yZWFzb247XG4gICAgIShzdGF0ZS5waGFzZSA9PT0gJ0NPTExFQ1RJTkcnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0NhbiBvbmx5IG1vdmUgaW50byB0aGUgRFJPUF9QRU5ESU5HIHBoYXNlIGZyb20gdGhlIENPTExFQ1RJTkcgcGhhc2UnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHBoYXNlOiAnRFJPUF9QRU5ESU5HJyxcbiAgICAgIGlzV2FpdGluZzogdHJ1ZSxcbiAgICAgIHJlYXNvblxuICAgIH07XG4gICAgcmV0dXJuIG5ld1N0YXRlO1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gJ0RST1BfQU5JTUFURScpIHtcbiAgICBjb25zdCB7XG4gICAgICBjb21wbGV0ZWQsXG4gICAgICBkcm9wRHVyYXRpb24sXG4gICAgICBuZXdIb21lQ2xpZW50T2Zmc2V0XG4gICAgfSA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICEoc3RhdGUucGhhc2UgPT09ICdEUkFHR0lORycgfHwgc3RhdGUucGhhc2UgPT09ICdEUk9QX1BFTkRJTkcnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgYENhbm5vdCBhbmltYXRlIGRyb3AgZnJvbSBwaGFzZSAke3N0YXRlLnBoYXNlfWApIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBwaGFzZTogJ0RST1BfQU5JTUFUSU5HJyxcbiAgICAgIGNvbXBsZXRlZCxcbiAgICAgIGRyb3BEdXJhdGlvbixcbiAgICAgIG5ld0hvbWVDbGllbnRPZmZzZXQsXG4gICAgICBkaW1lbnNpb25zOiBzdGF0ZS5kaW1lbnNpb25zXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gJ0RST1BfQ09NUExFVEUnKSB7XG4gICAgY29uc3Qge1xuICAgICAgY29tcGxldGVkXG4gICAgfSA9IGFjdGlvbi5wYXlsb2FkO1xuICAgIHJldHVybiB7XG4gICAgICBwaGFzZTogJ0lETEUnLFxuICAgICAgY29tcGxldGVkLFxuICAgICAgc2hvdWxkRmx1c2g6IGZhbHNlXG4gICAgfTtcbiAgfVxuICByZXR1cm4gc3RhdGU7XG59KTtcblxuY29uc3QgYmVmb3JlSW5pdGlhbENhcHR1cmUgPSBhcmdzID0+ICh7XG4gIHR5cGU6ICdCRUZPUkVfSU5JVElBTF9DQVBUVVJFJyxcbiAgcGF5bG9hZDogYXJnc1xufSk7XG5jb25zdCBsaWZ0JDEgPSBhcmdzID0+ICh7XG4gIHR5cGU6ICdMSUZUJyxcbiAgcGF5bG9hZDogYXJnc1xufSk7XG5jb25zdCBpbml0aWFsUHVibGlzaCA9IGFyZ3MgPT4gKHtcbiAgdHlwZTogJ0lOSVRJQUxfUFVCTElTSCcsXG4gIHBheWxvYWQ6IGFyZ3Ncbn0pO1xuY29uc3QgcHVibGlzaFdoaWxlRHJhZ2dpbmcgPSBhcmdzID0+ICh7XG4gIHR5cGU6ICdQVUJMSVNIX1dISUxFX0RSQUdHSU5HJyxcbiAgcGF5bG9hZDogYXJnc1xufSk7XG5jb25zdCBjb2xsZWN0aW9uU3RhcnRpbmcgPSAoKSA9PiAoe1xuICB0eXBlOiAnQ09MTEVDVElPTl9TVEFSVElORycsXG4gIHBheWxvYWQ6IG51bGxcbn0pO1xuY29uc3QgdXBkYXRlRHJvcHBhYmxlU2Nyb2xsID0gYXJncyA9PiAoe1xuICB0eXBlOiAnVVBEQVRFX0RST1BQQUJMRV9TQ1JPTEwnLFxuICBwYXlsb2FkOiBhcmdzXG59KTtcbmNvbnN0IHVwZGF0ZURyb3BwYWJsZUlzRW5hYmxlZCA9IGFyZ3MgPT4gKHtcbiAgdHlwZTogJ1VQREFURV9EUk9QUEFCTEVfSVNfRU5BQkxFRCcsXG4gIHBheWxvYWQ6IGFyZ3Ncbn0pO1xuY29uc3QgdXBkYXRlRHJvcHBhYmxlSXNDb21iaW5lRW5hYmxlZCA9IGFyZ3MgPT4gKHtcbiAgdHlwZTogJ1VQREFURV9EUk9QUEFCTEVfSVNfQ09NQklORV9FTkFCTEVEJyxcbiAgcGF5bG9hZDogYXJnc1xufSk7XG5jb25zdCBtb3ZlID0gYXJncyA9PiAoe1xuICB0eXBlOiAnTU9WRScsXG4gIHBheWxvYWQ6IGFyZ3Ncbn0pO1xuY29uc3QgbW92ZUJ5V2luZG93U2Nyb2xsID0gYXJncyA9PiAoe1xuICB0eXBlOiAnTU9WRV9CWV9XSU5ET1dfU0NST0xMJyxcbiAgcGF5bG9hZDogYXJnc1xufSk7XG5jb25zdCB1cGRhdGVWaWV3cG9ydE1heFNjcm9sbCA9IGFyZ3MgPT4gKHtcbiAgdHlwZTogJ1VQREFURV9WSUVXUE9SVF9NQVhfU0NST0xMJyxcbiAgcGF5bG9hZDogYXJnc1xufSk7XG5jb25zdCBtb3ZlVXAgPSAoKSA9PiAoe1xuICB0eXBlOiAnTU9WRV9VUCcsXG4gIHBheWxvYWQ6IG51bGxcbn0pO1xuY29uc3QgbW92ZURvd24gPSAoKSA9PiAoe1xuICB0eXBlOiAnTU9WRV9ET1dOJyxcbiAgcGF5bG9hZDogbnVsbFxufSk7XG5jb25zdCBtb3ZlUmlnaHQgPSAoKSA9PiAoe1xuICB0eXBlOiAnTU9WRV9SSUdIVCcsXG4gIHBheWxvYWQ6IG51bGxcbn0pO1xuY29uc3QgbW92ZUxlZnQgPSAoKSA9PiAoe1xuICB0eXBlOiAnTU9WRV9MRUZUJyxcbiAgcGF5bG9hZDogbnVsbFxufSk7XG5jb25zdCBmbHVzaCA9ICgpID0+ICh7XG4gIHR5cGU6ICdGTFVTSCcsXG4gIHBheWxvYWQ6IG51bGxcbn0pO1xuY29uc3QgYW5pbWF0ZURyb3AgPSBhcmdzID0+ICh7XG4gIHR5cGU6ICdEUk9QX0FOSU1BVEUnLFxuICBwYXlsb2FkOiBhcmdzXG59KTtcbmNvbnN0IGNvbXBsZXRlRHJvcCA9IGFyZ3MgPT4gKHtcbiAgdHlwZTogJ0RST1BfQ09NUExFVEUnLFxuICBwYXlsb2FkOiBhcmdzXG59KTtcbmNvbnN0IGRyb3AkMSA9IGFyZ3MgPT4gKHtcbiAgdHlwZTogJ0RST1AnLFxuICBwYXlsb2FkOiBhcmdzXG59KTtcbmNvbnN0IGRyb3BQZW5kaW5nID0gYXJncyA9PiAoe1xuICB0eXBlOiAnRFJPUF9QRU5ESU5HJyxcbiAgcGF5bG9hZDogYXJnc1xufSk7XG5jb25zdCBkcm9wQW5pbWF0aW9uRmluaXNoZWQgPSAoKSA9PiAoe1xuICB0eXBlOiAnRFJPUF9BTklNQVRJT05fRklOSVNIRUQnLFxuICBwYXlsb2FkOiBudWxsXG59KTtcblxuZnVuY3Rpb24gY2hlY2tJbmRleGVzKGluc2lkZURlc3RpbmF0aW9uKSB7XG4gIGlmIChpbnNpZGVEZXN0aW5hdGlvbi5sZW5ndGggPD0gMSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBpbmRleGVzID0gaW5zaWRlRGVzdGluYXRpb24ubWFwKGQgPT4gZC5kZXNjcmlwdG9yLmluZGV4KTtcbiAgY29uc3QgZXJyb3JzID0ge307XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgaW5kZXhlcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBpbmRleGVzW2ldO1xuICAgIGNvbnN0IHByZXZpb3VzID0gaW5kZXhlc1tpIC0gMV07XG4gICAgaWYgKGN1cnJlbnQgIT09IHByZXZpb3VzICsgMSkge1xuICAgICAgZXJyb3JzW2N1cnJlbnRdID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgaWYgKCFPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBmb3JtYXR0ZWQgPSBpbmRleGVzLm1hcChpbmRleCA9PiB7XG4gICAgY29uc3QgaGFzRXJyb3IgPSBCb29sZWFuKGVycm9yc1tpbmRleF0pO1xuICAgIHJldHVybiBoYXNFcnJvciA/IGBb8J+UpSR7aW5kZXh9XWAgOiBgJHtpbmRleH1gO1xuICB9KS5qb2luKCcsICcpO1xuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGBcbiAgICBEZXRlY3RlZCBub24tY29uc2VjdXRpdmUgPERyYWdnYWJsZSAvPiBpbmRleGVzLlxuXG4gICAgKFRoaXMgY2FuIGNhdXNlIHVuZXhwZWN0ZWQgYnVncylcblxuICAgICR7Zm9ybWF0dGVkfVxuICBgKSA6IHZvaWQgMDtcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlRGltZW5zaW9ucyhjcml0aWNhbCwgZGltZW5zaW9ucykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNvbnN0IGluc2lkZURlc3RpbmF0aW9uID0gZ2V0RHJhZ2dhYmxlc0luc2lkZURyb3BwYWJsZShjcml0aWNhbC5kcm9wcGFibGUuaWQsIGRpbWVuc2lvbnMuZHJhZ2dhYmxlcyk7XG4gICAgY2hlY2tJbmRleGVzKGluc2lkZURlc3RpbmF0aW9uKTtcbiAgfVxufVxuXG52YXIgbGlmdCA9IChtYXJzaGFsID0+ICh7XG4gIGdldFN0YXRlLFxuICBkaXNwYXRjaFxufSkgPT4gbmV4dCA9PiBhY3Rpb24gPT4ge1xuICBpZiAoYWN0aW9uLnR5cGUgIT09ICdMSUZUJykge1xuICAgIG5leHQoYWN0aW9uKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qge1xuICAgIGlkLFxuICAgIGNsaWVudFNlbGVjdGlvbixcbiAgICBtb3ZlbWVudE1vZGVcbiAgfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBpbml0aWFsID0gZ2V0U3RhdGUoKTtcbiAgaWYgKGluaXRpYWwucGhhc2UgPT09ICdEUk9QX0FOSU1BVElORycpIHtcbiAgICBkaXNwYXRjaChjb21wbGV0ZURyb3Aoe1xuICAgICAgY29tcGxldGVkOiBpbml0aWFsLmNvbXBsZXRlZFxuICAgIH0pKTtcbiAgfVxuICAhKGdldFN0YXRlKCkucGhhc2UgPT09ICdJRExFJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIHBoYXNlIHRvIHN0YXJ0IGEgZHJhZycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgZGlzcGF0Y2goZmx1c2goKSk7XG4gIGRpc3BhdGNoKGJlZm9yZUluaXRpYWxDYXB0dXJlKHtcbiAgICBkcmFnZ2FibGVJZDogaWQsXG4gICAgbW92ZW1lbnRNb2RlXG4gIH0pKTtcbiAgY29uc3Qgc2Nyb2xsT3B0aW9ucyA9IHtcbiAgICBzaG91bGRQdWJsaXNoSW1tZWRpYXRlbHk6IG1vdmVtZW50TW9kZSA9PT0gJ1NOQVAnXG4gIH07XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgZHJhZ2dhYmxlSWQ6IGlkLFxuICAgIHNjcm9sbE9wdGlvbnNcbiAgfTtcbiAgY29uc3Qge1xuICAgIGNyaXRpY2FsLFxuICAgIGRpbWVuc2lvbnMsXG4gICAgdmlld3BvcnRcbiAgfSA9IG1hcnNoYWwuc3RhcnRQdWJsaXNoaW5nKHJlcXVlc3QpO1xuICB2YWxpZGF0ZURpbWVuc2lvbnMoY3JpdGljYWwsIGRpbWVuc2lvbnMpO1xuICBkaXNwYXRjaChpbml0aWFsUHVibGlzaCh7XG4gICAgY3JpdGljYWwsXG4gICAgZGltZW5zaW9ucyxcbiAgICBjbGllbnRTZWxlY3Rpb24sXG4gICAgbW92ZW1lbnRNb2RlLFxuICAgIHZpZXdwb3J0XG4gIH0pKTtcbn0pO1xuXG52YXIgc3R5bGUgPSAobWFyc2hhbCA9PiAoKSA9PiBuZXh0ID0+IGFjdGlvbiA9PiB7XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gJ0lOSVRJQUxfUFVCTElTSCcpIHtcbiAgICBtYXJzaGFsLmRyYWdnaW5nKCk7XG4gIH1cbiAgaWYgKGFjdGlvbi50eXBlID09PSAnRFJPUF9BTklNQVRFJykge1xuICAgIG1hcnNoYWwuZHJvcHBpbmcoYWN0aW9uLnBheWxvYWQuY29tcGxldGVkLnJlc3VsdC5yZWFzb24pO1xuICB9XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gJ0ZMVVNIJyB8fCBhY3Rpb24udHlwZSA9PT0gJ0RST1BfQ09NUExFVEUnKSB7XG4gICAgbWFyc2hhbC5yZXN0aW5nKCk7XG4gIH1cbiAgbmV4dChhY3Rpb24pO1xufSk7XG5cbmNvbnN0IGN1cnZlcyA9IHtcbiAgb3V0T2ZUaGVXYXk6ICdjdWJpYy1iZXppZXIoMC4yLCAwLCAwLCAxKScsXG4gIGRyb3A6ICdjdWJpYy1iZXppZXIoLjIsMSwuMSwxKSdcbn07XG5jb25zdCBjb21iaW5lID0ge1xuICBvcGFjaXR5OiB7XG4gICAgZHJvcDogMCxcbiAgICBjb21iaW5pbmc6IDAuN1xuICB9LFxuICBzY2FsZToge1xuICAgIGRyb3A6IDAuNzVcbiAgfVxufTtcbmNvbnN0IHRpbWluZ3MgPSB7XG4gIG91dE9mVGhlV2F5OiAwLjIsXG4gIG1pbkRyb3BUaW1lOiAwLjMzLFxuICBtYXhEcm9wVGltZTogMC41NVxufTtcbmNvbnN0IG91dE9mVGhlV2F5VGltaW5nID0gYCR7dGltaW5ncy5vdXRPZlRoZVdheX1zICR7Y3VydmVzLm91dE9mVGhlV2F5fWA7XG5jb25zdCB0cmFuc2l0aW9ucyA9IHtcbiAgZmx1aWQ6IGBvcGFjaXR5ICR7b3V0T2ZUaGVXYXlUaW1pbmd9YCxcbiAgc25hcDogYHRyYW5zZm9ybSAke291dE9mVGhlV2F5VGltaW5nfSwgb3BhY2l0eSAke291dE9mVGhlV2F5VGltaW5nfWAsXG4gIGRyb3A6IGR1cmF0aW9uID0+IHtcbiAgICBjb25zdCB0aW1pbmcgPSBgJHtkdXJhdGlvbn1zICR7Y3VydmVzLmRyb3B9YDtcbiAgICByZXR1cm4gYHRyYW5zZm9ybSAke3RpbWluZ30sIG9wYWNpdHkgJHt0aW1pbmd9YDtcbiAgfSxcbiAgb3V0T2ZUaGVXYXk6IGB0cmFuc2Zvcm0gJHtvdXRPZlRoZVdheVRpbWluZ31gLFxuICBwbGFjZWhvbGRlcjogYGhlaWdodCAke291dE9mVGhlV2F5VGltaW5nfSwgd2lkdGggJHtvdXRPZlRoZVdheVRpbWluZ30sIG1hcmdpbiAke291dE9mVGhlV2F5VGltaW5nfWBcbn07XG5jb25zdCBtb3ZlVG8gPSBvZmZzZXQgPT4gaXNFcXVhbCQxKG9mZnNldCwgb3JpZ2luKSA/IHVuZGVmaW5lZCA6IGB0cmFuc2xhdGUoJHtvZmZzZXQueH1weCwgJHtvZmZzZXQueX1weClgO1xuY29uc3QgdHJhbnNmb3JtcyA9IHtcbiAgbW92ZVRvLFxuICBkcm9wOiAob2Zmc2V0LCBpc0NvbWJpbmluZykgPT4ge1xuICAgIGNvbnN0IHRyYW5zbGF0ZSA9IG1vdmVUbyhvZmZzZXQpO1xuICAgIGlmICghdHJhbnNsYXRlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoIWlzQ29tYmluaW5nKSB7XG4gICAgICByZXR1cm4gdHJhbnNsYXRlO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dHJhbnNsYXRlfSBzY2FsZSgke2NvbWJpbmUuc2NhbGUuZHJvcH0pYDtcbiAgfVxufTtcblxuY29uc3Qge1xuICBtaW5Ecm9wVGltZSxcbiAgbWF4RHJvcFRpbWVcbn0gPSB0aW1pbmdzO1xuY29uc3QgZHJvcFRpbWVSYW5nZSA9IG1heERyb3BUaW1lIC0gbWluRHJvcFRpbWU7XG5jb25zdCBtYXhEcm9wVGltZUF0RGlzdGFuY2UgPSAxNTAwO1xuY29uc3QgY2FuY2VsRHJvcE1vZGlmaWVyID0gMC42O1xudmFyIGdldERyb3BEdXJhdGlvbiA9ICgoe1xuICBjdXJyZW50LFxuICBkZXN0aW5hdGlvbixcbiAgcmVhc29uXG59KSA9PiB7XG4gIGNvbnN0IGRpc3RhbmNlJDEgPSBkaXN0YW5jZShjdXJyZW50LCBkZXN0aW5hdGlvbik7XG4gIGlmIChkaXN0YW5jZSQxIDw9IDApIHtcbiAgICByZXR1cm4gbWluRHJvcFRpbWU7XG4gIH1cbiAgaWYgKGRpc3RhbmNlJDEgPj0gbWF4RHJvcFRpbWVBdERpc3RhbmNlKSB7XG4gICAgcmV0dXJuIG1heERyb3BUaW1lO1xuICB9XG4gIGNvbnN0IHBlcmNlbnRhZ2UgPSBkaXN0YW5jZSQxIC8gbWF4RHJvcFRpbWVBdERpc3RhbmNlO1xuICBjb25zdCBkdXJhdGlvbiA9IG1pbkRyb3BUaW1lICsgZHJvcFRpbWVSYW5nZSAqIHBlcmNlbnRhZ2U7XG4gIGNvbnN0IHdpdGhEdXJhdGlvbiA9IHJlYXNvbiA9PT0gJ0NBTkNFTCcgPyBkdXJhdGlvbiAqIGNhbmNlbERyb3BNb2RpZmllciA6IGR1cmF0aW9uO1xuICByZXR1cm4gTnVtYmVyKHdpdGhEdXJhdGlvbi50b0ZpeGVkKDIpKTtcbn0pO1xuXG52YXIgZ2V0TmV3SG9tZUNsaWVudE9mZnNldCA9ICgoe1xuICBpbXBhY3QsXG4gIGRyYWdnYWJsZSxcbiAgZGltZW5zaW9ucyxcbiAgdmlld3BvcnQsXG4gIGFmdGVyQ3JpdGljYWxcbn0pID0+IHtcbiAgY29uc3Qge1xuICAgIGRyYWdnYWJsZXMsXG4gICAgZHJvcHBhYmxlc1xuICB9ID0gZGltZW5zaW9ucztcbiAgY29uc3QgZHJvcHBhYmxlSWQgPSB3aGF0SXNEcmFnZ2VkT3ZlcihpbXBhY3QpO1xuICBjb25zdCBkZXN0aW5hdGlvbiA9IGRyb3BwYWJsZUlkID8gZHJvcHBhYmxlc1tkcm9wcGFibGVJZF0gOiBudWxsO1xuICBjb25zdCBob21lID0gZHJvcHBhYmxlc1tkcmFnZ2FibGUuZGVzY3JpcHRvci5kcm9wcGFibGVJZF07XG4gIGNvbnN0IG5ld0NsaWVudENlbnRlciA9IGdldENsaWVudEJvcmRlckJveENlbnRlcih7XG4gICAgaW1wYWN0LFxuICAgIGRyYWdnYWJsZSxcbiAgICBkcmFnZ2FibGVzLFxuICAgIGFmdGVyQ3JpdGljYWwsXG4gICAgZHJvcHBhYmxlOiBkZXN0aW5hdGlvbiB8fCBob21lLFxuICAgIHZpZXdwb3J0XG4gIH0pO1xuICBjb25zdCBvZmZzZXQgPSBzdWJ0cmFjdChuZXdDbGllbnRDZW50ZXIsIGRyYWdnYWJsZS5jbGllbnQuYm9yZGVyQm94LmNlbnRlcik7XG4gIHJldHVybiBvZmZzZXQ7XG59KTtcblxudmFyIGdldERyb3BJbXBhY3QgPSAoKHtcbiAgZHJhZ2dhYmxlcyxcbiAgcmVhc29uLFxuICBsYXN0SW1wYWN0LFxuICBob21lLFxuICB2aWV3cG9ydCxcbiAgb25MaWZ0SW1wYWN0XG59KSA9PiB7XG4gIGlmICghbGFzdEltcGFjdC5hdCB8fCByZWFzb24gIT09ICdEUk9QJykge1xuICAgIGNvbnN0IHJlY29tcHV0ZWRIb21lSW1wYWN0ID0gcmVjb21wdXRlKHtcbiAgICAgIGRyYWdnYWJsZXMsXG4gICAgICBpbXBhY3Q6IG9uTGlmdEltcGFjdCxcbiAgICAgIGRlc3RpbmF0aW9uOiBob21lLFxuICAgICAgdmlld3BvcnQsXG4gICAgICBmb3JjZVNob3VsZEFuaW1hdGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgaW1wYWN0OiByZWNvbXB1dGVkSG9tZUltcGFjdCxcbiAgICAgIGRpZERyb3BJbnNpZGVEcm9wcGFibGU6IGZhbHNlXG4gICAgfTtcbiAgfVxuICBpZiAobGFzdEltcGFjdC5hdC50eXBlID09PSAnUkVPUkRFUicpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW1wYWN0OiBsYXN0SW1wYWN0LFxuICAgICAgZGlkRHJvcEluc2lkZURyb3BwYWJsZTogdHJ1ZVxuICAgIH07XG4gIH1cbiAgY29uc3Qgd2l0aG91dE1vdmVtZW50ID0ge1xuICAgIC4uLmxhc3RJbXBhY3QsXG4gICAgZGlzcGxhY2VkOiBlbXB0eUdyb3Vwc1xuICB9O1xuICByZXR1cm4ge1xuICAgIGltcGFjdDogd2l0aG91dE1vdmVtZW50LFxuICAgIGRpZERyb3BJbnNpZGVEcm9wcGFibGU6IHRydWVcbiAgfTtcbn0pO1xuXG5jb25zdCBkcm9wTWlkZGxld2FyZSA9ICh7XG4gIGdldFN0YXRlLFxuICBkaXNwYXRjaFxufSkgPT4gbmV4dCA9PiBhY3Rpb24gPT4ge1xuICBpZiAoYWN0aW9uLnR5cGUgIT09ICdEUk9QJykge1xuICAgIG5leHQoYWN0aW9uKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgc3RhdGUgPSBnZXRTdGF0ZSgpO1xuICBjb25zdCByZWFzb24gPSBhY3Rpb24ucGF5bG9hZC5yZWFzb247XG4gIGlmIChzdGF0ZS5waGFzZSA9PT0gJ0NPTExFQ1RJTkcnKSB7XG4gICAgZGlzcGF0Y2goZHJvcFBlbmRpbmcoe1xuICAgICAgcmVhc29uXG4gICAgfSkpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoc3RhdGUucGhhc2UgPT09ICdJRExFJykge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBpc1dhaXRpbmdGb3JEcm9wID0gc3RhdGUucGhhc2UgPT09ICdEUk9QX1BFTkRJTkcnICYmIHN0YXRlLmlzV2FpdGluZztcbiAgISFpc1dhaXRpbmdGb3JEcm9wID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQSBEUk9QIGFjdGlvbiBvY2N1cnJlZCB3aGlsZSBEUk9QX1BFTkRJTkcgYW5kIHN0aWxsIHdhaXRpbmcnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICEoc3RhdGUucGhhc2UgPT09ICdEUkFHR0lORycgfHwgc3RhdGUucGhhc2UgPT09ICdEUk9QX1BFTkRJTkcnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgYENhbm5vdCBkcm9wIGluIHBoYXNlOiAke3N0YXRlLnBoYXNlfWApIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgY29uc3QgY3JpdGljYWwgPSBzdGF0ZS5jcml0aWNhbDtcbiAgY29uc3QgZGltZW5zaW9ucyA9IHN0YXRlLmRpbWVuc2lvbnM7XG4gIGNvbnN0IGRyYWdnYWJsZSA9IGRpbWVuc2lvbnMuZHJhZ2dhYmxlc1tzdGF0ZS5jcml0aWNhbC5kcmFnZ2FibGUuaWRdO1xuICBjb25zdCB7XG4gICAgaW1wYWN0LFxuICAgIGRpZERyb3BJbnNpZGVEcm9wcGFibGVcbiAgfSA9IGdldERyb3BJbXBhY3Qoe1xuICAgIHJlYXNvbixcbiAgICBsYXN0SW1wYWN0OiBzdGF0ZS5pbXBhY3QsXG4gICAgYWZ0ZXJDcml0aWNhbDogc3RhdGUuYWZ0ZXJDcml0aWNhbCxcbiAgICBvbkxpZnRJbXBhY3Q6IHN0YXRlLm9uTGlmdEltcGFjdCxcbiAgICBob21lOiBzdGF0ZS5kaW1lbnNpb25zLmRyb3BwYWJsZXNbc3RhdGUuY3JpdGljYWwuZHJvcHBhYmxlLmlkXSxcbiAgICB2aWV3cG9ydDogc3RhdGUudmlld3BvcnQsXG4gICAgZHJhZ2dhYmxlczogc3RhdGUuZGltZW5zaW9ucy5kcmFnZ2FibGVzXG4gIH0pO1xuICBjb25zdCBkZXN0aW5hdGlvbiA9IGRpZERyb3BJbnNpZGVEcm9wcGFibGUgPyB0cnlHZXREZXN0aW5hdGlvbihpbXBhY3QpIDogbnVsbDtcbiAgY29uc3QgY29tYmluZSA9IGRpZERyb3BJbnNpZGVEcm9wcGFibGUgPyB0cnlHZXRDb21iaW5lKGltcGFjdCkgOiBudWxsO1xuICBjb25zdCBzb3VyY2UgPSB7XG4gICAgaW5kZXg6IGNyaXRpY2FsLmRyYWdnYWJsZS5pbmRleCxcbiAgICBkcm9wcGFibGVJZDogY3JpdGljYWwuZHJvcHBhYmxlLmlkXG4gIH07XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBkcmFnZ2FibGVJZDogZHJhZ2dhYmxlLmRlc2NyaXB0b3IuaWQsXG4gICAgdHlwZTogZHJhZ2dhYmxlLmRlc2NyaXB0b3IudHlwZSxcbiAgICBzb3VyY2UsXG4gICAgcmVhc29uLFxuICAgIG1vZGU6IHN0YXRlLm1vdmVtZW50TW9kZSxcbiAgICBkZXN0aW5hdGlvbixcbiAgICBjb21iaW5lXG4gIH07XG4gIGNvbnN0IG5ld0hvbWVDbGllbnRPZmZzZXQgPSBnZXROZXdIb21lQ2xpZW50T2Zmc2V0KHtcbiAgICBpbXBhY3QsXG4gICAgZHJhZ2dhYmxlLFxuICAgIGRpbWVuc2lvbnMsXG4gICAgdmlld3BvcnQ6IHN0YXRlLnZpZXdwb3J0LFxuICAgIGFmdGVyQ3JpdGljYWw6IHN0YXRlLmFmdGVyQ3JpdGljYWxcbiAgfSk7XG4gIGNvbnN0IGNvbXBsZXRlZCA9IHtcbiAgICBjcml0aWNhbDogc3RhdGUuY3JpdGljYWwsXG4gICAgYWZ0ZXJDcml0aWNhbDogc3RhdGUuYWZ0ZXJDcml0aWNhbCxcbiAgICByZXN1bHQsXG4gICAgaW1wYWN0XG4gIH07XG4gIGNvbnN0IGlzQW5pbWF0aW9uUmVxdWlyZWQgPSAhaXNFcXVhbCQxKHN0YXRlLmN1cnJlbnQuY2xpZW50Lm9mZnNldCwgbmV3SG9tZUNsaWVudE9mZnNldCkgfHwgQm9vbGVhbihyZXN1bHQuY29tYmluZSk7XG4gIGlmICghaXNBbmltYXRpb25SZXF1aXJlZCkge1xuICAgIGRpc3BhdGNoKGNvbXBsZXRlRHJvcCh7XG4gICAgICBjb21wbGV0ZWRcbiAgICB9KSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGRyb3BEdXJhdGlvbiA9IGdldERyb3BEdXJhdGlvbih7XG4gICAgY3VycmVudDogc3RhdGUuY3VycmVudC5jbGllbnQub2Zmc2V0LFxuICAgIGRlc3RpbmF0aW9uOiBuZXdIb21lQ2xpZW50T2Zmc2V0LFxuICAgIHJlYXNvblxuICB9KTtcbiAgY29uc3QgYXJncyA9IHtcbiAgICBuZXdIb21lQ2xpZW50T2Zmc2V0LFxuICAgIGRyb3BEdXJhdGlvbixcbiAgICBjb21wbGV0ZWRcbiAgfTtcbiAgZGlzcGF0Y2goYW5pbWF0ZURyb3AoYXJncykpO1xufTtcbnZhciBkcm9wID0gZHJvcE1pZGRsZXdhcmU7XG5cbnZhciBnZXRXaW5kb3dTY3JvbGwgPSAoKCkgPT4gKHtcbiAgeDogd2luZG93LnBhZ2VYT2Zmc2V0LFxuICB5OiB3aW5kb3cucGFnZVlPZmZzZXRcbn0pKTtcblxuZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmluZGluZyh1cGRhdGUpIHtcbiAgcmV0dXJuIHtcbiAgICBldmVudE5hbWU6ICdzY3JvbGwnLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICBjYXB0dXJlOiBmYWxzZVxuICAgIH0sXG4gICAgZm46IGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHdpbmRvdyAmJiBldmVudC50YXJnZXQgIT09IHdpbmRvdy5kb2N1bWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBnZXRTY3JvbGxMaXN0ZW5lcih7XG4gIG9uV2luZG93U2Nyb2xsXG59KSB7XG4gIGZ1bmN0aW9uIHVwZGF0ZVNjcm9sbCgpIHtcbiAgICBvbldpbmRvd1Njcm9sbChnZXRXaW5kb3dTY3JvbGwoKSk7XG4gIH1cbiAgY29uc3Qgc2NoZWR1bGVkID0gcmFmU2NoZCh1cGRhdGVTY3JvbGwpO1xuICBjb25zdCBiaW5kaW5nID0gZ2V0V2luZG93U2Nyb2xsQmluZGluZyhzY2hlZHVsZWQpO1xuICBsZXQgdW5iaW5kID0gbm9vcCQyO1xuICBmdW5jdGlvbiBpc0FjdGl2ZSgpIHtcbiAgICByZXR1cm4gdW5iaW5kICE9PSBub29wJDI7XG4gIH1cbiAgZnVuY3Rpb24gc3RhcnQoKSB7XG4gICAgISFpc0FjdGl2ZSgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHN0YXJ0IHNjcm9sbCBsaXN0ZW5lciB3aGVuIGFscmVhZHkgYWN0aXZlJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIHVuYmluZCA9IGJpbmRFdmVudHMod2luZG93LCBbYmluZGluZ10pO1xuICB9XG4gIGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgIWlzQWN0aXZlKCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3Qgc3RvcCBzY3JvbGwgbGlzdGVuZXIgd2hlbiBub3QgYWN0aXZlJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIHNjaGVkdWxlZC5jYW5jZWwoKTtcbiAgICB1bmJpbmQoKTtcbiAgICB1bmJpbmQgPSBub29wJDI7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGFydCxcbiAgICBzdG9wLFxuICAgIGlzQWN0aXZlXG4gIH07XG59XG5cbmNvbnN0IHNob3VsZEVuZCA9IGFjdGlvbiA9PiBhY3Rpb24udHlwZSA9PT0gJ0RST1BfQ09NUExFVEUnIHx8IGFjdGlvbi50eXBlID09PSAnRFJPUF9BTklNQVRFJyB8fCBhY3Rpb24udHlwZSA9PT0gJ0ZMVVNIJztcbmNvbnN0IHNjcm9sbExpc3RlbmVyID0gc3RvcmUgPT4ge1xuICBjb25zdCBsaXN0ZW5lciA9IGdldFNjcm9sbExpc3RlbmVyKHtcbiAgICBvbldpbmRvd1Njcm9sbDogbmV3U2Nyb2xsID0+IHtcbiAgICAgIHN0b3JlLmRpc3BhdGNoKG1vdmVCeVdpbmRvd1Njcm9sbCh7XG4gICAgICAgIG5ld1Njcm9sbFxuICAgICAgfSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBuZXh0ID0+IGFjdGlvbiA9PiB7XG4gICAgaWYgKCFsaXN0ZW5lci5pc0FjdGl2ZSgpICYmIGFjdGlvbi50eXBlID09PSAnSU5JVElBTF9QVUJMSVNIJykge1xuICAgICAgbGlzdGVuZXIuc3RhcnQoKTtcbiAgICB9XG4gICAgaWYgKGxpc3RlbmVyLmlzQWN0aXZlKCkgJiYgc2hvdWxkRW5kKGFjdGlvbikpIHtcbiAgICAgIGxpc3RlbmVyLnN0b3AoKTtcbiAgICB9XG4gICAgbmV4dChhY3Rpb24pO1xuICB9O1xufTtcbnZhciBzY3JvbGxMaXN0ZW5lciQxID0gc2Nyb2xsTGlzdGVuZXI7XG5cbnZhciBnZXRFeHBpcmluZ0Fubm91bmNlID0gKGFubm91bmNlID0+IHtcbiAgbGV0IHdhc0NhbGxlZCA9IGZhbHNlO1xuICBsZXQgaXNFeHBpcmVkID0gZmFsc2U7XG4gIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGlzRXhwaXJlZCA9IHRydWU7XG4gIH0pO1xuICBjb25zdCByZXN1bHQgPSBtZXNzYWdlID0+IHtcbiAgICBpZiAod2FzQ2FsbGVkKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKCdBbm5vdW5jZW1lbnQgYWxyZWFkeSBtYWRlLiBOb3QgbWFraW5nIGEgc2Vjb25kIGFubm91bmNlbWVudCcpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNFeHBpcmVkKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGBcbiAgICAgICAgQW5ub3VuY2VtZW50cyBjYW5ub3QgYmUgbWFkZSBhc3luY2hyb25vdXNseS5cbiAgICAgICAgRGVmYXVsdCBtZXNzYWdlIGhhcyBhbHJlYWR5IGJlZW4gYW5ub3VuY2VkLlxuICAgICAgYCkgOiB2b2lkIDA7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHdhc0NhbGxlZCA9IHRydWU7XG4gICAgYW5ub3VuY2UobWVzc2FnZSk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gIH07XG4gIHJlc3VsdC53YXNDYWxsZWQgPSAoKSA9PiB3YXNDYWxsZWQ7XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxudmFyIGdldEFzeW5jTWFyc2hhbCA9ICgoKSA9PiB7XG4gIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgY29uc3QgZXhlY3V0ZSA9IHRpbWVySWQgPT4ge1xuICAgIGNvbnN0IGluZGV4ID0gZW50cmllcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLnRpbWVySWQgPT09IHRpbWVySWQpO1xuICAgICEoaW5kZXggIT09IC0xKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0NvdWxkIG5vdCBmaW5kIHRpbWVyJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIGNvbnN0IFtlbnRyeV0gPSBlbnRyaWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgZW50cnkuY2FsbGJhY2soKTtcbiAgfTtcbiAgY29uc3QgYWRkID0gZm4gPT4ge1xuICAgIGNvbnN0IHRpbWVySWQgPSBzZXRUaW1lb3V0KCgpID0+IGV4ZWN1dGUodGltZXJJZCkpO1xuICAgIGNvbnN0IGVudHJ5ID0ge1xuICAgICAgdGltZXJJZCxcbiAgICAgIGNhbGxiYWNrOiBmblxuICAgIH07XG4gICAgZW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfTtcbiAgY29uc3QgZmx1c2ggPSAoKSA9PiB7XG4gICAgaWYgKCFlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzaGFsbG93ID0gWy4uLmVudHJpZXNdO1xuICAgIGVudHJpZXMubGVuZ3RoID0gMDtcbiAgICBzaGFsbG93LmZvckVhY2goZW50cnkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KGVudHJ5LnRpbWVySWQpO1xuICAgICAgZW50cnkuY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhZGQsXG4gICAgZmx1c2hcbiAgfTtcbn0pO1xuXG5jb25zdCBhcmVMb2NhdGlvbnNFcXVhbCA9IChmaXJzdCwgc2Vjb25kKSA9PiB7XG4gIGlmIChmaXJzdCA9PSBudWxsICYmIHNlY29uZCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGZpcnN0ID09IG51bGwgfHwgc2Vjb25kID09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGZpcnN0LmRyb3BwYWJsZUlkID09PSBzZWNvbmQuZHJvcHBhYmxlSWQgJiYgZmlyc3QuaW5kZXggPT09IHNlY29uZC5pbmRleDtcbn07XG5jb25zdCBpc0NvbWJpbmVFcXVhbCA9IChmaXJzdCwgc2Vjb25kKSA9PiB7XG4gIGlmIChmaXJzdCA9PSBudWxsICYmIHNlY29uZCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGZpcnN0ID09IG51bGwgfHwgc2Vjb25kID09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGZpcnN0LmRyYWdnYWJsZUlkID09PSBzZWNvbmQuZHJhZ2dhYmxlSWQgJiYgZmlyc3QuZHJvcHBhYmxlSWQgPT09IHNlY29uZC5kcm9wcGFibGVJZDtcbn07XG5jb25zdCBpc0NyaXRpY2FsRXF1YWwgPSAoZmlyc3QsIHNlY29uZCkgPT4ge1xuICBpZiAoZmlyc3QgPT09IHNlY29uZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IGlzRHJhZ2dhYmxlRXF1YWwgPSBmaXJzdC5kcmFnZ2FibGUuaWQgPT09IHNlY29uZC5kcmFnZ2FibGUuaWQgJiYgZmlyc3QuZHJhZ2dhYmxlLmRyb3BwYWJsZUlkID09PSBzZWNvbmQuZHJhZ2dhYmxlLmRyb3BwYWJsZUlkICYmIGZpcnN0LmRyYWdnYWJsZS50eXBlID09PSBzZWNvbmQuZHJhZ2dhYmxlLnR5cGUgJiYgZmlyc3QuZHJhZ2dhYmxlLmluZGV4ID09PSBzZWNvbmQuZHJhZ2dhYmxlLmluZGV4O1xuICBjb25zdCBpc0Ryb3BwYWJsZUVxdWFsID0gZmlyc3QuZHJvcHBhYmxlLmlkID09PSBzZWNvbmQuZHJvcHBhYmxlLmlkICYmIGZpcnN0LmRyb3BwYWJsZS50eXBlID09PSBzZWNvbmQuZHJvcHBhYmxlLnR5cGU7XG4gIHJldHVybiBpc0RyYWdnYWJsZUVxdWFsICYmIGlzRHJvcHBhYmxlRXF1YWw7XG59O1xuXG5jb25zdCB3aXRoVGltaW5ncyA9IChrZXksIGZuKSA9PiB7XG4gIHN0YXJ0KCk7XG4gIGZuKCk7XG4gIGZpbmlzaCgpO1xufTtcbmNvbnN0IGdldERyYWdTdGFydCA9IChjcml0aWNhbCwgbW9kZSkgPT4gKHtcbiAgZHJhZ2dhYmxlSWQ6IGNyaXRpY2FsLmRyYWdnYWJsZS5pZCxcbiAgdHlwZTogY3JpdGljYWwuZHJvcHBhYmxlLnR5cGUsXG4gIHNvdXJjZToge1xuICAgIGRyb3BwYWJsZUlkOiBjcml0aWNhbC5kcm9wcGFibGUuaWQsXG4gICAgaW5kZXg6IGNyaXRpY2FsLmRyYWdnYWJsZS5pbmRleFxuICB9LFxuICBtb2RlXG59KTtcbmZ1bmN0aW9uIGV4ZWN1dGUocmVzcG9uZGVyLCBkYXRhLCBhbm5vdW5jZSwgZ2V0RGVmYXVsdE1lc3NhZ2UpIHtcbiAgaWYgKCFyZXNwb25kZXIpIHtcbiAgICBhbm5vdW5jZShnZXREZWZhdWx0TWVzc2FnZShkYXRhKSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHdpbGxFeHBpcmUgPSBnZXRFeHBpcmluZ0Fubm91bmNlKGFubm91bmNlKTtcbiAgY29uc3QgcHJvdmlkZWQgPSB7XG4gICAgYW5ub3VuY2U6IHdpbGxFeHBpcmVcbiAgfTtcbiAgcmVzcG9uZGVyKGRhdGEsIHByb3ZpZGVkKTtcbiAgaWYgKCF3aWxsRXhwaXJlLndhc0NhbGxlZCgpKSB7XG4gICAgYW5ub3VuY2UoZ2V0RGVmYXVsdE1lc3NhZ2UoZGF0YSkpO1xuICB9XG59XG52YXIgZ2V0UHVibGlzaGVyID0gKChnZXRSZXNwb25kZXJzLCBhbm5vdW5jZSkgPT4ge1xuICBjb25zdCBhc3luY01hcnNoYWwgPSBnZXRBc3luY01hcnNoYWwoKTtcbiAgbGV0IGRyYWdnaW5nID0gbnVsbDtcbiAgY29uc3QgYmVmb3JlQ2FwdHVyZSA9IChkcmFnZ2FibGVJZCwgbW9kZSkgPT4ge1xuICAgICEhZHJhZ2dpbmcgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgZmlyZSBvbkJlZm9yZUNhcHR1cmUgYXMgYSBkcmFnIHN0YXJ0IGhhcyBhbHJlYWR5IGJlZW4gcHVibGlzaGVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIHdpdGhUaW1pbmdzKCdvbkJlZm9yZUNhcHR1cmUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmbiA9IGdldFJlc3BvbmRlcnMoKS5vbkJlZm9yZUNhcHR1cmU7XG4gICAgICBpZiAoZm4pIHtcbiAgICAgICAgY29uc3QgYmVmb3JlID0ge1xuICAgICAgICAgIGRyYWdnYWJsZUlkLFxuICAgICAgICAgIG1vZGVcbiAgICAgICAgfTtcbiAgICAgICAgZm4oYmVmb3JlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgY29uc3QgYmVmb3JlU3RhcnQgPSAoY3JpdGljYWwsIG1vZGUpID0+IHtcbiAgICAhIWRyYWdnaW5nID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IGZpcmUgb25CZWZvcmVEcmFnU3RhcnQgYXMgYSBkcmFnIHN0YXJ0IGhhcyBhbHJlYWR5IGJlZW4gcHVibGlzaGVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIHdpdGhUaW1pbmdzKCdvbkJlZm9yZURyYWdTdGFydCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGZuID0gZ2V0UmVzcG9uZGVycygpLm9uQmVmb3JlRHJhZ1N0YXJ0O1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIGZuKGdldERyYWdTdGFydChjcml0aWNhbCwgbW9kZSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICBjb25zdCBzdGFydCA9IChjcml0aWNhbCwgbW9kZSkgPT4ge1xuICAgICEhZHJhZ2dpbmcgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgZmlyZSBvbkJlZm9yZURyYWdTdGFydCBhcyBhIGRyYWcgc3RhcnQgaGFzIGFscmVhZHkgYmVlbiBwdWJsaXNoZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3QgZGF0YSA9IGdldERyYWdTdGFydChjcml0aWNhbCwgbW9kZSk7XG4gICAgZHJhZ2dpbmcgPSB7XG4gICAgICBtb2RlLFxuICAgICAgbGFzdENyaXRpY2FsOiBjcml0aWNhbCxcbiAgICAgIGxhc3RMb2NhdGlvbjogZGF0YS5zb3VyY2UsXG4gICAgICBsYXN0Q29tYmluZTogbnVsbFxuICAgIH07XG4gICAgYXN5bmNNYXJzaGFsLmFkZCgoKSA9PiB7XG4gICAgICB3aXRoVGltaW5ncygnb25EcmFnU3RhcnQnLCAoKSA9PiBleGVjdXRlKGdldFJlc3BvbmRlcnMoKS5vbkRyYWdTdGFydCwgZGF0YSwgYW5ub3VuY2UsIHByZXNldCQxLm9uRHJhZ1N0YXJ0KSk7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHVwZGF0ZSA9IChjcml0aWNhbCwgaW1wYWN0KSA9PiB7XG4gICAgY29uc3QgbG9jYXRpb24gPSB0cnlHZXREZXN0aW5hdGlvbihpbXBhY3QpO1xuICAgIGNvbnN0IGNvbWJpbmUgPSB0cnlHZXRDb21iaW5lKGltcGFjdCk7XG4gICAgIWRyYWdnaW5nID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IGZpcmUgb25EcmFnTW92ZSB3aGVuIG9uRHJhZ1N0YXJ0IGhhcyBub3QgYmVlbiBjYWxsZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3QgaGFzQ3JpdGljYWxDaGFuZ2VkID0gIWlzQ3JpdGljYWxFcXVhbChjcml0aWNhbCwgZHJhZ2dpbmcubGFzdENyaXRpY2FsKTtcbiAgICBpZiAoaGFzQ3JpdGljYWxDaGFuZ2VkKSB7XG4gICAgICBkcmFnZ2luZy5sYXN0Q3JpdGljYWwgPSBjcml0aWNhbDtcbiAgICB9XG4gICAgY29uc3QgaGFzTG9jYXRpb25DaGFuZ2VkID0gIWFyZUxvY2F0aW9uc0VxdWFsKGRyYWdnaW5nLmxhc3RMb2NhdGlvbiwgbG9jYXRpb24pO1xuICAgIGlmIChoYXNMb2NhdGlvbkNoYW5nZWQpIHtcbiAgICAgIGRyYWdnaW5nLmxhc3RMb2NhdGlvbiA9IGxvY2F0aW9uO1xuICAgIH1cbiAgICBjb25zdCBoYXNHcm91cGluZ0NoYW5nZWQgPSAhaXNDb21iaW5lRXF1YWwoZHJhZ2dpbmcubGFzdENvbWJpbmUsIGNvbWJpbmUpO1xuICAgIGlmIChoYXNHcm91cGluZ0NoYW5nZWQpIHtcbiAgICAgIGRyYWdnaW5nLmxhc3RDb21iaW5lID0gY29tYmluZTtcbiAgICB9XG4gICAgaWYgKCFoYXNDcml0aWNhbENoYW5nZWQgJiYgIWhhc0xvY2F0aW9uQ2hhbmdlZCAmJiAhaGFzR3JvdXBpbmdDaGFuZ2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAuLi5nZXREcmFnU3RhcnQoY3JpdGljYWwsIGRyYWdnaW5nLm1vZGUpLFxuICAgICAgY29tYmluZSxcbiAgICAgIGRlc3RpbmF0aW9uOiBsb2NhdGlvblxuICAgIH07XG4gICAgYXN5bmNNYXJzaGFsLmFkZCgoKSA9PiB7XG4gICAgICB3aXRoVGltaW5ncygnb25EcmFnVXBkYXRlJywgKCkgPT4gZXhlY3V0ZShnZXRSZXNwb25kZXJzKCkub25EcmFnVXBkYXRlLCBkYXRhLCBhbm5vdW5jZSwgcHJlc2V0JDEub25EcmFnVXBkYXRlKSk7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IGZsdXNoID0gKCkgPT4ge1xuICAgICFkcmFnZ2luZyA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0NhbiBvbmx5IGZsdXNoIHJlc3BvbmRlcnMgd2hpbGUgZHJhZ2dpbmcnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgYXN5bmNNYXJzaGFsLmZsdXNoKCk7XG4gIH07XG4gIGNvbnN0IGRyb3AgPSByZXN1bHQgPT4ge1xuICAgICFkcmFnZ2luZyA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBmaXJlIG9uRHJhZ0VuZCB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoaW5nIG9uRHJhZ1N0YXJ0JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIGRyYWdnaW5nID0gbnVsbDtcbiAgICB3aXRoVGltaW5ncygnb25EcmFnRW5kJywgKCkgPT4gZXhlY3V0ZShnZXRSZXNwb25kZXJzKCkub25EcmFnRW5kLCByZXN1bHQsIGFubm91bmNlLCBwcmVzZXQkMS5vbkRyYWdFbmQpKTtcbiAgfTtcbiAgY29uc3QgYWJvcnQgPSAoKSA9PiB7XG4gICAgaWYgKCFkcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAuLi5nZXREcmFnU3RhcnQoZHJhZ2dpbmcubGFzdENyaXRpY2FsLCBkcmFnZ2luZy5tb2RlKSxcbiAgICAgIGNvbWJpbmU6IG51bGwsXG4gICAgICBkZXN0aW5hdGlvbjogbnVsbCxcbiAgICAgIHJlYXNvbjogJ0NBTkNFTCdcbiAgICB9O1xuICAgIGRyb3AocmVzdWx0KTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBiZWZvcmVDYXB0dXJlLFxuICAgIGJlZm9yZVN0YXJ0LFxuICAgIHN0YXJ0LFxuICAgIHVwZGF0ZSxcbiAgICBmbHVzaCxcbiAgICBkcm9wLFxuICAgIGFib3J0XG4gIH07XG59KTtcblxudmFyIHJlc3BvbmRlcnMgPSAoKGdldFJlc3BvbmRlcnMsIGFubm91bmNlKSA9PiB7XG4gIGNvbnN0IHB1Ymxpc2hlciA9IGdldFB1Ymxpc2hlcihnZXRSZXNwb25kZXJzLCBhbm5vdW5jZSk7XG4gIHJldHVybiBzdG9yZSA9PiBuZXh0ID0+IGFjdGlvbiA9PiB7XG4gICAgaWYgKGFjdGlvbi50eXBlID09PSAnQkVGT1JFX0lOSVRJQUxfQ0FQVFVSRScpIHtcbiAgICAgIHB1Ymxpc2hlci5iZWZvcmVDYXB0dXJlKGFjdGlvbi5wYXlsb2FkLmRyYWdnYWJsZUlkLCBhY3Rpb24ucGF5bG9hZC5tb3ZlbWVudE1vZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09ICdJTklUSUFMX1BVQkxJU0gnKSB7XG4gICAgICBjb25zdCBjcml0aWNhbCA9IGFjdGlvbi5wYXlsb2FkLmNyaXRpY2FsO1xuICAgICAgcHVibGlzaGVyLmJlZm9yZVN0YXJ0KGNyaXRpY2FsLCBhY3Rpb24ucGF5bG9hZC5tb3ZlbWVudE1vZGUpO1xuICAgICAgbmV4dChhY3Rpb24pO1xuICAgICAgcHVibGlzaGVyLnN0YXJ0KGNyaXRpY2FsLCBhY3Rpb24ucGF5bG9hZC5tb3ZlbWVudE1vZGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09ICdEUk9QX0NPTVBMRVRFJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYWN0aW9uLnBheWxvYWQuY29tcGxldGVkLnJlc3VsdDtcbiAgICAgIHB1Ymxpc2hlci5mbHVzaCgpO1xuICAgICAgbmV4dChhY3Rpb24pO1xuICAgICAgcHVibGlzaGVyLmRyb3AocmVzdWx0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbmV4dChhY3Rpb24pO1xuICAgIGlmIChhY3Rpb24udHlwZSA9PT0gJ0ZMVVNIJykge1xuICAgICAgcHVibGlzaGVyLmFib3J0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdEUkFHR0lORycpIHtcbiAgICAgIHB1Ymxpc2hlci51cGRhdGUoc3RhdGUuY3JpdGljYWwsIHN0YXRlLmltcGFjdCk7XG4gICAgfVxuICB9O1xufSk7XG5cbmNvbnN0IGRyb3BBbmltYXRpb25GaW5pc2hNaWRkbGV3YXJlID0gc3RvcmUgPT4gbmV4dCA9PiBhY3Rpb24gPT4ge1xuICBpZiAoYWN0aW9uLnR5cGUgIT09ICdEUk9QX0FOSU1BVElPTl9GSU5JU0hFRCcpIHtcbiAgICBuZXh0KGFjdGlvbik7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgIShzdGF0ZS5waGFzZSA9PT0gJ0RST1BfQU5JTUFUSU5HJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgZmluaXNoIGEgZHJvcCBhbmltYXRpbmcgd2hlbiBubyBkcm9wIGlzIG9jY3VycmluZycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgc3RvcmUuZGlzcGF0Y2goY29tcGxldGVEcm9wKHtcbiAgICBjb21wbGV0ZWQ6IHN0YXRlLmNvbXBsZXRlZFxuICB9KSk7XG59O1xudmFyIGRyb3BBbmltYXRpb25GaW5pc2ggPSBkcm9wQW5pbWF0aW9uRmluaXNoTWlkZGxld2FyZTtcblxuY29uc3QgZHJvcEFuaW1hdGlvbkZsdXNoT25TY3JvbGxNaWRkbGV3YXJlID0gc3RvcmUgPT4ge1xuICBsZXQgdW5iaW5kID0gbnVsbDtcbiAgbGV0IGZyYW1lSWQgPSBudWxsO1xuICBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICBpZiAoZnJhbWVJZCkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgICBmcmFtZUlkID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHVuYmluZCkge1xuICAgICAgdW5iaW5kKCk7XG4gICAgICB1bmJpbmQgPSBudWxsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV4dCA9PiBhY3Rpb24gPT4ge1xuICAgIGlmIChhY3Rpb24udHlwZSA9PT0gJ0ZMVVNIJyB8fCBhY3Rpb24udHlwZSA9PT0gJ0RST1BfQ09NUExFVEUnIHx8IGFjdGlvbi50eXBlID09PSAnRFJPUF9BTklNQVRJT05fRklOSVNIRUQnKSB7XG4gICAgICBjbGVhcigpO1xuICAgIH1cbiAgICBuZXh0KGFjdGlvbik7XG4gICAgaWYgKGFjdGlvbi50eXBlICE9PSAnRFJPUF9BTklNQVRFJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBiaW5kaW5nID0ge1xuICAgICAgZXZlbnROYW1lOiAnc2Nyb2xsJyxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgICAgIG9uY2U6IHRydWVcbiAgICAgIH0sXG4gICAgICBmbjogZnVuY3Rpb24gZmx1c2hEcm9wQW5pbWF0aW9uKCkge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICAgIGlmIChzdGF0ZS5waGFzZSA9PT0gJ0RST1BfQU5JTUFUSU5HJykge1xuICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKGRyb3BBbmltYXRpb25GaW5pc2hlZCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICBmcmFtZUlkID0gbnVsbDtcbiAgICAgIHVuYmluZCA9IGJpbmRFdmVudHMod2luZG93LCBbYmluZGluZ10pO1xuICAgIH0pO1xuICB9O1xufTtcbnZhciBkcm9wQW5pbWF0aW9uRmx1c2hPblNjcm9sbCA9IGRyb3BBbmltYXRpb25GbHVzaE9uU2Nyb2xsTWlkZGxld2FyZTtcblxudmFyIGRpbWVuc2lvbk1hcnNoYWxTdG9wcGVyID0gKG1hcnNoYWwgPT4gKCkgPT4gbmV4dCA9PiBhY3Rpb24gPT4ge1xuICBpZiAoYWN0aW9uLnR5cGUgPT09ICdEUk9QX0NPTVBMRVRFJyB8fCBhY3Rpb24udHlwZSA9PT0gJ0ZMVVNIJyB8fCBhY3Rpb24udHlwZSA9PT0gJ0RST1BfQU5JTUFURScpIHtcbiAgICBtYXJzaGFsLnN0b3BQdWJsaXNoaW5nKCk7XG4gIH1cbiAgbmV4dChhY3Rpb24pO1xufSk7XG5cbnZhciBmb2N1cyA9IChtYXJzaGFsID0+IHtcbiAgbGV0IGlzV2F0Y2hpbmcgPSBmYWxzZTtcbiAgcmV0dXJuICgpID0+IG5leHQgPT4gYWN0aW9uID0+IHtcbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09ICdJTklUSUFMX1BVQkxJU0gnKSB7XG4gICAgICBpc1dhdGNoaW5nID0gdHJ1ZTtcbiAgICAgIG1hcnNoYWwudHJ5UmVjb3JkRm9jdXMoYWN0aW9uLnBheWxvYWQuY3JpdGljYWwuZHJhZ2dhYmxlLmlkKTtcbiAgICAgIG5leHQoYWN0aW9uKTtcbiAgICAgIG1hcnNoYWwudHJ5UmVzdG9yZUZvY3VzUmVjb3JkZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbmV4dChhY3Rpb24pO1xuICAgIGlmICghaXNXYXRjaGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09ICdGTFVTSCcpIHtcbiAgICAgIGlzV2F0Y2hpbmcgPSBmYWxzZTtcbiAgICAgIG1hcnNoYWwudHJ5UmVzdG9yZUZvY3VzUmVjb3JkZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbi50eXBlID09PSAnRFJPUF9DT01QTEVURScpIHtcbiAgICAgIGlzV2F0Y2hpbmcgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGFjdGlvbi5wYXlsb2FkLmNvbXBsZXRlZC5yZXN1bHQ7XG4gICAgICBpZiAocmVzdWx0LmNvbWJpbmUpIHtcbiAgICAgICAgbWFyc2hhbC50cnlTaGlmdFJlY29yZChyZXN1bHQuZHJhZ2dhYmxlSWQsIHJlc3VsdC5jb21iaW5lLmRyYWdnYWJsZUlkKTtcbiAgICAgIH1cbiAgICAgIG1hcnNoYWwudHJ5UmVzdG9yZUZvY3VzUmVjb3JkZWQoKTtcbiAgICB9XG4gIH07XG59KTtcblxuY29uc3Qgc2hvdWxkU3RvcCA9IGFjdGlvbiA9PiBhY3Rpb24udHlwZSA9PT0gJ0RST1BfQ09NUExFVEUnIHx8IGFjdGlvbi50eXBlID09PSAnRFJPUF9BTklNQVRFJyB8fCBhY3Rpb24udHlwZSA9PT0gJ0ZMVVNIJztcbnZhciBhdXRvU2Nyb2xsID0gKGF1dG9TY3JvbGxlciA9PiBzdG9yZSA9PiBuZXh0ID0+IGFjdGlvbiA9PiB7XG4gIGlmIChzaG91bGRTdG9wKGFjdGlvbikpIHtcbiAgICBhdXRvU2Nyb2xsZXIuc3RvcCgpO1xuICAgIG5leHQoYWN0aW9uKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGFjdGlvbi50eXBlID09PSAnSU5JVElBTF9QVUJMSVNIJykge1xuICAgIG5leHQoYWN0aW9uKTtcbiAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgIShzdGF0ZS5waGFzZSA9PT0gJ0RSQUdHSU5HJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBwaGFzZSB0byBiZSBEUkFHR0lORyBhZnRlciBJTklUSUFMX1BVQkxJU0gnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgYXV0b1Njcm9sbGVyLnN0YXJ0KHN0YXRlKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbmV4dChhY3Rpb24pO1xuICBhdXRvU2Nyb2xsZXIuc2Nyb2xsKHN0b3JlLmdldFN0YXRlKCkpO1xufSk7XG5cbmNvbnN0IHBlbmRpbmdEcm9wID0gc3RvcmUgPT4gbmV4dCA9PiBhY3Rpb24gPT4ge1xuICBuZXh0KGFjdGlvbik7XG4gIGlmIChhY3Rpb24udHlwZSAhPT0gJ1BVQkxJU0hfV0hJTEVfRFJBR0dJTkcnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHBvc3RBY3Rpb25TdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gIGlmIChwb3N0QWN0aW9uU3RhdGUucGhhc2UgIT09ICdEUk9QX1BFTkRJTkcnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwb3N0QWN0aW9uU3RhdGUuaXNXYWl0aW5nKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHN0b3JlLmRpc3BhdGNoKGRyb3AkMSh7XG4gICAgcmVhc29uOiBwb3N0QWN0aW9uU3RhdGUucmVhc29uXG4gIH0pKTtcbn07XG52YXIgcGVuZGluZ0Ryb3AkMSA9IHBlbmRpbmdEcm9wO1xuXG5jb25zdCBjb21wb3NlRW5oYW5jZXJzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fQ09NUE9TRV9fID8gd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX0NPTVBPU0VfXyh7XG4gIG5hbWU6ICdAaGVsbG8tcGFuZ2VhL2RuZCdcbn0pIDogY29tcG9zZTtcbnZhciBjcmVhdGVTdG9yZSA9ICgoe1xuICBkaW1lbnNpb25NYXJzaGFsLFxuICBmb2N1c01hcnNoYWwsXG4gIHN0eWxlTWFyc2hhbCxcbiAgZ2V0UmVzcG9uZGVycyxcbiAgYW5ub3VuY2UsXG4gIGF1dG9TY3JvbGxlclxufSkgPT4gY3JlYXRlU3RvcmUkMShyZWR1Y2VyLCBjb21wb3NlRW5oYW5jZXJzKGFwcGx5TWlkZGxld2FyZShzdHlsZShzdHlsZU1hcnNoYWwpLCBkaW1lbnNpb25NYXJzaGFsU3RvcHBlcihkaW1lbnNpb25NYXJzaGFsKSwgbGlmdChkaW1lbnNpb25NYXJzaGFsKSwgZHJvcCwgZHJvcEFuaW1hdGlvbkZpbmlzaCwgZHJvcEFuaW1hdGlvbkZsdXNoT25TY3JvbGwsIHBlbmRpbmdEcm9wJDEsIGF1dG9TY3JvbGwoYXV0b1Njcm9sbGVyKSwgc2Nyb2xsTGlzdGVuZXIkMSwgZm9jdXMoZm9jdXNNYXJzaGFsKSwgcmVzcG9uZGVycyhnZXRSZXNwb25kZXJzLCBhbm5vdW5jZSkpKSkpO1xuXG5jb25zdCBjbGVhbiQxID0gKCkgPT4gKHtcbiAgYWRkaXRpb25zOiB7fSxcbiAgcmVtb3ZhbHM6IHt9LFxuICBtb2RpZmllZDoge31cbn0pO1xuZnVuY3Rpb24gY3JlYXRlUHVibGlzaGVyKHtcbiAgcmVnaXN0cnksXG4gIGNhbGxiYWNrc1xufSkge1xuICBsZXQgc3RhZ2luZyA9IGNsZWFuJDEoKTtcbiAgbGV0IGZyYW1lSWQgPSBudWxsO1xuICBjb25zdCBjb2xsZWN0ID0gKCkgPT4ge1xuICAgIGlmIChmcmFtZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhbGxiYWNrcy5jb2xsZWN0aW9uU3RhcnRpbmcoKTtcbiAgICBmcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGZyYW1lSWQgPSBudWxsO1xuICAgICAgc3RhcnQoKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYWRkaXRpb25zLFxuICAgICAgICByZW1vdmFscyxcbiAgICAgICAgbW9kaWZpZWRcbiAgICAgIH0gPSBzdGFnaW5nO1xuICAgICAgY29uc3QgYWRkZWQgPSBPYmplY3Qua2V5cyhhZGRpdGlvbnMpLm1hcChpZCA9PiByZWdpc3RyeS5kcmFnZ2FibGUuZ2V0QnlJZChpZCkuZ2V0RGltZW5zaW9uKG9yaWdpbikpLnNvcnQoKGEsIGIpID0+IGEuZGVzY3JpcHRvci5pbmRleCAtIGIuZGVzY3JpcHRvci5pbmRleCk7XG4gICAgICBjb25zdCB1cGRhdGVkID0gT2JqZWN0LmtleXMobW9kaWZpZWQpLm1hcChpZCA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcmVnaXN0cnkuZHJvcHBhYmxlLmdldEJ5SWQoaWQpO1xuICAgICAgICBjb25zdCBzY3JvbGwgPSBlbnRyeS5jYWxsYmFja3MuZ2V0U2Nyb2xsV2hpbGVEcmFnZ2luZygpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRyb3BwYWJsZUlkOiBpZCxcbiAgICAgICAgICBzY3JvbGxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICBhZGRpdGlvbnM6IGFkZGVkLFxuICAgICAgICByZW1vdmFsczogT2JqZWN0LmtleXMocmVtb3ZhbHMpLFxuICAgICAgICBtb2RpZmllZDogdXBkYXRlZFxuICAgICAgfTtcbiAgICAgIHN0YWdpbmcgPSBjbGVhbiQxKCk7XG4gICAgICBmaW5pc2goKTtcbiAgICAgIGNhbGxiYWNrcy5wdWJsaXNoKHJlc3VsdCk7XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IGFkZCA9IGVudHJ5ID0+IHtcbiAgICBjb25zdCBpZCA9IGVudHJ5LmRlc2NyaXB0b3IuaWQ7XG4gICAgc3RhZ2luZy5hZGRpdGlvbnNbaWRdID0gZW50cnk7XG4gICAgc3RhZ2luZy5tb2RpZmllZFtlbnRyeS5kZXNjcmlwdG9yLmRyb3BwYWJsZUlkXSA9IHRydWU7XG4gICAgaWYgKHN0YWdpbmcucmVtb3ZhbHNbaWRdKSB7XG4gICAgICBkZWxldGUgc3RhZ2luZy5yZW1vdmFsc1tpZF07XG4gICAgfVxuICAgIGNvbGxlY3QoKTtcbiAgfTtcbiAgY29uc3QgcmVtb3ZlID0gZW50cnkgPT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBlbnRyeS5kZXNjcmlwdG9yO1xuICAgIHN0YWdpbmcucmVtb3ZhbHNbZGVzY3JpcHRvci5pZF0gPSB0cnVlO1xuICAgIHN0YWdpbmcubW9kaWZpZWRbZGVzY3JpcHRvci5kcm9wcGFibGVJZF0gPSB0cnVlO1xuICAgIGlmIChzdGFnaW5nLmFkZGl0aW9uc1tkZXNjcmlwdG9yLmlkXSkge1xuICAgICAgZGVsZXRlIHN0YWdpbmcuYWRkaXRpb25zW2Rlc2NyaXB0b3IuaWRdO1xuICAgIH1cbiAgICBjb2xsZWN0KCk7XG4gIH07XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgaWYgKCFmcmFtZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIGZyYW1lSWQgPSBudWxsO1xuICAgIHN0YWdpbmcgPSBjbGVhbiQxKCk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgYWRkLFxuICAgIHJlbW92ZSxcbiAgICBzdG9wXG4gIH07XG59XG5cbnZhciBnZXRNYXhTY3JvbGwgPSAoKHtcbiAgc2Nyb2xsSGVpZ2h0LFxuICBzY3JvbGxXaWR0aCxcbiAgaGVpZ2h0LFxuICB3aWR0aFxufSkgPT4ge1xuICBjb25zdCBtYXhTY3JvbGwgPSBzdWJ0cmFjdCh7XG4gICAgeDogc2Nyb2xsV2lkdGgsXG4gICAgeTogc2Nyb2xsSGVpZ2h0XG4gIH0sIHtcbiAgICB4OiB3aWR0aCxcbiAgICB5OiBoZWlnaHRcbiAgfSk7XG4gIGNvbnN0IGFkanVzdGVkTWF4U2Nyb2xsID0ge1xuICAgIHg6IE1hdGgubWF4KDAsIG1heFNjcm9sbC54KSxcbiAgICB5OiBNYXRoLm1heCgwLCBtYXhTY3JvbGwueSlcbiAgfTtcbiAgcmV0dXJuIGFkanVzdGVkTWF4U2Nyb2xsO1xufSk7XG5cbnZhciBnZXREb2N1bWVudEVsZW1lbnQgPSAoKCkgPT4ge1xuICBjb25zdCBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICFkb2MgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgZmluZCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHJldHVybiBkb2M7XG59KTtcblxudmFyIGdldE1heFdpbmRvd1Njcm9sbCA9ICgoKSA9PiB7XG4gIGNvbnN0IGRvYyA9IGdldERvY3VtZW50RWxlbWVudCgpO1xuICBjb25zdCBtYXhTY3JvbGwgPSBnZXRNYXhTY3JvbGwoe1xuICAgIHNjcm9sbEhlaWdodDogZG9jLnNjcm9sbEhlaWdodCxcbiAgICBzY3JvbGxXaWR0aDogZG9jLnNjcm9sbFdpZHRoLFxuICAgIHdpZHRoOiBkb2MuY2xpZW50V2lkdGgsXG4gICAgaGVpZ2h0OiBkb2MuY2xpZW50SGVpZ2h0XG4gIH0pO1xuICByZXR1cm4gbWF4U2Nyb2xsO1xufSk7XG5cbnZhciBnZXRWaWV3cG9ydCA9ICgoKSA9PiB7XG4gIGNvbnN0IHNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbCgpO1xuICBjb25zdCBtYXhTY3JvbGwgPSBnZXRNYXhXaW5kb3dTY3JvbGwoKTtcbiAgY29uc3QgdG9wID0gc2Nyb2xsLnk7XG4gIGNvbnN0IGxlZnQgPSBzY3JvbGwueDtcbiAgY29uc3QgZG9jID0gZ2V0RG9jdW1lbnRFbGVtZW50KCk7XG4gIGNvbnN0IHdpZHRoID0gZG9jLmNsaWVudFdpZHRoO1xuICBjb25zdCBoZWlnaHQgPSBkb2MuY2xpZW50SGVpZ2h0O1xuICBjb25zdCByaWdodCA9IGxlZnQgKyB3aWR0aDtcbiAgY29uc3QgYm90dG9tID0gdG9wICsgaGVpZ2h0O1xuICBjb25zdCBmcmFtZSA9IGdldFJlY3Qoe1xuICAgIHRvcCxcbiAgICBsZWZ0LFxuICAgIHJpZ2h0LFxuICAgIGJvdHRvbVxuICB9KTtcbiAgY29uc3Qgdmlld3BvcnQgPSB7XG4gICAgZnJhbWUsXG4gICAgc2Nyb2xsOiB7XG4gICAgICBpbml0aWFsOiBzY3JvbGwsXG4gICAgICBjdXJyZW50OiBzY3JvbGwsXG4gICAgICBtYXg6IG1heFNjcm9sbCxcbiAgICAgIGRpZmY6IHtcbiAgICAgICAgdmFsdWU6IG9yaWdpbixcbiAgICAgICAgZGlzcGxhY2VtZW50OiBvcmlnaW5cbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHJldHVybiB2aWV3cG9ydDtcbn0pO1xuXG52YXIgZ2V0SW5pdGlhbFB1Ymxpc2ggPSAoKHtcbiAgY3JpdGljYWwsXG4gIHNjcm9sbE9wdGlvbnMsXG4gIHJlZ2lzdHJ5XG59KSA9PiB7XG4gIHN0YXJ0KCk7XG4gIGNvbnN0IHZpZXdwb3J0ID0gZ2V0Vmlld3BvcnQoKTtcbiAgY29uc3Qgd2luZG93U2Nyb2xsID0gdmlld3BvcnQuc2Nyb2xsLmN1cnJlbnQ7XG4gIGNvbnN0IGhvbWUgPSBjcml0aWNhbC5kcm9wcGFibGU7XG4gIGNvbnN0IGRyb3BwYWJsZXMgPSByZWdpc3RyeS5kcm9wcGFibGUuZ2V0QWxsQnlUeXBlKGhvbWUudHlwZSkubWFwKGVudHJ5ID0+IGVudHJ5LmNhbGxiYWNrcy5nZXREaW1lbnNpb25BbmRXYXRjaFNjcm9sbCh3aW5kb3dTY3JvbGwsIHNjcm9sbE9wdGlvbnMpKTtcbiAgY29uc3QgZHJhZ2dhYmxlcyA9IHJlZ2lzdHJ5LmRyYWdnYWJsZS5nZXRBbGxCeVR5cGUoY3JpdGljYWwuZHJhZ2dhYmxlLnR5cGUpLm1hcChlbnRyeSA9PiBlbnRyeS5nZXREaW1lbnNpb24od2luZG93U2Nyb2xsKSk7XG4gIGNvbnN0IGRpbWVuc2lvbnMgPSB7XG4gICAgZHJhZ2dhYmxlczogdG9EcmFnZ2FibGVNYXAoZHJhZ2dhYmxlcyksXG4gICAgZHJvcHBhYmxlczogdG9Ecm9wcGFibGVNYXAoZHJvcHBhYmxlcylcbiAgfTtcbiAgZmluaXNoKCk7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBkaW1lbnNpb25zLFxuICAgIGNyaXRpY2FsLFxuICAgIHZpZXdwb3J0XG4gIH07XG4gIHJldHVybiByZXN1bHQ7XG59KTtcblxuZnVuY3Rpb24gc2hvdWxkUHVibGlzaFVwZGF0ZShyZWdpc3RyeSwgZHJhZ2dpbmcsIGVudHJ5KSB7XG4gIGlmIChlbnRyeS5kZXNjcmlwdG9yLmlkID09PSBkcmFnZ2luZy5pZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZW50cnkuZGVzY3JpcHRvci50eXBlICE9PSBkcmFnZ2luZy50eXBlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGhvbWUgPSByZWdpc3RyeS5kcm9wcGFibGUuZ2V0QnlJZChlbnRyeS5kZXNjcmlwdG9yLmRyb3BwYWJsZUlkKTtcbiAgaWYgKGhvbWUuZGVzY3JpcHRvci5tb2RlICE9PSAndmlydHVhbCcpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGBcbiAgICAgIFlvdSBhcmUgYXR0ZW1wdGluZyB0byBhZGQgb3IgcmVtb3ZlIGEgRHJhZ2dhYmxlIFtpZDogJHtlbnRyeS5kZXNjcmlwdG9yLmlkfV1cbiAgICAgIHdoaWxlIGEgZHJhZyBpcyBvY2N1cnJpbmcuIFRoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHZpcnR1YWwgbGlzdHMuXG5cbiAgICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vaGVsbG8tcGFuZ2VhL2RuZC9ibG9iL21haW4vZG9jcy9wYXR0ZXJucy92aXJ0dWFsLWxpc3RzLm1kXG4gICAgYCkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxudmFyIGNyZWF0ZURpbWVuc2lvbk1hcnNoYWwgPSAoKHJlZ2lzdHJ5LCBjYWxsYmFja3MpID0+IHtcbiAgbGV0IGNvbGxlY3Rpb24gPSBudWxsO1xuICBjb25zdCBwdWJsaXNoZXIgPSBjcmVhdGVQdWJsaXNoZXIoe1xuICAgIGNhbGxiYWNrczoge1xuICAgICAgcHVibGlzaDogY2FsbGJhY2tzLnB1Ymxpc2hXaGlsZURyYWdnaW5nLFxuICAgICAgY29sbGVjdGlvblN0YXJ0aW5nOiBjYWxsYmFja3MuY29sbGVjdGlvblN0YXJ0aW5nXG4gICAgfSxcbiAgICByZWdpc3RyeVxuICB9KTtcbiAgY29uc3QgdXBkYXRlRHJvcHBhYmxlSXNFbmFibGVkID0gKGlkLCBpc0VuYWJsZWQpID0+IHtcbiAgICAhcmVnaXN0cnkuZHJvcHBhYmxlLmV4aXN0cyhpZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGBDYW5ub3QgdXBkYXRlIGlzIGVuYWJsZWQgZmxhZyBvZiBEcm9wcGFibGUgJHtpZH0gYXMgaXQgaXMgbm90IHJlZ2lzdGVyZWRgKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgaWYgKCFjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNhbGxiYWNrcy51cGRhdGVEcm9wcGFibGVJc0VuYWJsZWQoe1xuICAgICAgaWQsXG4gICAgICBpc0VuYWJsZWRcbiAgICB9KTtcbiAgfTtcbiAgY29uc3QgdXBkYXRlRHJvcHBhYmxlSXNDb21iaW5lRW5hYmxlZCA9IChpZCwgaXNDb21iaW5lRW5hYmxlZCkgPT4ge1xuICAgIGlmICghY29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAhcmVnaXN0cnkuZHJvcHBhYmxlLmV4aXN0cyhpZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGBDYW5ub3QgdXBkYXRlIGlzQ29tYmluZUVuYWJsZWQgZmxhZyBvZiBEcm9wcGFibGUgJHtpZH0gYXMgaXQgaXMgbm90IHJlZ2lzdGVyZWRgKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY2FsbGJhY2tzLnVwZGF0ZURyb3BwYWJsZUlzQ29tYmluZUVuYWJsZWQoe1xuICAgICAgaWQsXG4gICAgICBpc0NvbWJpbmVFbmFibGVkXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHVwZGF0ZURyb3BwYWJsZVNjcm9sbCA9IChpZCwgbmV3U2Nyb2xsKSA9PiB7XG4gICAgaWYgKCFjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICFyZWdpc3RyeS5kcm9wcGFibGUuZXhpc3RzKGlkKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgYENhbm5vdCB1cGRhdGUgdGhlIHNjcm9sbCBvbiBEcm9wcGFibGUgJHtpZH0gYXMgaXQgaXMgbm90IHJlZ2lzdGVyZWRgKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY2FsbGJhY2tzLnVwZGF0ZURyb3BwYWJsZVNjcm9sbCh7XG4gICAgICBpZCxcbiAgICAgIG5ld1Njcm9sbFxuICAgIH0pO1xuICB9O1xuICBjb25zdCBzY3JvbGxEcm9wcGFibGUgPSAoaWQsIGNoYW5nZSkgPT4ge1xuICAgIGlmICghY29sbGVjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZWdpc3RyeS5kcm9wcGFibGUuZ2V0QnlJZChpZCkuY2FsbGJhY2tzLnNjcm9sbChjaGFuZ2UpO1xuICB9O1xuICBjb25zdCBzdG9wUHVibGlzaGluZyA9ICgpID0+IHtcbiAgICBpZiAoIWNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcHVibGlzaGVyLnN0b3AoKTtcbiAgICBjb25zdCBob21lID0gY29sbGVjdGlvbi5jcml0aWNhbC5kcm9wcGFibGU7XG4gICAgcmVnaXN0cnkuZHJvcHBhYmxlLmdldEFsbEJ5VHlwZShob21lLnR5cGUpLmZvckVhY2goZW50cnkgPT4gZW50cnkuY2FsbGJhY2tzLmRyYWdTdG9wcGVkKCkpO1xuICAgIGNvbGxlY3Rpb24udW5zdWJzY3JpYmUoKTtcbiAgICBjb2xsZWN0aW9uID0gbnVsbDtcbiAgfTtcbiAgY29uc3Qgc3Vic2NyaWJlciA9IGV2ZW50ID0+IHtcbiAgICAhY29sbGVjdGlvbiA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ1Nob3VsZCBvbmx5IGJlIHN1YnNjcmliZWQgd2hlbiBhIGNvbGxlY3Rpb24gaXMgb2NjdXJyaW5nJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIGNvbnN0IGRyYWdnaW5nID0gY29sbGVjdGlvbi5jcml0aWNhbC5kcmFnZ2FibGU7XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdBRERJVElPTicpIHtcbiAgICAgIGlmIChzaG91bGRQdWJsaXNoVXBkYXRlKHJlZ2lzdHJ5LCBkcmFnZ2luZywgZXZlbnQudmFsdWUpKSB7XG4gICAgICAgIHB1Ymxpc2hlci5hZGQoZXZlbnQudmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ1JFTU9WQUwnKSB7XG4gICAgICBpZiAoc2hvdWxkUHVibGlzaFVwZGF0ZShyZWdpc3RyeSwgZHJhZ2dpbmcsIGV2ZW50LnZhbHVlKSkge1xuICAgICAgICBwdWJsaXNoZXIucmVtb3ZlKGV2ZW50LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IHN0YXJ0UHVibGlzaGluZyA9IHJlcXVlc3QgPT4ge1xuICAgICEhY29sbGVjdGlvbiA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBzdGFydCBjYXB0dXJpbmcgY3JpdGljYWwgZGltZW5zaW9ucyBhcyB0aGVyZSBpcyBhbHJlYWR5IGEgY29sbGVjdGlvbicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjb25zdCBlbnRyeSA9IHJlZ2lzdHJ5LmRyYWdnYWJsZS5nZXRCeUlkKHJlcXVlc3QuZHJhZ2dhYmxlSWQpO1xuICAgIGNvbnN0IGhvbWUgPSByZWdpc3RyeS5kcm9wcGFibGUuZ2V0QnlJZChlbnRyeS5kZXNjcmlwdG9yLmRyb3BwYWJsZUlkKTtcbiAgICBjb25zdCBjcml0aWNhbCA9IHtcbiAgICAgIGRyYWdnYWJsZTogZW50cnkuZGVzY3JpcHRvcixcbiAgICAgIGRyb3BwYWJsZTogaG9tZS5kZXNjcmlwdG9yXG4gICAgfTtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHJlZ2lzdHJ5LnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbiAgICBjb2xsZWN0aW9uID0ge1xuICAgICAgY3JpdGljYWwsXG4gICAgICB1bnN1YnNjcmliZVxuICAgIH07XG4gICAgcmV0dXJuIGdldEluaXRpYWxQdWJsaXNoKHtcbiAgICAgIGNyaXRpY2FsLFxuICAgICAgcmVnaXN0cnksXG4gICAgICBzY3JvbGxPcHRpb25zOiByZXF1ZXN0LnNjcm9sbE9wdGlvbnNcbiAgICB9KTtcbiAgfTtcbiAgY29uc3QgbWFyc2hhbCA9IHtcbiAgICB1cGRhdGVEcm9wcGFibGVJc0VuYWJsZWQsXG4gICAgdXBkYXRlRHJvcHBhYmxlSXNDb21iaW5lRW5hYmxlZCxcbiAgICBzY3JvbGxEcm9wcGFibGUsXG4gICAgdXBkYXRlRHJvcHBhYmxlU2Nyb2xsLFxuICAgIHN0YXJ0UHVibGlzaGluZyxcbiAgICBzdG9wUHVibGlzaGluZ1xuICB9O1xuICByZXR1cm4gbWFyc2hhbDtcbn0pO1xuXG52YXIgY2FuU3RhcnREcmFnID0gKChzdGF0ZSwgaWQpID0+IHtcbiAgaWYgKHN0YXRlLnBoYXNlID09PSAnSURMRScpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoc3RhdGUucGhhc2UgIT09ICdEUk9QX0FOSU1BVElORycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHN0YXRlLmNvbXBsZXRlZC5yZXN1bHQuZHJhZ2dhYmxlSWQgPT09IGlkKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBzdGF0ZS5jb21wbGV0ZWQucmVzdWx0LnJlYXNvbiA9PT0gJ0RST1AnO1xufSk7XG5cbnZhciBzY3JvbGxXaW5kb3cgPSAoY2hhbmdlID0+IHtcbiAgd2luZG93LnNjcm9sbEJ5KGNoYW5nZS54LCBjaGFuZ2UueSk7XG59KTtcblxuY29uc3QgZ2V0U2Nyb2xsYWJsZURyb3BwYWJsZXMgPSBtZW1vaXplT25lKGRyb3BwYWJsZXMgPT4gdG9Ecm9wcGFibGVMaXN0KGRyb3BwYWJsZXMpLmZpbHRlcihkcm9wcGFibGUgPT4ge1xuICBpZiAoIWRyb3BwYWJsZS5pc0VuYWJsZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCFkcm9wcGFibGUuZnJhbWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59KSk7XG5jb25zdCBnZXRTY3JvbGxhYmxlRHJvcHBhYmxlT3ZlciA9ICh0YXJnZXQsIGRyb3BwYWJsZXMpID0+IHtcbiAgY29uc3QgbWF5YmUgPSBnZXRTY3JvbGxhYmxlRHJvcHBhYmxlcyhkcm9wcGFibGVzKS5maW5kKGRyb3BwYWJsZSA9PiB7XG4gICAgIWRyb3BwYWJsZS5mcmFtZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0ludmFsaWQgcmVzdWx0JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIHJldHVybiBpc1Bvc2l0aW9uSW5GcmFtZShkcm9wcGFibGUuZnJhbWUucGFnZU1hcmdpbkJveCkodGFyZ2V0KTtcbiAgfSkgfHwgbnVsbDtcbiAgcmV0dXJuIG1heWJlO1xufTtcbnZhciBnZXRCZXN0U2Nyb2xsYWJsZURyb3BwYWJsZSA9ICgoe1xuICBjZW50ZXIsXG4gIGRlc3RpbmF0aW9uLFxuICBkcm9wcGFibGVzXG59KSA9PiB7XG4gIGlmIChkZXN0aW5hdGlvbikge1xuICAgIGNvbnN0IGRpbWVuc2lvbiA9IGRyb3BwYWJsZXNbZGVzdGluYXRpb25dO1xuICAgIGlmICghZGltZW5zaW9uLmZyYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGRpbWVuc2lvbjtcbiAgfVxuICBjb25zdCBkaW1lbnNpb24gPSBnZXRTY3JvbGxhYmxlRHJvcHBhYmxlT3ZlcihjZW50ZXIsIGRyb3BwYWJsZXMpO1xuICByZXR1cm4gZGltZW5zaW9uO1xufSk7XG5cbmNvbnN0IGRlZmF1bHRBdXRvU2Nyb2xsZXJPcHRpb25zID0ge1xuICBzdGFydEZyb21QZXJjZW50YWdlOiAwLjI1LFxuICBtYXhTY3JvbGxBdFBlcmNlbnRhZ2U6IDAuMDUsXG4gIG1heFBpeGVsU2Nyb2xsOiAyOCxcbiAgZWFzZTogcGVyY2VudGFnZSA9PiBwZXJjZW50YWdlICoqIDIsXG4gIGR1cmF0aW9uRGFtcGVuaW5nOiB7XG4gICAgc3RvcERhbXBlbmluZ0F0OiAxMjAwLFxuICAgIGFjY2VsZXJhdGVBdDogMzYwXG4gIH0sXG4gIGRpc2FibGVkOiBmYWxzZVxufTtcblxudmFyIGdldERpc3RhbmNlVGhyZXNob2xkcyA9ICgoY29udGFpbmVyLCBheGlzLCBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zID0gKCkgPT4gZGVmYXVsdEF1dG9TY3JvbGxlck9wdGlvbnMpID0+IHtcbiAgY29uc3QgYXV0b1Njcm9sbGVyT3B0aW9ucyA9IGdldEF1dG9TY3JvbGxlck9wdGlvbnMoKTtcbiAgY29uc3Qgc3RhcnRTY3JvbGxpbmdGcm9tID0gY29udGFpbmVyW2F4aXMuc2l6ZV0gKiBhdXRvU2Nyb2xsZXJPcHRpb25zLnN0YXJ0RnJvbVBlcmNlbnRhZ2U7XG4gIGNvbnN0IG1heFNjcm9sbFZhbHVlQXQgPSBjb250YWluZXJbYXhpcy5zaXplXSAqIGF1dG9TY3JvbGxlck9wdGlvbnMubWF4U2Nyb2xsQXRQZXJjZW50YWdlO1xuICBjb25zdCB0aHJlc2hvbGRzID0ge1xuICAgIHN0YXJ0U2Nyb2xsaW5nRnJvbSxcbiAgICBtYXhTY3JvbGxWYWx1ZUF0XG4gIH07XG4gIHJldHVybiB0aHJlc2hvbGRzO1xufSk7XG5cbnZhciBnZXRQZXJjZW50YWdlID0gKCh7XG4gIHN0YXJ0T2ZSYW5nZSxcbiAgZW5kT2ZSYW5nZSxcbiAgY3VycmVudFxufSkgPT4ge1xuICBjb25zdCByYW5nZSA9IGVuZE9mUmFuZ2UgLSBzdGFydE9mUmFuZ2U7XG4gIGlmIChyYW5nZSA9PT0gMCkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoYFxuICAgICAgRGV0ZWN0ZWQgZGlzdGFuY2UgcmFuZ2Ugb2YgMCBpbiB0aGUgZmx1aWQgYXV0byBzY3JvbGxlclxuICAgICAgVGhpcyBpcyB1bmV4cGVjdGVkIGFuZCB3b3VsZCBjYXVzZSBhIGRpdmlkZSBieSAwIGlzc3VlLlxuICAgICAgTm90IGFsbG93aW5nIGFuIGF1dG8gc2Nyb2xsXG4gICAgYCkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY29uc3QgY3VycmVudEluUmFuZ2UgPSBjdXJyZW50IC0gc3RhcnRPZlJhbmdlO1xuICBjb25zdCBwZXJjZW50YWdlID0gY3VycmVudEluUmFuZ2UgLyByYW5nZTtcbiAgcmV0dXJuIHBlcmNlbnRhZ2U7XG59KTtcblxudmFyIG1pblNjcm9sbCA9IDE7XG5cbnZhciBnZXRWYWx1ZUZyb21EaXN0YW5jZSA9ICgoZGlzdGFuY2VUb0VkZ2UsIHRocmVzaG9sZHMsIGdldEF1dG9TY3JvbGxlck9wdGlvbnMgPSAoKSA9PiBkZWZhdWx0QXV0b1Njcm9sbGVyT3B0aW9ucykgPT4ge1xuICBjb25zdCBhdXRvU2Nyb2xsZXJPcHRpb25zID0gZ2V0QXV0b1Njcm9sbGVyT3B0aW9ucygpO1xuICBpZiAoZGlzdGFuY2VUb0VkZ2UgPiB0aHJlc2hvbGRzLnN0YXJ0U2Nyb2xsaW5nRnJvbSkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmIChkaXN0YW5jZVRvRWRnZSA8PSB0aHJlc2hvbGRzLm1heFNjcm9sbFZhbHVlQXQpIHtcbiAgICByZXR1cm4gYXV0b1Njcm9sbGVyT3B0aW9ucy5tYXhQaXhlbFNjcm9sbDtcbiAgfVxuICBpZiAoZGlzdGFuY2VUb0VkZ2UgPT09IHRocmVzaG9sZHMuc3RhcnRTY3JvbGxpbmdGcm9tKSB7XG4gICAgcmV0dXJuIG1pblNjcm9sbDtcbiAgfVxuICBjb25zdCBwZXJjZW50YWdlRnJvbU1heFNjcm9sbFZhbHVlQXQgPSBnZXRQZXJjZW50YWdlKHtcbiAgICBzdGFydE9mUmFuZ2U6IHRocmVzaG9sZHMubWF4U2Nyb2xsVmFsdWVBdCxcbiAgICBlbmRPZlJhbmdlOiB0aHJlc2hvbGRzLnN0YXJ0U2Nyb2xsaW5nRnJvbSxcbiAgICBjdXJyZW50OiBkaXN0YW5jZVRvRWRnZVxuICB9KTtcbiAgY29uc3QgcGVyY2VudGFnZUZyb21TdGFydFNjcm9sbGluZ0Zyb20gPSAxIC0gcGVyY2VudGFnZUZyb21NYXhTY3JvbGxWYWx1ZUF0O1xuICBjb25zdCBzY3JvbGwgPSBhdXRvU2Nyb2xsZXJPcHRpb25zLm1heFBpeGVsU2Nyb2xsICogYXV0b1Njcm9sbGVyT3B0aW9ucy5lYXNlKHBlcmNlbnRhZ2VGcm9tU3RhcnRTY3JvbGxpbmdGcm9tKTtcbiAgcmV0dXJuIE1hdGguY2VpbChzY3JvbGwpO1xufSk7XG5cbnZhciBkYW1wZW5WYWx1ZUJ5VGltZSA9ICgocHJvcG9zZWRTY3JvbGwsIGRyYWdTdGFydFRpbWUsIGdldEF1dG9TY3JvbGxlck9wdGlvbnMpID0+IHtcbiAgY29uc3QgYXV0b1Njcm9sbGVyT3B0aW9ucyA9IGdldEF1dG9TY3JvbGxlck9wdGlvbnMoKTtcbiAgY29uc3QgYWNjZWxlcmF0ZUF0ID0gYXV0b1Njcm9sbGVyT3B0aW9ucy5kdXJhdGlvbkRhbXBlbmluZy5hY2NlbGVyYXRlQXQ7XG4gIGNvbnN0IHN0b3BBdCA9IGF1dG9TY3JvbGxlck9wdGlvbnMuZHVyYXRpb25EYW1wZW5pbmcuc3RvcERhbXBlbmluZ0F0O1xuICBjb25zdCBzdGFydE9mUmFuZ2UgPSBkcmFnU3RhcnRUaW1lO1xuICBjb25zdCBlbmRPZlJhbmdlID0gc3RvcEF0O1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCBydW5UaW1lID0gbm93IC0gc3RhcnRPZlJhbmdlO1xuICBpZiAocnVuVGltZSA+PSBzdG9wQXQpIHtcbiAgICByZXR1cm4gcHJvcG9zZWRTY3JvbGw7XG4gIH1cbiAgaWYgKHJ1blRpbWUgPCBhY2NlbGVyYXRlQXQpIHtcbiAgICByZXR1cm4gbWluU2Nyb2xsO1xuICB9XG4gIGNvbnN0IGJldHdlZW5BY2NlbGVyYXRlQXRBbmRTdG9wQXRQZXJjZW50YWdlID0gZ2V0UGVyY2VudGFnZSh7XG4gICAgc3RhcnRPZlJhbmdlOiBhY2NlbGVyYXRlQXQsXG4gICAgZW5kT2ZSYW5nZSxcbiAgICBjdXJyZW50OiBydW5UaW1lXG4gIH0pO1xuICBjb25zdCBzY3JvbGwgPSBwcm9wb3NlZFNjcm9sbCAqIGF1dG9TY3JvbGxlck9wdGlvbnMuZWFzZShiZXR3ZWVuQWNjZWxlcmF0ZUF0QW5kU3RvcEF0UGVyY2VudGFnZSk7XG4gIHJldHVybiBNYXRoLmNlaWwoc2Nyb2xsKTtcbn0pO1xuXG52YXIgZ2V0VmFsdWUgPSAoKHtcbiAgZGlzdGFuY2VUb0VkZ2UsXG4gIHRocmVzaG9sZHMsXG4gIGRyYWdTdGFydFRpbWUsXG4gIHNob3VsZFVzZVRpbWVEYW1wZW5pbmcsXG4gIGdldEF1dG9TY3JvbGxlck9wdGlvbnNcbn0pID0+IHtcbiAgY29uc3Qgc2Nyb2xsID0gZ2V0VmFsdWVGcm9tRGlzdGFuY2UoZGlzdGFuY2VUb0VkZ2UsIHRocmVzaG9sZHMsIGdldEF1dG9TY3JvbGxlck9wdGlvbnMpO1xuICBpZiAoc2Nyb2xsID09PSAwKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKCFzaG91bGRVc2VUaW1lRGFtcGVuaW5nKSB7XG4gICAgcmV0dXJuIHNjcm9sbDtcbiAgfVxuICByZXR1cm4gTWF0aC5tYXgoZGFtcGVuVmFsdWVCeVRpbWUoc2Nyb2xsLCBkcmFnU3RhcnRUaW1lLCBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zKSwgbWluU2Nyb2xsKTtcbn0pO1xuXG52YXIgZ2V0U2Nyb2xsT25BeGlzID0gKCh7XG4gIGNvbnRhaW5lcixcbiAgZGlzdGFuY2VUb0VkZ2VzLFxuICBkcmFnU3RhcnRUaW1lLFxuICBheGlzLFxuICBzaG91bGRVc2VUaW1lRGFtcGVuaW5nLFxuICBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zXG59KSA9PiB7XG4gIGNvbnN0IHRocmVzaG9sZHMgPSBnZXREaXN0YW5jZVRocmVzaG9sZHMoY29udGFpbmVyLCBheGlzLCBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zKTtcbiAgY29uc3QgaXNDbG9zZXJUb0VuZCA9IGRpc3RhbmNlVG9FZGdlc1theGlzLmVuZF0gPCBkaXN0YW5jZVRvRWRnZXNbYXhpcy5zdGFydF07XG4gIGlmIChpc0Nsb3NlclRvRW5kKSB7XG4gICAgcmV0dXJuIGdldFZhbHVlKHtcbiAgICAgIGRpc3RhbmNlVG9FZGdlOiBkaXN0YW5jZVRvRWRnZXNbYXhpcy5lbmRdLFxuICAgICAgdGhyZXNob2xkcyxcbiAgICAgIGRyYWdTdGFydFRpbWUsXG4gICAgICBzaG91bGRVc2VUaW1lRGFtcGVuaW5nLFxuICAgICAgZ2V0QXV0b1Njcm9sbGVyT3B0aW9uc1xuICAgIH0pO1xuICB9XG4gIHJldHVybiAtMSAqIGdldFZhbHVlKHtcbiAgICBkaXN0YW5jZVRvRWRnZTogZGlzdGFuY2VUb0VkZ2VzW2F4aXMuc3RhcnRdLFxuICAgIHRocmVzaG9sZHMsXG4gICAgZHJhZ1N0YXJ0VGltZSxcbiAgICBzaG91bGRVc2VUaW1lRGFtcGVuaW5nLFxuICAgIGdldEF1dG9TY3JvbGxlck9wdGlvbnNcbiAgfSk7XG59KTtcblxudmFyIGFkanVzdEZvclNpemVMaW1pdHMgPSAoKHtcbiAgY29udGFpbmVyLFxuICBzdWJqZWN0LFxuICBwcm9wb3NlZFNjcm9sbFxufSkgPT4ge1xuICBjb25zdCBpc1Rvb0JpZ1ZlcnRpY2FsbHkgPSBzdWJqZWN0LmhlaWdodCA+IGNvbnRhaW5lci5oZWlnaHQ7XG4gIGNvbnN0IGlzVG9vQmlnSG9yaXpvbnRhbGx5ID0gc3ViamVjdC53aWR0aCA+IGNvbnRhaW5lci53aWR0aDtcbiAgaWYgKCFpc1Rvb0JpZ0hvcml6b250YWxseSAmJiAhaXNUb29CaWdWZXJ0aWNhbGx5KSB7XG4gICAgcmV0dXJuIHByb3Bvc2VkU2Nyb2xsO1xuICB9XG4gIGlmIChpc1Rvb0JpZ0hvcml6b250YWxseSAmJiBpc1Rvb0JpZ1ZlcnRpY2FsbHkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IGlzVG9vQmlnSG9yaXpvbnRhbGx5ID8gMCA6IHByb3Bvc2VkU2Nyb2xsLngsXG4gICAgeTogaXNUb29CaWdWZXJ0aWNhbGx5ID8gMCA6IHByb3Bvc2VkU2Nyb2xsLnlcbiAgfTtcbn0pO1xuXG5jb25zdCBjbGVhbiA9IGFwcGx5KHZhbHVlID0+IHZhbHVlID09PSAwID8gMCA6IHZhbHVlKTtcbnZhciBnZXRTY3JvbGwkMSA9ICgoe1xuICBkcmFnU3RhcnRUaW1lLFxuICBjb250YWluZXIsXG4gIHN1YmplY3QsXG4gIGNlbnRlcixcbiAgc2hvdWxkVXNlVGltZURhbXBlbmluZyxcbiAgZ2V0QXV0b1Njcm9sbGVyT3B0aW9uc1xufSkgPT4ge1xuICBjb25zdCBkaXN0YW5jZVRvRWRnZXMgPSB7XG4gICAgdG9wOiBjZW50ZXIueSAtIGNvbnRhaW5lci50b3AsXG4gICAgcmlnaHQ6IGNvbnRhaW5lci5yaWdodCAtIGNlbnRlci54LFxuICAgIGJvdHRvbTogY29udGFpbmVyLmJvdHRvbSAtIGNlbnRlci55LFxuICAgIGxlZnQ6IGNlbnRlci54IC0gY29udGFpbmVyLmxlZnRcbiAgfTtcbiAgY29uc3QgeSA9IGdldFNjcm9sbE9uQXhpcyh7XG4gICAgY29udGFpbmVyLFxuICAgIGRpc3RhbmNlVG9FZGdlcyxcbiAgICBkcmFnU3RhcnRUaW1lLFxuICAgIGF4aXM6IHZlcnRpY2FsLFxuICAgIHNob3VsZFVzZVRpbWVEYW1wZW5pbmcsXG4gICAgZ2V0QXV0b1Njcm9sbGVyT3B0aW9uc1xuICB9KTtcbiAgY29uc3QgeCA9IGdldFNjcm9sbE9uQXhpcyh7XG4gICAgY29udGFpbmVyLFxuICAgIGRpc3RhbmNlVG9FZGdlcyxcbiAgICBkcmFnU3RhcnRUaW1lLFxuICAgIGF4aXM6IGhvcml6b250YWwsXG4gICAgc2hvdWxkVXNlVGltZURhbXBlbmluZyxcbiAgICBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zXG4gIH0pO1xuICBjb25zdCByZXF1aXJlZCA9IGNsZWFuKHtcbiAgICB4LFxuICAgIHlcbiAgfSk7XG4gIGlmIChpc0VxdWFsJDEocmVxdWlyZWQsIG9yaWdpbikpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBsaW1pdGVkID0gYWRqdXN0Rm9yU2l6ZUxpbWl0cyh7XG4gICAgY29udGFpbmVyLFxuICAgIHN1YmplY3QsXG4gICAgcHJvcG9zZWRTY3JvbGw6IHJlcXVpcmVkXG4gIH0pO1xuICBpZiAoIWxpbWl0ZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gaXNFcXVhbCQxKGxpbWl0ZWQsIG9yaWdpbikgPyBudWxsIDogbGltaXRlZDtcbn0pO1xuXG5jb25zdCBzbWFsbGVzdFNpZ25lZCA9IGFwcGx5KHZhbHVlID0+IHtcbiAgaWYgKHZhbHVlID09PSAwKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHZhbHVlID4gMCA/IDEgOiAtMTtcbn0pO1xuY29uc3QgZ2V0T3ZlcmxhcCA9ICgoKSA9PiB7XG4gIGNvbnN0IGdldFJlbWFpbmRlciA9ICh0YXJnZXQsIG1heCkgPT4ge1xuICAgIGlmICh0YXJnZXQgPCAwKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cbiAgICBpZiAodGFyZ2V0ID4gbWF4KSB7XG4gICAgICByZXR1cm4gdGFyZ2V0IC0gbWF4O1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfTtcbiAgcmV0dXJuICh7XG4gICAgY3VycmVudCxcbiAgICBtYXgsXG4gICAgY2hhbmdlXG4gIH0pID0+IHtcbiAgICBjb25zdCB0YXJnZXRTY3JvbGwgPSBhZGQoY3VycmVudCwgY2hhbmdlKTtcbiAgICBjb25zdCBvdmVybGFwID0ge1xuICAgICAgeDogZ2V0UmVtYWluZGVyKHRhcmdldFNjcm9sbC54LCBtYXgueCksXG4gICAgICB5OiBnZXRSZW1haW5kZXIodGFyZ2V0U2Nyb2xsLnksIG1heC55KVxuICAgIH07XG4gICAgaWYgKGlzRXF1YWwkMShvdmVybGFwLCBvcmlnaW4pKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG92ZXJsYXA7XG4gIH07XG59KSgpO1xuY29uc3QgY2FuUGFydGlhbGx5U2Nyb2xsID0gKHtcbiAgbWF4OiByYXdNYXgsXG4gIGN1cnJlbnQsXG4gIGNoYW5nZVxufSkgPT4ge1xuICBjb25zdCBtYXggPSB7XG4gICAgeDogTWF0aC5tYXgoY3VycmVudC54LCByYXdNYXgueCksXG4gICAgeTogTWF0aC5tYXgoY3VycmVudC55LCByYXdNYXgueSlcbiAgfTtcbiAgY29uc3Qgc21hbGxlc3RDaGFuZ2UgPSBzbWFsbGVzdFNpZ25lZChjaGFuZ2UpO1xuICBjb25zdCBvdmVybGFwID0gZ2V0T3ZlcmxhcCh7XG4gICAgbWF4LFxuICAgIGN1cnJlbnQsXG4gICAgY2hhbmdlOiBzbWFsbGVzdENoYW5nZVxuICB9KTtcbiAgaWYgKCFvdmVybGFwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHNtYWxsZXN0Q2hhbmdlLnggIT09IDAgJiYgb3ZlcmxhcC54ID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHNtYWxsZXN0Q2hhbmdlLnkgIT09IDAgJiYgb3ZlcmxhcC55ID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbmNvbnN0IGNhblNjcm9sbFdpbmRvdyA9ICh2aWV3cG9ydCwgY2hhbmdlKSA9PiBjYW5QYXJ0aWFsbHlTY3JvbGwoe1xuICBjdXJyZW50OiB2aWV3cG9ydC5zY3JvbGwuY3VycmVudCxcbiAgbWF4OiB2aWV3cG9ydC5zY3JvbGwubWF4LFxuICBjaGFuZ2Vcbn0pO1xuY29uc3QgZ2V0V2luZG93T3ZlcmxhcCA9ICh2aWV3cG9ydCwgY2hhbmdlKSA9PiB7XG4gIGlmICghY2FuU2Nyb2xsV2luZG93KHZpZXdwb3J0LCBjaGFuZ2UpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgbWF4ID0gdmlld3BvcnQuc2Nyb2xsLm1heDtcbiAgY29uc3QgY3VycmVudCA9IHZpZXdwb3J0LnNjcm9sbC5jdXJyZW50O1xuICByZXR1cm4gZ2V0T3ZlcmxhcCh7XG4gICAgY3VycmVudCxcbiAgICBtYXgsXG4gICAgY2hhbmdlXG4gIH0pO1xufTtcbmNvbnN0IGNhblNjcm9sbERyb3BwYWJsZSA9IChkcm9wcGFibGUsIGNoYW5nZSkgPT4ge1xuICBjb25zdCBmcmFtZSA9IGRyb3BwYWJsZS5mcmFtZTtcbiAgaWYgKCFmcmFtZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gY2FuUGFydGlhbGx5U2Nyb2xsKHtcbiAgICBjdXJyZW50OiBmcmFtZS5zY3JvbGwuY3VycmVudCxcbiAgICBtYXg6IGZyYW1lLnNjcm9sbC5tYXgsXG4gICAgY2hhbmdlXG4gIH0pO1xufTtcbmNvbnN0IGdldERyb3BwYWJsZU92ZXJsYXAgPSAoZHJvcHBhYmxlLCBjaGFuZ2UpID0+IHtcbiAgY29uc3QgZnJhbWUgPSBkcm9wcGFibGUuZnJhbWU7XG4gIGlmICghZnJhbWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIWNhblNjcm9sbERyb3BwYWJsZShkcm9wcGFibGUsIGNoYW5nZSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gZ2V0T3ZlcmxhcCh7XG4gICAgY3VycmVudDogZnJhbWUuc2Nyb2xsLmN1cnJlbnQsXG4gICAgbWF4OiBmcmFtZS5zY3JvbGwubWF4LFxuICAgIGNoYW5nZVxuICB9KTtcbn07XG5cbnZhciBnZXRXaW5kb3dTY3JvbGxDaGFuZ2UgPSAoKHtcbiAgdmlld3BvcnQsXG4gIHN1YmplY3QsXG4gIGNlbnRlcixcbiAgZHJhZ1N0YXJ0VGltZSxcbiAgc2hvdWxkVXNlVGltZURhbXBlbmluZyxcbiAgZ2V0QXV0b1Njcm9sbGVyT3B0aW9uc1xufSkgPT4ge1xuICBjb25zdCBzY3JvbGwgPSBnZXRTY3JvbGwkMSh7XG4gICAgZHJhZ1N0YXJ0VGltZSxcbiAgICBjb250YWluZXI6IHZpZXdwb3J0LmZyYW1lLFxuICAgIHN1YmplY3QsXG4gICAgY2VudGVyLFxuICAgIHNob3VsZFVzZVRpbWVEYW1wZW5pbmcsXG4gICAgZ2V0QXV0b1Njcm9sbGVyT3B0aW9uc1xuICB9KTtcbiAgcmV0dXJuIHNjcm9sbCAmJiBjYW5TY3JvbGxXaW5kb3codmlld3BvcnQsIHNjcm9sbCkgPyBzY3JvbGwgOiBudWxsO1xufSk7XG5cbnZhciBnZXREcm9wcGFibGVTY3JvbGxDaGFuZ2UgPSAoKHtcbiAgZHJvcHBhYmxlLFxuICBzdWJqZWN0LFxuICBjZW50ZXIsXG4gIGRyYWdTdGFydFRpbWUsXG4gIHNob3VsZFVzZVRpbWVEYW1wZW5pbmcsXG4gIGdldEF1dG9TY3JvbGxlck9wdGlvbnNcbn0pID0+IHtcbiAgY29uc3QgZnJhbWUgPSBkcm9wcGFibGUuZnJhbWU7XG4gIGlmICghZnJhbWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBzY3JvbGwgPSBnZXRTY3JvbGwkMSh7XG4gICAgZHJhZ1N0YXJ0VGltZSxcbiAgICBjb250YWluZXI6IGZyYW1lLnBhZ2VNYXJnaW5Cb3gsXG4gICAgc3ViamVjdCxcbiAgICBjZW50ZXIsXG4gICAgc2hvdWxkVXNlVGltZURhbXBlbmluZyxcbiAgICBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zXG4gIH0pO1xuICByZXR1cm4gc2Nyb2xsICYmIGNhblNjcm9sbERyb3BwYWJsZShkcm9wcGFibGUsIHNjcm9sbCkgPyBzY3JvbGwgOiBudWxsO1xufSk7XG5cbnZhciBzY3JvbGwgPSAoKHtcbiAgc3RhdGUsXG4gIGRyYWdTdGFydFRpbWUsXG4gIHNob3VsZFVzZVRpbWVEYW1wZW5pbmcsXG4gIHNjcm9sbFdpbmRvdyxcbiAgc2Nyb2xsRHJvcHBhYmxlLFxuICBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zXG59KSA9PiB7XG4gIGNvbnN0IGNlbnRlciA9IHN0YXRlLmN1cnJlbnQucGFnZS5ib3JkZXJCb3hDZW50ZXI7XG4gIGNvbnN0IGRyYWdnYWJsZSA9IHN0YXRlLmRpbWVuc2lvbnMuZHJhZ2dhYmxlc1tzdGF0ZS5jcml0aWNhbC5kcmFnZ2FibGUuaWRdO1xuICBjb25zdCBzdWJqZWN0ID0gZHJhZ2dhYmxlLnBhZ2UubWFyZ2luQm94O1xuICBpZiAoc3RhdGUuaXNXaW5kb3dTY3JvbGxBbGxvd2VkKSB7XG4gICAgY29uc3Qgdmlld3BvcnQgPSBzdGF0ZS52aWV3cG9ydDtcbiAgICBjb25zdCBjaGFuZ2UgPSBnZXRXaW5kb3dTY3JvbGxDaGFuZ2Uoe1xuICAgICAgZHJhZ1N0YXJ0VGltZSxcbiAgICAgIHZpZXdwb3J0LFxuICAgICAgc3ViamVjdCxcbiAgICAgIGNlbnRlcixcbiAgICAgIHNob3VsZFVzZVRpbWVEYW1wZW5pbmcsXG4gICAgICBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zXG4gICAgfSk7XG4gICAgaWYgKGNoYW5nZSkge1xuICAgICAgc2Nyb2xsV2luZG93KGNoYW5nZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG4gIGNvbnN0IGRyb3BwYWJsZSA9IGdldEJlc3RTY3JvbGxhYmxlRHJvcHBhYmxlKHtcbiAgICBjZW50ZXIsXG4gICAgZGVzdGluYXRpb246IHdoYXRJc0RyYWdnZWRPdmVyKHN0YXRlLmltcGFjdCksXG4gICAgZHJvcHBhYmxlczogc3RhdGUuZGltZW5zaW9ucy5kcm9wcGFibGVzXG4gIH0pO1xuICBpZiAoIWRyb3BwYWJsZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBjaGFuZ2UgPSBnZXREcm9wcGFibGVTY3JvbGxDaGFuZ2Uoe1xuICAgIGRyYWdTdGFydFRpbWUsXG4gICAgZHJvcHBhYmxlLFxuICAgIHN1YmplY3QsXG4gICAgY2VudGVyLFxuICAgIHNob3VsZFVzZVRpbWVEYW1wZW5pbmcsXG4gICAgZ2V0QXV0b1Njcm9sbGVyT3B0aW9uc1xuICB9KTtcbiAgaWYgKGNoYW5nZSkge1xuICAgIHNjcm9sbERyb3BwYWJsZShkcm9wcGFibGUuZGVzY3JpcHRvci5pZCwgY2hhbmdlKTtcbiAgfVxufSk7XG5cbnZhciBjcmVhdGVGbHVpZFNjcm9sbGVyID0gKCh7XG4gIHNjcm9sbFdpbmRvdyxcbiAgc2Nyb2xsRHJvcHBhYmxlLFxuICBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zID0gKCkgPT4gZGVmYXVsdEF1dG9TY3JvbGxlck9wdGlvbnNcbn0pID0+IHtcbiAgY29uc3Qgc2NoZWR1bGVXaW5kb3dTY3JvbGwgPSByYWZTY2hkKHNjcm9sbFdpbmRvdyk7XG4gIGNvbnN0IHNjaGVkdWxlRHJvcHBhYmxlU2Nyb2xsID0gcmFmU2NoZChzY3JvbGxEcm9wcGFibGUpO1xuICBsZXQgZHJhZ2dpbmcgPSBudWxsO1xuICBjb25zdCB0cnlTY3JvbGwgPSBzdGF0ZSA9PiB7XG4gICAgIWRyYWdnaW5nID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IGZsdWlkIHNjcm9sbCBpZiBub3QgZHJhZ2dpbmcnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3Qge1xuICAgICAgc2hvdWxkVXNlVGltZURhbXBlbmluZyxcbiAgICAgIGRyYWdTdGFydFRpbWVcbiAgICB9ID0gZHJhZ2dpbmc7XG4gICAgc2Nyb2xsKHtcbiAgICAgIHN0YXRlLFxuICAgICAgc2Nyb2xsV2luZG93OiBzY2hlZHVsZVdpbmRvd1Njcm9sbCxcbiAgICAgIHNjcm9sbERyb3BwYWJsZTogc2NoZWR1bGVEcm9wcGFibGVTY3JvbGwsXG4gICAgICBkcmFnU3RhcnRUaW1lLFxuICAgICAgc2hvdWxkVXNlVGltZURhbXBlbmluZyxcbiAgICAgIGdldEF1dG9TY3JvbGxlck9wdGlvbnNcbiAgICB9KTtcbiAgfTtcbiAgY29uc3Qgc3RhcnQkMSA9IHN0YXRlID0+IHtcbiAgICBzdGFydCgpO1xuICAgICEhZHJhZ2dpbmcgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3Qgc3RhcnQgYXV0byBzY3JvbGxpbmcgd2hlbiBhbHJlYWR5IHN0YXJ0ZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3QgZHJhZ1N0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgbGV0IHdhc1Njcm9sbE5lZWRlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGZha2VTY3JvbGxDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIHdhc1Njcm9sbE5lZWRlZCA9IHRydWU7XG4gICAgfTtcbiAgICBzY3JvbGwoe1xuICAgICAgc3RhdGUsXG4gICAgICBkcmFnU3RhcnRUaW1lOiAwLFxuICAgICAgc2hvdWxkVXNlVGltZURhbXBlbmluZzogZmFsc2UsXG4gICAgICBzY3JvbGxXaW5kb3c6IGZha2VTY3JvbGxDYWxsYmFjayxcbiAgICAgIHNjcm9sbERyb3BwYWJsZTogZmFrZVNjcm9sbENhbGxiYWNrLFxuICAgICAgZ2V0QXV0b1Njcm9sbGVyT3B0aW9uc1xuICAgIH0pO1xuICAgIGRyYWdnaW5nID0ge1xuICAgICAgZHJhZ1N0YXJ0VGltZSxcbiAgICAgIHNob3VsZFVzZVRpbWVEYW1wZW5pbmc6IHdhc1Njcm9sbE5lZWRlZFxuICAgIH07XG4gICAgZmluaXNoKCk7XG4gICAgaWYgKHdhc1Njcm9sbE5lZWRlZCkge1xuICAgICAgdHJ5U2Nyb2xsKHN0YXRlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHN0b3AgPSAoKSA9PiB7XG4gICAgaWYgKCFkcmFnZ2luZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzY2hlZHVsZVdpbmRvd1Njcm9sbC5jYW5jZWwoKTtcbiAgICBzY2hlZHVsZURyb3BwYWJsZVNjcm9sbC5jYW5jZWwoKTtcbiAgICBkcmFnZ2luZyA9IG51bGw7XG4gIH07XG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IHN0YXJ0JDEsXG4gICAgc3RvcCxcbiAgICBzY3JvbGw6IHRyeVNjcm9sbFxuICB9O1xufSk7XG5cbnZhciBjcmVhdGVKdW1wU2Nyb2xsZXIgPSAoKHtcbiAgbW92ZSxcbiAgc2Nyb2xsRHJvcHBhYmxlLFxuICBzY3JvbGxXaW5kb3dcbn0pID0+IHtcbiAgY29uc3QgbW92ZUJ5T2Zmc2V0ID0gKHN0YXRlLCBvZmZzZXQpID0+IHtcbiAgICBjb25zdCBjbGllbnQgPSBhZGQoc3RhdGUuY3VycmVudC5jbGllbnQuc2VsZWN0aW9uLCBvZmZzZXQpO1xuICAgIG1vdmUoe1xuICAgICAgY2xpZW50XG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IHNjcm9sbERyb3BwYWJsZUFzTXVjaEFzSXRDYW4gPSAoZHJvcHBhYmxlLCBjaGFuZ2UpID0+IHtcbiAgICBpZiAoIWNhblNjcm9sbERyb3BwYWJsZShkcm9wcGFibGUsIGNoYW5nZSkpIHtcbiAgICAgIHJldHVybiBjaGFuZ2U7XG4gICAgfVxuICAgIGNvbnN0IG92ZXJsYXAgPSBnZXREcm9wcGFibGVPdmVybGFwKGRyb3BwYWJsZSwgY2hhbmdlKTtcbiAgICBpZiAoIW92ZXJsYXApIHtcbiAgICAgIHNjcm9sbERyb3BwYWJsZShkcm9wcGFibGUuZGVzY3JpcHRvci5pZCwgY2hhbmdlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB3aGF0VGhlRHJvcHBhYmxlQ2FuU2Nyb2xsID0gc3VidHJhY3QoY2hhbmdlLCBvdmVybGFwKTtcbiAgICBzY3JvbGxEcm9wcGFibGUoZHJvcHBhYmxlLmRlc2NyaXB0b3IuaWQsIHdoYXRUaGVEcm9wcGFibGVDYW5TY3JvbGwpO1xuICAgIGNvbnN0IHJlbWFpbmRlciA9IHN1YnRyYWN0KGNoYW5nZSwgd2hhdFRoZURyb3BwYWJsZUNhblNjcm9sbCk7XG4gICAgcmV0dXJuIHJlbWFpbmRlcjtcbiAgfTtcbiAgY29uc3Qgc2Nyb2xsV2luZG93QXNNdWNoQXNJdENhbiA9IChpc1dpbmRvd1Njcm9sbEFsbG93ZWQsIHZpZXdwb3J0LCBjaGFuZ2UpID0+IHtcbiAgICBpZiAoIWlzV2luZG93U2Nyb2xsQWxsb3dlZCkge1xuICAgICAgcmV0dXJuIGNoYW5nZTtcbiAgICB9XG4gICAgaWYgKCFjYW5TY3JvbGxXaW5kb3codmlld3BvcnQsIGNoYW5nZSkpIHtcbiAgICAgIHJldHVybiBjaGFuZ2U7XG4gICAgfVxuICAgIGNvbnN0IG92ZXJsYXAgPSBnZXRXaW5kb3dPdmVybGFwKHZpZXdwb3J0LCBjaGFuZ2UpO1xuICAgIGlmICghb3ZlcmxhcCkge1xuICAgICAgc2Nyb2xsV2luZG93KGNoYW5nZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3Qgd2hhdFRoZVdpbmRvd0NhblNjcm9sbCA9IHN1YnRyYWN0KGNoYW5nZSwgb3ZlcmxhcCk7XG4gICAgc2Nyb2xsV2luZG93KHdoYXRUaGVXaW5kb3dDYW5TY3JvbGwpO1xuICAgIGNvbnN0IHJlbWFpbmRlciA9IHN1YnRyYWN0KGNoYW5nZSwgd2hhdFRoZVdpbmRvd0NhblNjcm9sbCk7XG4gICAgcmV0dXJuIHJlbWFpbmRlcjtcbiAgfTtcbiAgY29uc3QganVtcFNjcm9sbGVyID0gc3RhdGUgPT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBzdGF0ZS5zY3JvbGxKdW1wUmVxdWVzdDtcbiAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGVzdGluYXRpb24gPSB3aGF0SXNEcmFnZ2VkT3ZlcihzdGF0ZS5pbXBhY3QpO1xuICAgICFkZXN0aW5hdGlvbiA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwZXJmb3JtIGEganVtcCBzY3JvbGwgd2hlbiB0aGVyZSBpcyBubyBkZXN0aW5hdGlvbicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjb25zdCBkcm9wcGFibGVSZW1haW5kZXIgPSBzY3JvbGxEcm9wcGFibGVBc011Y2hBc0l0Q2FuKHN0YXRlLmRpbWVuc2lvbnMuZHJvcHBhYmxlc1tkZXN0aW5hdGlvbl0sIHJlcXVlc3QpO1xuICAgIGlmICghZHJvcHBhYmxlUmVtYWluZGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHZpZXdwb3J0ID0gc3RhdGUudmlld3BvcnQ7XG4gICAgY29uc3Qgd2luZG93UmVtYWluZGVyID0gc2Nyb2xsV2luZG93QXNNdWNoQXNJdENhbihzdGF0ZS5pc1dpbmRvd1Njcm9sbEFsbG93ZWQsIHZpZXdwb3J0LCBkcm9wcGFibGVSZW1haW5kZXIpO1xuICAgIGlmICghd2luZG93UmVtYWluZGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG1vdmVCeU9mZnNldChzdGF0ZSwgd2luZG93UmVtYWluZGVyKTtcbiAgfTtcbiAgcmV0dXJuIGp1bXBTY3JvbGxlcjtcbn0pO1xuXG52YXIgY3JlYXRlQXV0b1Njcm9sbGVyID0gKCh7XG4gIHNjcm9sbERyb3BwYWJsZSxcbiAgc2Nyb2xsV2luZG93LFxuICBtb3ZlLFxuICBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zXG59KSA9PiB7XG4gIGNvbnN0IGZsdWlkU2Nyb2xsZXIgPSBjcmVhdGVGbHVpZFNjcm9sbGVyKHtcbiAgICBzY3JvbGxXaW5kb3csXG4gICAgc2Nyb2xsRHJvcHBhYmxlLFxuICAgIGdldEF1dG9TY3JvbGxlck9wdGlvbnNcbiAgfSk7XG4gIGNvbnN0IGp1bXBTY3JvbGwgPSBjcmVhdGVKdW1wU2Nyb2xsZXIoe1xuICAgIG1vdmUsXG4gICAgc2Nyb2xsV2luZG93LFxuICAgIHNjcm9sbERyb3BwYWJsZVxuICB9KTtcbiAgY29uc3Qgc2Nyb2xsID0gc3RhdGUgPT4ge1xuICAgIGNvbnN0IGF1dG9TY3JvbGxlck9wdGlvbnMgPSBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zKCk7XG4gICAgaWYgKGF1dG9TY3JvbGxlck9wdGlvbnMuZGlzYWJsZWQgfHwgc3RhdGUucGhhc2UgIT09ICdEUkFHR0lORycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHN0YXRlLm1vdmVtZW50TW9kZSA9PT0gJ0ZMVUlEJykge1xuICAgICAgZmx1aWRTY3JvbGxlci5zY3JvbGwoc3RhdGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXN0YXRlLnNjcm9sbEp1bXBSZXF1ZXN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGp1bXBTY3JvbGwoc3RhdGUpO1xuICB9O1xuICBjb25zdCBzY3JvbGxlciA9IHtcbiAgICBzY3JvbGwsXG4gICAgc3RhcnQ6IGZsdWlkU2Nyb2xsZXIuc3RhcnQsXG4gICAgc3RvcDogZmx1aWRTY3JvbGxlci5zdG9wXG4gIH07XG4gIHJldHVybiBzY3JvbGxlcjtcbn0pO1xuXG5jb25zdCBwcmVmaXggPSAnZGF0YS1yZmQnO1xuY29uc3QgZHJhZ0hhbmRsZSA9ICgoKSA9PiB7XG4gIGNvbnN0IGJhc2UgPSBgJHtwcmVmaXh9LWRyYWctaGFuZGxlYDtcbiAgcmV0dXJuIHtcbiAgICBiYXNlLFxuICAgIGRyYWdnYWJsZUlkOiBgJHtiYXNlfS1kcmFnZ2FibGUtaWRgLFxuICAgIGNvbnRleHRJZDogYCR7YmFzZX0tY29udGV4dC1pZGBcbiAgfTtcbn0pKCk7XG5jb25zdCBkcmFnZ2FibGUgPSAoKCkgPT4ge1xuICBjb25zdCBiYXNlID0gYCR7cHJlZml4fS1kcmFnZ2FibGVgO1xuICByZXR1cm4ge1xuICAgIGJhc2UsXG4gICAgY29udGV4dElkOiBgJHtiYXNlfS1jb250ZXh0LWlkYCxcbiAgICBpZDogYCR7YmFzZX0taWRgXG4gIH07XG59KSgpO1xuY29uc3QgZHJvcHBhYmxlID0gKCgpID0+IHtcbiAgY29uc3QgYmFzZSA9IGAke3ByZWZpeH0tZHJvcHBhYmxlYDtcbiAgcmV0dXJuIHtcbiAgICBiYXNlLFxuICAgIGNvbnRleHRJZDogYCR7YmFzZX0tY29udGV4dC1pZGAsXG4gICAgaWQ6IGAke2Jhc2V9LWlkYFxuICB9O1xufSkoKTtcbmNvbnN0IHNjcm9sbENvbnRhaW5lciA9IHtcbiAgY29udGV4dElkOiBgJHtwcmVmaXh9LXNjcm9sbC1jb250YWluZXItY29udGV4dC1pZGBcbn07XG5cbmNvbnN0IG1ha2VHZXRTZWxlY3RvciA9IGNvbnRleHQgPT4gYXR0cmlidXRlID0+IGBbJHthdHRyaWJ1dGV9PVwiJHtjb250ZXh0fVwiXWA7XG5jb25zdCBnZXRTdHlsZXMgPSAocnVsZXMsIHByb3BlcnR5KSA9PiBydWxlcy5tYXAocnVsZSA9PiB7XG4gIGNvbnN0IHZhbHVlID0gcnVsZS5zdHlsZXNbcHJvcGVydHldO1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBgJHtydWxlLnNlbGVjdG9yfSB7ICR7dmFsdWV9IH1gO1xufSkuam9pbignICcpO1xuY29uc3Qgbm9Qb2ludGVyRXZlbnRzID0gJ3BvaW50ZXItZXZlbnRzOiBub25lOyc7XG52YXIgZ2V0U3R5bGVzJDEgPSAoY29udGV4dElkID0+IHtcbiAgY29uc3QgZ2V0U2VsZWN0b3IgPSBtYWtlR2V0U2VsZWN0b3IoY29udGV4dElkKTtcbiAgY29uc3QgZHJhZ0hhbmRsZSQxID0gKCgpID0+IHtcbiAgICBjb25zdCBncmFiQ3Vyc29yID0gYFxuICAgICAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XG4gICAgICBjdXJzb3I6IGdyYWI7XG4gICAgYDtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0b3I6IGdldFNlbGVjdG9yKGRyYWdIYW5kbGUuY29udGV4dElkKSxcbiAgICAgIHN0eWxlczoge1xuICAgICAgICBhbHdheXM6IGBcbiAgICAgICAgICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7XG4gICAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLDApO1xuICAgICAgICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgICAgICBgLFxuICAgICAgICByZXN0aW5nOiBncmFiQ3Vyc29yLFxuICAgICAgICBkcmFnZ2luZzogbm9Qb2ludGVyRXZlbnRzLFxuICAgICAgICBkcm9wQW5pbWF0aW5nOiBncmFiQ3Vyc29yXG4gICAgICB9XG4gICAgfTtcbiAgfSkoKTtcbiAgY29uc3QgZHJhZ2dhYmxlJDEgPSAoKCkgPT4ge1xuICAgIGNvbnN0IHRyYW5zaXRpb24gPSBgXG4gICAgICB0cmFuc2l0aW9uOiAke3RyYW5zaXRpb25zLm91dE9mVGhlV2F5fTtcbiAgICBgO1xuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3RvcjogZ2V0U2VsZWN0b3IoZHJhZ2dhYmxlLmNvbnRleHRJZCksXG4gICAgICBzdHlsZXM6IHtcbiAgICAgICAgZHJhZ2dpbmc6IHRyYW5zaXRpb24sXG4gICAgICAgIGRyb3BBbmltYXRpbmc6IHRyYW5zaXRpb24sXG4gICAgICAgIHVzZXJDYW5jZWw6IHRyYW5zaXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9KSgpO1xuICBjb25zdCBkcm9wcGFibGUkMSA9IHtcbiAgICBzZWxlY3RvcjogZ2V0U2VsZWN0b3IoZHJvcHBhYmxlLmNvbnRleHRJZCksXG4gICAgc3R5bGVzOiB7XG4gICAgICBhbHdheXM6IGBvdmVyZmxvdy1hbmNob3I6IG5vbmU7YFxuICAgIH1cbiAgfTtcbiAgY29uc3QgYm9keSA9IHtcbiAgICBzZWxlY3RvcjogJ2JvZHknLFxuICAgIHN0eWxlczoge1xuICAgICAgZHJhZ2dpbmc6IGBcbiAgICAgICAgY3Vyc29yOiBncmFiYmluZztcbiAgICAgICAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICBvdmVyZmxvdy1hbmNob3I6IG5vbmU7XG4gICAgICBgXG4gICAgfVxuICB9O1xuICBjb25zdCBydWxlcyA9IFtkcmFnZ2FibGUkMSwgZHJhZ0hhbmRsZSQxLCBkcm9wcGFibGUkMSwgYm9keV07XG4gIHJldHVybiB7XG4gICAgYWx3YXlzOiBnZXRTdHlsZXMocnVsZXMsICdhbHdheXMnKSxcbiAgICByZXN0aW5nOiBnZXRTdHlsZXMocnVsZXMsICdyZXN0aW5nJyksXG4gICAgZHJhZ2dpbmc6IGdldFN0eWxlcyhydWxlcywgJ2RyYWdnaW5nJyksXG4gICAgZHJvcEFuaW1hdGluZzogZ2V0U3R5bGVzKHJ1bGVzLCAnZHJvcEFuaW1hdGluZycpLFxuICAgIHVzZXJDYW5jZWw6IGdldFN0eWxlcyhydWxlcywgJ3VzZXJDYW5jZWwnKVxuICB9O1xufSk7XG5cbmNvbnN0IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgIT09ICd1bmRlZmluZWQnID8gdXNlTGF5b3V0RWZmZWN0JDEgOiB1c2VFZmZlY3Q7XG52YXIgdXNlTGF5b3V0RWZmZWN0ID0gdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdDtcblxuY29uc3QgZ2V0SGVhZCA9ICgpID0+IHtcbiAgY29uc3QgaGVhZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKTtcbiAgIWhlYWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgZmluZCB0aGUgaGVhZCB0byBhcHBlbmQgYSBzdHlsZSB0bycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgcmV0dXJuIGhlYWQ7XG59O1xuY29uc3QgY3JlYXRlU3R5bGVFbCA9IG5vbmNlID0+IHtcbiAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICBpZiAobm9uY2UpIHtcbiAgICBlbC5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgbm9uY2UpO1xuICB9XG4gIGVsLnR5cGUgPSAndGV4dC9jc3MnO1xuICByZXR1cm4gZWw7XG59O1xuZnVuY3Rpb24gdXNlU3R5bGVNYXJzaGFsKGNvbnRleHRJZCwgbm9uY2UpIHtcbiAgY29uc3Qgc3R5bGVzID0gdXNlTWVtbygoKSA9PiBnZXRTdHlsZXMkMShjb250ZXh0SWQpLCBbY29udGV4dElkXSk7XG4gIGNvbnN0IGFsd2F5c1JlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgZHluYW1pY1JlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3Qgc2V0RHluYW1pY1N0eWxlID0gdXNlQ2FsbGJhY2sobWVtb2l6ZU9uZShwcm9wb3NlZCA9PiB7XG4gICAgY29uc3QgZWwgPSBkeW5hbWljUmVmLmN1cnJlbnQ7XG4gICAgIWVsID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IHNldCBkeW5hbWljIHN0eWxlIGVsZW1lbnQgaWYgaXQgaXMgbm90IHNldCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBlbC50ZXh0Q29udGVudCA9IHByb3Bvc2VkO1xuICB9KSwgW10pO1xuICBjb25zdCBzZXRBbHdheXNTdHlsZSA9IHVzZUNhbGxiYWNrKHByb3Bvc2VkID0+IHtcbiAgICBjb25zdCBlbCA9IGFsd2F5c1JlZi5jdXJyZW50O1xuICAgICFlbCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBzZXQgZHluYW1pYyBzdHlsZSBlbGVtZW50IGlmIGl0IGlzIG5vdCBzZXQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgZWwudGV4dENvbnRlbnQgPSBwcm9wb3NlZDtcbiAgfSwgW10pO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICEoIWFsd2F5c1JlZi5jdXJyZW50ICYmICFkeW5hbWljUmVmLmN1cnJlbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnc3R5bGUgZWxlbWVudHMgYWxyZWFkeSBtb3VudGVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIGNvbnN0IGFsd2F5cyA9IGNyZWF0ZVN0eWxlRWwobm9uY2UpO1xuICAgIGNvbnN0IGR5bmFtaWMgPSBjcmVhdGVTdHlsZUVsKG5vbmNlKTtcbiAgICBhbHdheXNSZWYuY3VycmVudCA9IGFsd2F5cztcbiAgICBkeW5hbWljUmVmLmN1cnJlbnQgPSBkeW5hbWljO1xuICAgIGFsd2F5cy5zZXRBdHRyaWJ1dGUoYCR7cHJlZml4fS1hbHdheXNgLCBjb250ZXh0SWQpO1xuICAgIGR5bmFtaWMuc2V0QXR0cmlidXRlKGAke3ByZWZpeH0tZHluYW1pY2AsIGNvbnRleHRJZCk7XG4gICAgZ2V0SGVhZCgpLmFwcGVuZENoaWxkKGFsd2F5cyk7XG4gICAgZ2V0SGVhZCgpLmFwcGVuZENoaWxkKGR5bmFtaWMpO1xuICAgIHNldEFsd2F5c1N0eWxlKHN0eWxlcy5hbHdheXMpO1xuICAgIHNldER5bmFtaWNTdHlsZShzdHlsZXMucmVzdGluZyk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnN0IHJlbW92ZSA9IHJlZiA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSByZWYuY3VycmVudDtcbiAgICAgICAgIWN1cnJlbnQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgdW5tb3VudCByZWYgYXMgaXQgaXMgbm90IHNldCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICAgICAgZ2V0SGVhZCgpLnJlbW92ZUNoaWxkKGN1cnJlbnQpO1xuICAgICAgICByZWYuY3VycmVudCA9IG51bGw7XG4gICAgICB9O1xuICAgICAgcmVtb3ZlKGFsd2F5c1JlZik7XG4gICAgICByZW1vdmUoZHluYW1pY1JlZik7XG4gICAgfTtcbiAgfSwgW25vbmNlLCBzZXRBbHdheXNTdHlsZSwgc2V0RHluYW1pY1N0eWxlLCBzdHlsZXMuYWx3YXlzLCBzdHlsZXMucmVzdGluZywgY29udGV4dElkXSk7XG4gIGNvbnN0IGRyYWdnaW5nID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0RHluYW1pY1N0eWxlKHN0eWxlcy5kcmFnZ2luZyksIFtzZXREeW5hbWljU3R5bGUsIHN0eWxlcy5kcmFnZ2luZ10pO1xuICBjb25zdCBkcm9wcGluZyA9IHVzZUNhbGxiYWNrKHJlYXNvbiA9PiB7XG4gICAgaWYgKHJlYXNvbiA9PT0gJ0RST1AnKSB7XG4gICAgICBzZXREeW5hbWljU3R5bGUoc3R5bGVzLmRyb3BBbmltYXRpbmcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXREeW5hbWljU3R5bGUoc3R5bGVzLnVzZXJDYW5jZWwpO1xuICB9LCBbc2V0RHluYW1pY1N0eWxlLCBzdHlsZXMuZHJvcEFuaW1hdGluZywgc3R5bGVzLnVzZXJDYW5jZWxdKTtcbiAgY29uc3QgcmVzdGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIWR5bmFtaWNSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXREeW5hbWljU3R5bGUoc3R5bGVzLnJlc3RpbmcpO1xuICB9LCBbc2V0RHluYW1pY1N0eWxlLCBzdHlsZXMucmVzdGluZ10pO1xuICBjb25zdCBtYXJzaGFsID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIGRyYWdnaW5nLFxuICAgIGRyb3BwaW5nLFxuICAgIHJlc3RpbmdcbiAgfSksIFtkcmFnZ2luZywgZHJvcHBpbmcsIHJlc3RpbmddKTtcbiAgcmV0dXJuIG1hcnNoYWw7XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5U2VsZWN0b3JBbGwocGFyZW50Tm9kZSwgc2VsZWN0b3IpIHtcbiAgcmV0dXJuIEFycmF5LmZyb20ocGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG59XG5cbnZhciBnZXRXaW5kb3dGcm9tRWwgPSAoZWwgPT4ge1xuICBpZiAoZWwgJiYgZWwub3duZXJEb2N1bWVudCAmJiBlbC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB7XG4gICAgcmV0dXJuIGVsLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gIH1cbiAgcmV0dXJuIHdpbmRvdztcbn0pO1xuXG5mdW5jdGlvbiBpc0h0bWxFbGVtZW50KGVsKSB7XG4gIHJldHVybiBlbCBpbnN0YW5jZW9mIGdldFdpbmRvd0Zyb21FbChlbCkuSFRNTEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGZpbmREcmFnSGFuZGxlKGNvbnRleHRJZCwgZHJhZ2dhYmxlSWQpIHtcbiAgY29uc3Qgc2VsZWN0b3IgPSBgWyR7ZHJhZ0hhbmRsZS5jb250ZXh0SWR9PVwiJHtjb250ZXh0SWR9XCJdYDtcbiAgY29uc3QgcG9zc2libGUgPSBxdWVyeVNlbGVjdG9yQWxsKGRvY3VtZW50LCBzZWxlY3Rvcik7XG4gIGlmICghcG9zc2libGUubGVuZ3RoKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhgVW5hYmxlIHRvIGZpbmQgYW55IGRyYWcgaGFuZGxlcyBpbiB0aGUgY29udGV4dCBcIiR7Y29udGV4dElkfVwiYCkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgaGFuZGxlID0gcG9zc2libGUuZmluZChlbCA9PiB7XG4gICAgcmV0dXJuIGVsLmdldEF0dHJpYnV0ZShkcmFnSGFuZGxlLmRyYWdnYWJsZUlkKSA9PT0gZHJhZ2dhYmxlSWQ7XG4gIH0pO1xuICBpZiAoIWhhbmRsZSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoYFVuYWJsZSB0byBmaW5kIGRyYWcgaGFuZGxlIHdpdGggaWQgXCIke2RyYWdnYWJsZUlkfVwiIGFzIG5vIGhhbmRsZSB3aXRoIGEgbWF0Y2hpbmcgaWQgd2FzIGZvdW5kYCkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFpc0h0bWxFbGVtZW50KGhhbmRsZSkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKCdkcmFnIGhhbmRsZSBuZWVkcyB0byBiZSBhIEhUTUxFbGVtZW50JykgOiB2b2lkIDA7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGhhbmRsZTtcbn1cblxuZnVuY3Rpb24gdXNlRm9jdXNNYXJzaGFsKGNvbnRleHRJZCkge1xuICBjb25zdCBlbnRyaWVzUmVmID0gdXNlUmVmKHt9KTtcbiAgY29uc3QgcmVjb3JkUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCByZXN0b3JlRm9jdXNGcmFtZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaXNNb3VudGVkUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgcmVnaXN0ZXIgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiByZWdpc3RlcihpZCwgZm9jdXMpIHtcbiAgICBjb25zdCBlbnRyeSA9IHtcbiAgICAgIGlkLFxuICAgICAgZm9jdXNcbiAgICB9O1xuICAgIGVudHJpZXNSZWYuY3VycmVudFtpZF0gPSBlbnRyeTtcbiAgICByZXR1cm4gZnVuY3Rpb24gdW5yZWdpc3RlcigpIHtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBlbnRyaWVzUmVmLmN1cnJlbnQ7XG4gICAgICBjb25zdCBjdXJyZW50ID0gZW50cmllc1tpZF07XG4gICAgICBpZiAoY3VycmVudCAhPT0gZW50cnkpIHtcbiAgICAgICAgZGVsZXRlIGVudHJpZXNbaWRdO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcbiAgY29uc3QgdHJ5R2l2ZUZvY3VzID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gdHJ5R2l2ZUZvY3VzKHRyeUdpdmVGb2N1c1RvKSB7XG4gICAgY29uc3QgaGFuZGxlID0gZmluZERyYWdIYW5kbGUoY29udGV4dElkLCB0cnlHaXZlRm9jdXNUbyk7XG4gICAgaWYgKGhhbmRsZSAmJiBoYW5kbGUgIT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGhhbmRsZS5mb2N1cygpO1xuICAgIH1cbiAgfSwgW2NvbnRleHRJZF0pO1xuICBjb25zdCB0cnlTaGlmdFJlY29yZCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIHRyeVNoaWZ0UmVjb3JkKHByZXZpb3VzLCByZWRpcmVjdFRvKSB7XG4gICAgaWYgKHJlY29yZFJlZi5jdXJyZW50ID09PSBwcmV2aW91cykge1xuICAgICAgcmVjb3JkUmVmLmN1cnJlbnQgPSByZWRpcmVjdFRvO1xuICAgIH1cbiAgfSwgW10pO1xuICBjb25zdCB0cnlSZXN0b3JlRm9jdXNSZWNvcmRlZCA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIHRyeVJlc3RvcmVGb2N1c1JlY29yZGVkKCkge1xuICAgIGlmIChyZXN0b3JlRm9jdXNGcmFtZVJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNNb3VudGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVzdG9yZUZvY3VzRnJhbWVSZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICByZXN0b3JlRm9jdXNGcmFtZVJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgIGNvbnN0IHJlY29yZCA9IHJlY29yZFJlZi5jdXJyZW50O1xuICAgICAgaWYgKHJlY29yZCkge1xuICAgICAgICB0cnlHaXZlRm9jdXMocmVjb3JkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW3RyeUdpdmVGb2N1c10pO1xuICBjb25zdCB0cnlSZWNvcmRGb2N1cyA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIHRyeVJlY29yZEZvY3VzKGlkKSB7XG4gICAgcmVjb3JkUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIGNvbnN0IGZvY3VzZWQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGlmICghZm9jdXNlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZm9jdXNlZC5nZXRBdHRyaWJ1dGUoZHJhZ0hhbmRsZS5kcmFnZ2FibGVJZCkgIT09IGlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJlY29yZFJlZi5jdXJyZW50ID0gaWQ7XG4gIH0sIFtdKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFyRnJhbWVPblVubW91bnQoKSB7XG4gICAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgY29uc3QgZnJhbWVJZCA9IHJlc3RvcmVGb2N1c0ZyYW1lUmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoZnJhbWVJZCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG4gIGNvbnN0IG1hcnNoYWwgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgcmVnaXN0ZXIsXG4gICAgdHJ5UmVjb3JkRm9jdXMsXG4gICAgdHJ5UmVzdG9yZUZvY3VzUmVjb3JkZWQsXG4gICAgdHJ5U2hpZnRSZWNvcmRcbiAgfSksIFtyZWdpc3RlciwgdHJ5UmVjb3JkRm9jdXMsIHRyeVJlc3RvcmVGb2N1c1JlY29yZGVkLCB0cnlTaGlmdFJlY29yZF0pO1xuICByZXR1cm4gbWFyc2hhbDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUmVnaXN0cnkoKSB7XG4gIGNvbnN0IGVudHJpZXMgPSB7XG4gICAgZHJhZ2dhYmxlczoge30sXG4gICAgZHJvcHBhYmxlczoge31cbiAgfTtcbiAgY29uc3Qgc3Vic2NyaWJlcnMgPSBbXTtcbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGNiKSB7XG4gICAgc3Vic2NyaWJlcnMucHVzaChjYik7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgY29uc3QgaW5kZXggPSBzdWJzY3JpYmVycy5pbmRleE9mKGNiKTtcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3Vic2NyaWJlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIG5vdGlmeShldmVudCkge1xuICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGgpIHtcbiAgICAgIHN1YnNjcmliZXJzLmZvckVhY2goY2IgPT4gY2IoZXZlbnQpKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZmluZERyYWdnYWJsZUJ5SWQoaWQpIHtcbiAgICByZXR1cm4gZW50cmllcy5kcmFnZ2FibGVzW2lkXSB8fCBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIGdldERyYWdnYWJsZUJ5SWQoaWQpIHtcbiAgICBjb25zdCBlbnRyeSA9IGZpbmREcmFnZ2FibGVCeUlkKGlkKTtcbiAgICAhZW50cnkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGBDYW5ub3QgZmluZCBkcmFnZ2FibGUgZW50cnkgd2l0aCBpZCBbJHtpZH1dYCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIHJldHVybiBlbnRyeTtcbiAgfVxuICBjb25zdCBkcmFnZ2FibGVBUEkgPSB7XG4gICAgcmVnaXN0ZXI6IGVudHJ5ID0+IHtcbiAgICAgIGVudHJpZXMuZHJhZ2dhYmxlc1tlbnRyeS5kZXNjcmlwdG9yLmlkXSA9IGVudHJ5O1xuICAgICAgbm90aWZ5KHtcbiAgICAgICAgdHlwZTogJ0FERElUSU9OJyxcbiAgICAgICAgdmFsdWU6IGVudHJ5XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHVwZGF0ZTogKGVudHJ5LCBsYXN0KSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gZW50cmllcy5kcmFnZ2FibGVzW2xhc3QuZGVzY3JpcHRvci5pZF07XG4gICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnQudW5pcXVlSWQgIT09IGVudHJ5LnVuaXF1ZUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBlbnRyaWVzLmRyYWdnYWJsZXNbbGFzdC5kZXNjcmlwdG9yLmlkXTtcbiAgICAgIGVudHJpZXMuZHJhZ2dhYmxlc1tlbnRyeS5kZXNjcmlwdG9yLmlkXSA9IGVudHJ5O1xuICAgIH0sXG4gICAgdW5yZWdpc3RlcjogZW50cnkgPT4ge1xuICAgICAgY29uc3QgZHJhZ2dhYmxlSWQgPSBlbnRyeS5kZXNjcmlwdG9yLmlkO1xuICAgICAgY29uc3QgY3VycmVudCA9IGZpbmREcmFnZ2FibGVCeUlkKGRyYWdnYWJsZUlkKTtcbiAgICAgIGlmICghY3VycmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZW50cnkudW5pcXVlSWQgIT09IGN1cnJlbnQudW5pcXVlSWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGVsZXRlIGVudHJpZXMuZHJhZ2dhYmxlc1tkcmFnZ2FibGVJZF07XG4gICAgICBpZiAoZW50cmllcy5kcm9wcGFibGVzW2VudHJ5LmRlc2NyaXB0b3IuZHJvcHBhYmxlSWRdKSB7XG4gICAgICAgIG5vdGlmeSh7XG4gICAgICAgICAgdHlwZTogJ1JFTU9WQUwnLFxuICAgICAgICAgIHZhbHVlOiBlbnRyeVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGdldEJ5SWQ6IGdldERyYWdnYWJsZUJ5SWQsXG4gICAgZmluZEJ5SWQ6IGZpbmREcmFnZ2FibGVCeUlkLFxuICAgIGV4aXN0czogaWQgPT4gQm9vbGVhbihmaW5kRHJhZ2dhYmxlQnlJZChpZCkpLFxuICAgIGdldEFsbEJ5VHlwZTogdHlwZSA9PiBPYmplY3QudmFsdWVzKGVudHJpZXMuZHJhZ2dhYmxlcykuZmlsdGVyKGVudHJ5ID0+IGVudHJ5LmRlc2NyaXB0b3IudHlwZSA9PT0gdHlwZSlcbiAgfTtcbiAgZnVuY3Rpb24gZmluZERyb3BwYWJsZUJ5SWQoaWQpIHtcbiAgICByZXR1cm4gZW50cmllcy5kcm9wcGFibGVzW2lkXSB8fCBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIGdldERyb3BwYWJsZUJ5SWQoaWQpIHtcbiAgICBjb25zdCBlbnRyeSA9IGZpbmREcm9wcGFibGVCeUlkKGlkKTtcbiAgICAhZW50cnkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGBDYW5ub3QgZmluZCBkcm9wcGFibGUgZW50cnkgd2l0aCBpZCBbJHtpZH1dYCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIHJldHVybiBlbnRyeTtcbiAgfVxuICBjb25zdCBkcm9wcGFibGVBUEkgPSB7XG4gICAgcmVnaXN0ZXI6IGVudHJ5ID0+IHtcbiAgICAgIGVudHJpZXMuZHJvcHBhYmxlc1tlbnRyeS5kZXNjcmlwdG9yLmlkXSA9IGVudHJ5O1xuICAgIH0sXG4gICAgdW5yZWdpc3RlcjogZW50cnkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IGZpbmREcm9wcGFibGVCeUlkKGVudHJ5LmRlc2NyaXB0b3IuaWQpO1xuICAgICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChlbnRyeS51bmlxdWVJZCAhPT0gY3VycmVudC51bmlxdWVJZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkZWxldGUgZW50cmllcy5kcm9wcGFibGVzW2VudHJ5LmRlc2NyaXB0b3IuaWRdO1xuICAgIH0sXG4gICAgZ2V0QnlJZDogZ2V0RHJvcHBhYmxlQnlJZCxcbiAgICBmaW5kQnlJZDogZmluZERyb3BwYWJsZUJ5SWQsXG4gICAgZXhpc3RzOiBpZCA9PiBCb29sZWFuKGZpbmREcm9wcGFibGVCeUlkKGlkKSksXG4gICAgZ2V0QWxsQnlUeXBlOiB0eXBlID0+IE9iamVjdC52YWx1ZXMoZW50cmllcy5kcm9wcGFibGVzKS5maWx0ZXIoZW50cnkgPT4gZW50cnkuZGVzY3JpcHRvci50eXBlID09PSB0eXBlKVxuICB9O1xuICBmdW5jdGlvbiBjbGVhbigpIHtcbiAgICBlbnRyaWVzLmRyYWdnYWJsZXMgPSB7fTtcbiAgICBlbnRyaWVzLmRyb3BwYWJsZXMgPSB7fTtcbiAgICBzdWJzY3JpYmVycy5sZW5ndGggPSAwO1xuICB9XG4gIHJldHVybiB7XG4gICAgZHJhZ2dhYmxlOiBkcmFnZ2FibGVBUEksXG4gICAgZHJvcHBhYmxlOiBkcm9wcGFibGVBUEksXG4gICAgc3Vic2NyaWJlLFxuICAgIGNsZWFuXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVJlZ2lzdHJ5KCkge1xuICBjb25zdCByZWdpc3RyeSA9IHVzZU1lbW8oY3JlYXRlUmVnaXN0cnksIFtdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gdW5tb3VudCgpIHtcbiAgICAgIGlmIChSZWFjdC52ZXJzaW9uLnN0YXJ0c1dpdGgoJzE2JykgfHwgUmVhY3QudmVyc2lvbi5zdGFydHNXaXRoKCcxNycpKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShyZWdpc3RyeS5jbGVhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWdpc3RyeS5jbGVhbigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtyZWdpc3RyeV0pO1xuICByZXR1cm4gcmVnaXN0cnk7XG59XG5cbnZhciBTdG9yZUNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuXG52YXIgZ2V0Qm9keUVsZW1lbnQgPSAoKCkgPT4ge1xuICBjb25zdCBib2R5ID0gZG9jdW1lbnQuYm9keTtcbiAgIWJvZHkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgZmluZCBkb2N1bWVudC5ib2R5JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICByZXR1cm4gYm9keTtcbn0pO1xuXG5jb25zdCB2aXN1YWxseUhpZGRlbiA9IHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHdpZHRoOiAnMXB4JyxcbiAgaGVpZ2h0OiAnMXB4JyxcbiAgbWFyZ2luOiAnLTFweCcsXG4gIGJvcmRlcjogJzAnLFxuICBwYWRkaW5nOiAnMCcsXG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgY2xpcDogJ3JlY3QoMCAwIDAgMCknLFxuICAnY2xpcC1wYXRoJzogJ2luc2V0KDEwMCUpJ1xufTtcbnZhciB2aXN1YWxseUhpZGRlbiQxID0gdmlzdWFsbHlIaWRkZW47XG5cbmNvbnN0IGdldElkID0gY29udGV4dElkID0+IGByZmQtYW5ub3VuY2VtZW50LSR7Y29udGV4dElkfWA7XG5mdW5jdGlvbiB1c2VBbm5vdW5jZXIoY29udGV4dElkKSB7XG4gIGNvbnN0IGlkID0gdXNlTWVtbygoKSA9PiBnZXRJZChjb250ZXh0SWQpLCBbY29udGV4dElkXSk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uIHNldHVwKCkge1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcmVmLmN1cnJlbnQgPSBlbDtcbiAgICBlbC5pZCA9IGlkO1xuICAgIGVsLnNldEF0dHJpYnV0ZSgnYXJpYS1saXZlJywgJ2Fzc2VydGl2ZScpO1xuICAgIGVsLnNldEF0dHJpYnV0ZSgnYXJpYS1hdG9taWMnLCAndHJ1ZScpO1xuICAgIF9leHRlbmRzKGVsLnN0eWxlLCB2aXN1YWxseUhpZGRlbiQxKTtcbiAgICBnZXRCb2R5RWxlbWVudCgpLmFwcGVuZENoaWxkKGVsKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgICBjb25zdCBib2R5ID0gZ2V0Qm9keUVsZW1lbnQoKTtcbiAgICAgICAgaWYgKGJvZHkuY29udGFpbnMoZWwpKSB7XG4gICAgICAgICAgYm9keS5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsID09PSByZWYuY3VycmVudCkge1xuICAgICAgICAgIHJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcbiAgfSwgW2lkXSk7XG4gIGNvbnN0IGFubm91bmNlID0gdXNlQ2FsbGJhY2sobWVzc2FnZSA9PiB7XG4gICAgY29uc3QgZWwgPSByZWYuY3VycmVudDtcbiAgICBpZiAoZWwpIHtcbiAgICAgIGVsLnRleHRDb250ZW50ID0gbWVzc2FnZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhgXG4gICAgICBBIHNjcmVlbiByZWFkZXIgbWVzc2FnZSB3YXMgdHJ5aW5nIHRvIGJlIGFubm91bmNlZCBidXQgaXQgd2FzIHVuYWJsZSB0byBkbyBzby5cbiAgICAgIFRoaXMgY2FuIG9jY3VyIGlmIHlvdSB1bm1vdW50IHlvdXIgPERyYWdEcm9wQ29udGV4dCAvPiBpbiB5b3VyIG9uRHJhZ0VuZC5cbiAgICAgIENvbnNpZGVyIGNhbGxpbmcgcHJvdmlkZWQuYW5ub3VuY2UoKSBiZWZvcmUgdGhlIHVubW91bnQgc28gdGhhdCB0aGUgaW5zdHJ1Y3Rpb24gd2lsbFxuICAgICAgbm90IGJlIGxvc3QgZm9yIHVzZXJzIHJlbHlpbmcgb24gYSBzY3JlZW4gcmVhZGVyLlxuXG4gICAgICBNZXNzYWdlIG5vdCBwYXNzZWQgdG8gc2NyZWVuIHJlYWRlcjpcblxuICAgICAgXCIke21lc3NhZ2V9XCJcbiAgICBgKSA6IHZvaWQgMDtcbiAgfSwgW10pO1xuICByZXR1cm4gYW5ub3VuY2U7XG59XG5cbmxldCBjb3VudCQxID0gMDtcbmNvbnN0IGRlZmF1bHRzID0ge1xuICBzZXBhcmF0b3I6ICc6Oidcbn07XG5mdW5jdGlvbiByZXNldERlcHJlY2F0ZWRVbmlxdWVJZCgpIHtcbiAgY291bnQkMSA9IDA7XG59XG5mdW5jdGlvbiB1c2VEZXByZWNhdGVkVW5pcXVlSWQocHJlZml4LCBvcHRpb25zID0gZGVmYXVsdHMpIHtcbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gYCR7cHJlZml4fSR7b3B0aW9ucy5zZXBhcmF0b3J9JHtjb3VudCQxKyt9YCwgW29wdGlvbnMuc2VwYXJhdG9yLCBwcmVmaXhdKTtcbn1cbmZ1bmN0aW9uIHVzZVVuaXF1ZUlkKHByZWZpeCwgb3B0aW9ucyA9IGRlZmF1bHRzKSB7XG4gIGNvbnN0IGlkID0gUmVhY3QudXNlSWQoKTtcbiAgcmV0dXJuIHVzZU1lbW8oKCkgPT4gYCR7cHJlZml4fSR7b3B0aW9ucy5zZXBhcmF0b3J9JHtpZH1gLCBbb3B0aW9ucy5zZXBhcmF0b3IsIHByZWZpeCwgaWRdKTtcbn1cbnZhciB1c2VVbmlxdWVJZCQxID0gJ3VzZUlkJyBpbiBSZWFjdCA/IHVzZVVuaXF1ZUlkIDogdXNlRGVwcmVjYXRlZFVuaXF1ZUlkO1xuXG5mdW5jdGlvbiBnZXRFbGVtZW50SWQoe1xuICBjb250ZXh0SWQsXG4gIHVuaXF1ZUlkXG59KSB7XG4gIHJldHVybiBgcmZkLWhpZGRlbi10ZXh0LSR7Y29udGV4dElkfS0ke3VuaXF1ZUlkfWA7XG59XG5mdW5jdGlvbiB1c2VIaWRkZW5UZXh0RWxlbWVudCh7XG4gIGNvbnRleHRJZCxcbiAgdGV4dFxufSkge1xuICBjb25zdCB1bmlxdWVJZCA9IHVzZVVuaXF1ZUlkJDEoJ2hpZGRlbi10ZXh0Jywge1xuICAgIHNlcGFyYXRvcjogJy0nXG4gIH0pO1xuICBjb25zdCBpZCA9IHVzZU1lbW8oKCkgPT4gZ2V0RWxlbWVudElkKHtcbiAgICBjb250ZXh0SWQsXG4gICAgdW5pcXVlSWRcbiAgfSksIFt1bmlxdWVJZCwgY29udGV4dElkXSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGVsLmlkID0gaWQ7XG4gICAgZWwudGV4dENvbnRlbnQgPSB0ZXh0O1xuICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgZ2V0Qm9keUVsZW1lbnQoKS5hcHBlbmRDaGlsZChlbCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVubW91bnQoKSB7XG4gICAgICBjb25zdCBib2R5ID0gZ2V0Qm9keUVsZW1lbnQoKTtcbiAgICAgIGlmIChib2R5LmNvbnRhaW5zKGVsKSkge1xuICAgICAgICBib2R5LnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbaWQsIHRleHRdKTtcbiAgcmV0dXJuIGlkO1xufVxuXG52YXIgQXBwQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbnZhciBwZWVyRGVwZW5kZW5jaWVzID0ge1xuXHRyZWFjdDogXCJeMTYuOC41IHx8IF4xNy4wLjAgfHwgXjE4LjAuMFwiLFxuXHRcInJlYWN0LWRvbVwiOiBcIl4xNi44LjUgfHwgXjE3LjAuMCB8fCBeMTguMC4wXCJcbn07XG5cbmNvbnN0IHNlbXZlciA9IC8oXFxkKylcXC4oXFxkKylcXC4oXFxkKykvO1xuY29uc3QgZ2V0VmVyc2lvbiA9IHZhbHVlID0+IHtcbiAgY29uc3QgcmVzdWx0ID0gc2VtdmVyLmV4ZWModmFsdWUpO1xuICAhKHJlc3VsdCAhPSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgYFVuYWJsZSB0byBwYXJzZSBSZWFjdCB2ZXJzaW9uICR7dmFsdWV9YCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBjb25zdCBtYWpvciA9IE51bWJlcihyZXN1bHRbMV0pO1xuICBjb25zdCBtaW5vciA9IE51bWJlcihyZXN1bHRbMl0pO1xuICBjb25zdCBwYXRjaCA9IE51bWJlcihyZXN1bHRbM10pO1xuICByZXR1cm4ge1xuICAgIG1ham9yLFxuICAgIG1pbm9yLFxuICAgIHBhdGNoLFxuICAgIHJhdzogdmFsdWVcbiAgfTtcbn07XG5jb25zdCBpc1NhdGlzZmllZCA9IChleHBlY3RlZCwgYWN0dWFsKSA9PiB7XG4gIGlmIChhY3R1YWwubWFqb3IgPiBleHBlY3RlZC5tYWpvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChhY3R1YWwubWFqb3IgPCBleHBlY3RlZC5tYWpvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoYWN0dWFsLm1pbm9yID4gZXhwZWN0ZWQubWlub3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoYWN0dWFsLm1pbm9yIDwgZXhwZWN0ZWQubWlub3IpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGFjdHVhbC5wYXRjaCA+PSBleHBlY3RlZC5wYXRjaDtcbn07XG52YXIgY2hlY2tSZWFjdFZlcnNpb24gPSAoKHBlZXJEZXBWYWx1ZSwgYWN0dWFsVmFsdWUpID0+IHtcbiAgY29uc3QgcGVlckRlcCA9IGdldFZlcnNpb24ocGVlckRlcFZhbHVlKTtcbiAgY29uc3QgYWN0dWFsID0gZ2V0VmVyc2lvbihhY3R1YWxWYWx1ZSk7XG4gIGlmIChpc1NhdGlzZmllZChwZWVyRGVwLCBhY3R1YWwpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoYFxuICAgIFJlYWN0IHZlcnNpb246IFske2FjdHVhbC5yYXd9XVxuICAgIGRvZXMgbm90IHNhdGlzZnkgZXhwZWN0ZWQgcGVlciBkZXBlbmRlbmN5IHZlcnNpb246IFske3BlZXJEZXAucmF3fV1cblxuICAgIFRoaXMgY2FuIHJlc3VsdCBpbiBydW4gdGltZSBidWdzLCBhbmQgZXZlbiBmYXRhbCBjcmFzaGVzXG4gIGApIDogdm9pZCAwO1xufSk7XG5cbmNvbnN0IHN1ZmZpeCA9IGBcbiAgV2UgZXhwZWN0IGEgaHRtbDUgZG9jdHlwZTogPCFkb2N0eXBlIGh0bWw+XG4gIFRoaXMgaXMgdG8gZW5zdXJlIGNvbnNpc3RlbnQgYnJvd3NlciBsYXlvdXQgYW5kIG1lYXN1cmVtZW50XG5cbiAgTW9yZSBpbmZvcm1hdGlvbjogaHR0cHM6Ly9naXRodWIuY29tL2hlbGxvLXBhbmdlYS9kbmQvYmxvYi9tYWluL2RvY3MvZ3VpZGVzL2RvY3R5cGUubWRcbmA7XG52YXIgY2hlY2tEb2N0eXBlID0gKGRvYyA9PiB7XG4gIGNvbnN0IGRvY3R5cGUgPSBkb2MuZG9jdHlwZTtcbiAgaWYgKCFkb2N0eXBlKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhgXG4gICAgICBObyA8IWRvY3R5cGUgaHRtbD4gZm91bmQuXG5cbiAgICAgICR7c3VmZml4fVxuICAgIGApIDogdm9pZCAwO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoZG9jdHlwZS5uYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdodG1sJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoYFxuICAgICAgVW5leHBlY3RlZCA8IWRvY3R5cGU+IGZvdW5kOiAoJHtkb2N0eXBlLm5hbWV9KVxuXG4gICAgICAke3N1ZmZpeH1cbiAgICBgKSA6IHZvaWQgMDtcbiAgfVxuICBpZiAoZG9jdHlwZS5wdWJsaWNJZCAhPT0gJycpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGBcbiAgICAgIFVuZXhwZWN0ZWQgPCFkb2N0eXBlPiBwdWJsaWNJZCBmb3VuZDogKCR7ZG9jdHlwZS5wdWJsaWNJZH0pXG4gICAgICBBIGh0bWw1IGRvY3R5cGUgZG9lcyBub3QgaGF2ZSBhIHB1YmxpY0lkXG5cbiAgICAgICR7c3VmZml4fVxuICAgIGApIDogdm9pZCAwO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdXNlRGV2KHVzZUhvb2spIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB1c2VIb29rKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlRGV2U2V0dXBXYXJuaW5nKGZuLCBpbnB1dHMpIHtcbiAgdXNlRGV2KCgpID0+IHtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgZXJyb3IoYFxuICAgICAgICAgIEEgc2V0dXAgcHJvYmxlbSB3YXMgZW5jb3VudGVyZWQuXG5cbiAgICAgICAgICA+ICR7ZS5tZXNzYWdlfVxuICAgICAgICBgKTtcbiAgICAgIH1cbiAgICB9LCBpbnB1dHMpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlU3RhcnR1cFZhbGlkYXRpb24oKSB7XG4gIHVzZURldlNldHVwV2FybmluZygoKSA9PiB7XG4gICAgY2hlY2tSZWFjdFZlcnNpb24ocGVlckRlcGVuZGVuY2llcy5yZWFjdCwgUmVhY3QudmVyc2lvbik7XG4gICAgY2hlY2tEb2N0eXBlKGRvY3VtZW50KTtcbiAgfSwgW10pO1xufVxuXG5mdW5jdGlvbiB1c2VQcmV2aW91cyhjdXJyZW50KSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihjdXJyZW50KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IGN1cnJlbnQ7XG4gIH0pO1xuICByZXR1cm4gcmVmO1xufVxuXG5mdW5jdGlvbiBjcmVhdGUoKSB7XG4gIGxldCBsb2NrID0gbnVsbDtcbiAgZnVuY3Rpb24gaXNDbGFpbWVkKCkge1xuICAgIHJldHVybiBCb29sZWFuKGxvY2spO1xuICB9XG4gIGZ1bmN0aW9uIGlzQWN0aXZlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBsb2NrO1xuICB9XG4gIGZ1bmN0aW9uIGNsYWltKGFiYW5kb24pIHtcbiAgICAhIWxvY2sgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgY2xhaW0gbG9jayBhcyBpdCBpcyBhbHJlYWR5IGNsYWltZWQnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3QgbmV3TG9jayA9IHtcbiAgICAgIGFiYW5kb25cbiAgICB9O1xuICAgIGxvY2sgPSBuZXdMb2NrO1xuICAgIHJldHVybiBuZXdMb2NrO1xuICB9XG4gIGZ1bmN0aW9uIHJlbGVhc2UoKSB7XG4gICAgIWxvY2sgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcmVsZWFzZSBsb2NrIHdoZW4gdGhlcmUgaXMgbm8gbG9jaycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBsb2NrID0gbnVsbDtcbiAgfVxuICBmdW5jdGlvbiB0cnlBYmFuZG9uKCkge1xuICAgIGlmIChsb2NrKSB7XG4gICAgICBsb2NrLmFiYW5kb24oKTtcbiAgICAgIHJlbGVhc2UoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc0NsYWltZWQsXG4gICAgaXNBY3RpdmUsXG4gICAgY2xhaW0sXG4gICAgcmVsZWFzZSxcbiAgICB0cnlBYmFuZG9uXG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzRHJhZ2dpbmcoc3RhdGUpIHtcbiAgaWYgKHN0YXRlLnBoYXNlID09PSAnSURMRScgfHwgc3RhdGUucGhhc2UgPT09ICdEUk9QX0FOSU1BVElORycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmlzRHJhZ2dpbmc7XG59XG5cbmNvbnN0IHRhYiA9IDk7XG5jb25zdCBlbnRlciA9IDEzO1xuY29uc3QgZXNjYXBlID0gMjc7XG5jb25zdCBzcGFjZSA9IDMyO1xuY29uc3QgcGFnZVVwID0gMzM7XG5jb25zdCBwYWdlRG93biA9IDM0O1xuY29uc3QgZW5kID0gMzU7XG5jb25zdCBob21lID0gMzY7XG5jb25zdCBhcnJvd0xlZnQgPSAzNztcbmNvbnN0IGFycm93VXAgPSAzODtcbmNvbnN0IGFycm93UmlnaHQgPSAzOTtcbmNvbnN0IGFycm93RG93biA9IDQwO1xuXG5jb25zdCBwcmV2ZW50ZWRLZXlzID0ge1xuICBbZW50ZXJdOiB0cnVlLFxuICBbdGFiXTogdHJ1ZVxufTtcbnZhciBwcmV2ZW50U3RhbmRhcmRLZXlFdmVudHMgPSAoZXZlbnQgPT4ge1xuICBpZiAocHJldmVudGVkS2V5c1tldmVudC5rZXlDb2RlXSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cbn0pO1xuXG5jb25zdCBzdXBwb3J0ZWRFdmVudE5hbWUgPSAoKCkgPT4ge1xuICBjb25zdCBiYXNlID0gJ3Zpc2liaWxpdHljaGFuZ2UnO1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBiYXNlO1xuICB9XG4gIGNvbnN0IGNhbmRpZGF0ZXMgPSBbYmFzZSwgYG1zJHtiYXNlfWAsIGB3ZWJraXQke2Jhc2V9YCwgYG1veiR7YmFzZX1gLCBgbyR7YmFzZX1gXTtcbiAgY29uc3Qgc3VwcG9ydGVkID0gY2FuZGlkYXRlcy5maW5kKGV2ZW50TmFtZSA9PiBgb24ke2V2ZW50TmFtZX1gIGluIGRvY3VtZW50KTtcbiAgcmV0dXJuIHN1cHBvcnRlZCB8fCBiYXNlO1xufSkoKTtcbnZhciBzdXBwb3J0ZWRQYWdlVmlzaWJpbGl0eUV2ZW50TmFtZSA9IHN1cHBvcnRlZEV2ZW50TmFtZTtcblxuY29uc3QgcHJpbWFyeUJ1dHRvbiA9IDA7XG5jb25zdCBzbG9wcHlDbGlja1RocmVzaG9sZCA9IDU7XG5mdW5jdGlvbiBpc1Nsb3BweUNsaWNrVGhyZXNob2xkRXhjZWVkZWQob3JpZ2luYWwsIGN1cnJlbnQpIHtcbiAgcmV0dXJuIE1hdGguYWJzKGN1cnJlbnQueCAtIG9yaWdpbmFsLngpID49IHNsb3BweUNsaWNrVGhyZXNob2xkIHx8IE1hdGguYWJzKGN1cnJlbnQueSAtIG9yaWdpbmFsLnkpID49IHNsb3BweUNsaWNrVGhyZXNob2xkO1xufVxuY29uc3QgaWRsZSQxID0ge1xuICB0eXBlOiAnSURMRSdcbn07XG5mdW5jdGlvbiBnZXRDYXB0dXJlQmluZGluZ3Moe1xuICBjYW5jZWwsXG4gIGNvbXBsZXRlZCxcbiAgZ2V0UGhhc2UsXG4gIHNldFBoYXNlXG59KSB7XG4gIHJldHVybiBbe1xuICAgIGV2ZW50TmFtZTogJ21vdXNlbW92ZScsXG4gICAgZm46IGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYnV0dG9uLFxuICAgICAgICBjbGllbnRYLFxuICAgICAgICBjbGllbnRZXG4gICAgICB9ID0gZXZlbnQ7XG4gICAgICBpZiAoYnV0dG9uICE9PSBwcmltYXJ5QnV0dG9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBvaW50ID0ge1xuICAgICAgICB4OiBjbGllbnRYLFxuICAgICAgICB5OiBjbGllbnRZXG4gICAgICB9O1xuICAgICAgY29uc3QgcGhhc2UgPSBnZXRQaGFzZSgpO1xuICAgICAgaWYgKHBoYXNlLnR5cGUgPT09ICdEUkFHR0lORycpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcGhhc2UuYWN0aW9ucy5tb3ZlKHBvaW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgIShwaGFzZS50eXBlID09PSAnUEVORElORycpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IGJlIElETEUnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgICBjb25zdCBwZW5kaW5nID0gcGhhc2UucG9pbnQ7XG4gICAgICBpZiAoIWlzU2xvcHB5Q2xpY2tUaHJlc2hvbGRFeGNlZWRlZChwZW5kaW5nLCBwb2ludCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGFjdGlvbnMgPSBwaGFzZS5hY3Rpb25zLmZsdWlkTGlmdChwb2ludCk7XG4gICAgICBzZXRQaGFzZSh7XG4gICAgICAgIHR5cGU6ICdEUkFHR0lORycsXG4gICAgICAgIGFjdGlvbnNcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGV2ZW50TmFtZTogJ21vdXNldXAnLFxuICAgIGZuOiBldmVudCA9PiB7XG4gICAgICBjb25zdCBwaGFzZSA9IGdldFBoYXNlKCk7XG4gICAgICBpZiAocGhhc2UudHlwZSAhPT0gJ0RSQUdHSU5HJykge1xuICAgICAgICBjYW5jZWwoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHBoYXNlLmFjdGlvbnMuZHJvcCh7XG4gICAgICAgIHNob3VsZEJsb2NrTmV4dENsaWNrOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGNvbXBsZXRlZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGV2ZW50TmFtZTogJ21vdXNlZG93bicsXG4gICAgZm46IGV2ZW50ID0+IHtcbiAgICAgIGlmIChnZXRQaGFzZSgpLnR5cGUgPT09ICdEUkFHR0lORycpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIGNhbmNlbCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGV2ZW50TmFtZTogJ2tleWRvd24nLFxuICAgIGZuOiBldmVudCA9PiB7XG4gICAgICBjb25zdCBwaGFzZSA9IGdldFBoYXNlKCk7XG4gICAgICBpZiAocGhhc2UudHlwZSA9PT0gJ1BFTkRJTkcnKSB7XG4gICAgICAgIGNhbmNlbCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gZXNjYXBlKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNhbmNlbCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBwcmV2ZW50U3RhbmRhcmRLZXlFdmVudHMoZXZlbnQpO1xuICAgIH1cbiAgfSwge1xuICAgIGV2ZW50TmFtZTogJ3Jlc2l6ZScsXG4gICAgZm46IGNhbmNlbFxuICB9LCB7XG4gICAgZXZlbnROYW1lOiAnc2Nyb2xsJyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBwYXNzaXZlOiB0cnVlLFxuICAgICAgY2FwdHVyZTogZmFsc2VcbiAgICB9LFxuICAgIGZuOiAoKSA9PiB7XG4gICAgICBpZiAoZ2V0UGhhc2UoKS50eXBlID09PSAnUEVORElORycpIHtcbiAgICAgICAgY2FuY2VsKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAgZXZlbnROYW1lOiAnd2Via2l0bW91c2Vmb3JjZWRvd24nLFxuICAgIGZuOiBldmVudCA9PiB7XG4gICAgICBjb25zdCBwaGFzZSA9IGdldFBoYXNlKCk7XG4gICAgICAhKHBoYXNlLnR5cGUgIT09ICdJRExFJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIHBoYXNlJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgICAgaWYgKHBoYXNlLmFjdGlvbnMuc2hvdWxkUmVzcGVjdEZvcmNlUHJlc3MoKSkge1xuICAgICAgICBjYW5jZWwoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBldmVudE5hbWU6IHN1cHBvcnRlZFBhZ2VWaXNpYmlsaXR5RXZlbnROYW1lLFxuICAgIGZuOiBjYW5jZWxcbiAgfV07XG59XG5mdW5jdGlvbiB1c2VNb3VzZVNlbnNvcihhcGkpIHtcbiAgY29uc3QgcGhhc2VSZWYgPSB1c2VSZWYoaWRsZSQxKTtcbiAgY29uc3QgdW5iaW5kRXZlbnRzUmVmID0gdXNlUmVmKG5vb3AkMik7XG4gIGNvbnN0IHN0YXJ0Q2FwdHVyZUJpbmRpbmcgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgZXZlbnROYW1lOiAnbW91c2Vkb3duJyxcbiAgICBmbjogZnVuY3Rpb24gb25Nb3VzZURvd24oZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5idXR0b24gIT09IHByaW1hcnlCdXR0b24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5zaGlmdEtleSB8fCBldmVudC5hbHRLZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZHJhZ2dhYmxlSWQgPSBhcGkuZmluZENsb3Nlc3REcmFnZ2FibGVJZChldmVudCk7XG4gICAgICBpZiAoIWRyYWdnYWJsZUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFjdGlvbnMgPSBhcGkudHJ5R2V0TG9jayhkcmFnZ2FibGVJZCwgc3RvcCwge1xuICAgICAgICBzb3VyY2VFdmVudDogZXZlbnRcbiAgICAgIH0pO1xuICAgICAgaWYgKCFhY3Rpb25zKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCBwb2ludCA9IHtcbiAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgeTogZXZlbnQuY2xpZW50WVxuICAgICAgfTtcbiAgICAgIHVuYmluZEV2ZW50c1JlZi5jdXJyZW50KCk7XG4gICAgICBzdGFydFBlbmRpbmdEcmFnKGFjdGlvbnMsIHBvaW50KTtcbiAgICB9XG4gIH0pLCBbYXBpXSk7XG4gIGNvbnN0IHByZXZlbnRGb3JjZVByZXNzQmluZGluZyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBldmVudE5hbWU6ICd3ZWJraXRtb3VzZWZvcmNld2lsbGJlZ2luJyxcbiAgICBmbjogZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaWQgPSBhcGkuZmluZENsb3Nlc3REcmFnZ2FibGVJZChldmVudCk7XG4gICAgICBpZiAoIWlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBhcGkuZmluZE9wdGlvbnNGb3JEcmFnZ2FibGUoaWQpO1xuICAgICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLnNob3VsZFJlc3BlY3RGb3JjZVByZXNzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghYXBpLmNhbkdldExvY2soaWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9KSwgW2FwaV0pO1xuICBjb25zdCBsaXN0ZW5Gb3JDYXB0dXJlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gbGlzdGVuRm9yQ2FwdHVyZSgpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgICBjYXB0dXJlOiB0cnVlXG4gICAgfTtcbiAgICB1bmJpbmRFdmVudHNSZWYuY3VycmVudCA9IGJpbmRFdmVudHMod2luZG93LCBbcHJldmVudEZvcmNlUHJlc3NCaW5kaW5nLCBzdGFydENhcHR1cmVCaW5kaW5nXSwgb3B0aW9ucyk7XG4gIH0sIFtwcmV2ZW50Rm9yY2VQcmVzc0JpbmRpbmcsIHN0YXJ0Q2FwdHVyZUJpbmRpbmddKTtcbiAgY29uc3Qgc3RvcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50ID0gcGhhc2VSZWYuY3VycmVudDtcbiAgICBpZiAoY3VycmVudC50eXBlID09PSAnSURMRScpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcGhhc2VSZWYuY3VycmVudCA9IGlkbGUkMTtcbiAgICB1bmJpbmRFdmVudHNSZWYuY3VycmVudCgpO1xuICAgIGxpc3RlbkZvckNhcHR1cmUoKTtcbiAgfSwgW2xpc3RlbkZvckNhcHR1cmVdKTtcbiAgY29uc3QgY2FuY2VsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHBoYXNlID0gcGhhc2VSZWYuY3VycmVudDtcbiAgICBzdG9wKCk7XG4gICAgaWYgKHBoYXNlLnR5cGUgPT09ICdEUkFHR0lORycpIHtcbiAgICAgIHBoYXNlLmFjdGlvbnMuY2FuY2VsKHtcbiAgICAgICAgc2hvdWxkQmxvY2tOZXh0Q2xpY2s6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAocGhhc2UudHlwZSA9PT0gJ1BFTkRJTkcnKSB7XG4gICAgICBwaGFzZS5hY3Rpb25zLmFib3J0KCk7XG4gICAgfVxuICB9LCBbc3RvcF0pO1xuICBjb25zdCBiaW5kQ2FwdHVyaW5nRXZlbnRzID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gYmluZENhcHR1cmluZ0V2ZW50cygpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfTtcbiAgICBjb25zdCBiaW5kaW5ncyA9IGdldENhcHR1cmVCaW5kaW5ncyh7XG4gICAgICBjYW5jZWwsXG4gICAgICBjb21wbGV0ZWQ6IHN0b3AsXG4gICAgICBnZXRQaGFzZTogKCkgPT4gcGhhc2VSZWYuY3VycmVudCxcbiAgICAgIHNldFBoYXNlOiBwaGFzZSA9PiB7XG4gICAgICAgIHBoYXNlUmVmLmN1cnJlbnQgPSBwaGFzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB1bmJpbmRFdmVudHNSZWYuY3VycmVudCA9IGJpbmRFdmVudHMod2luZG93LCBiaW5kaW5ncywgb3B0aW9ucyk7XG4gIH0sIFtjYW5jZWwsIHN0b3BdKTtcbiAgY29uc3Qgc3RhcnRQZW5kaW5nRHJhZyA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIHN0YXJ0UGVuZGluZ0RyYWcoYWN0aW9ucywgcG9pbnQpIHtcbiAgICAhKHBoYXNlUmVmLmN1cnJlbnQudHlwZSA9PT0gJ0lETEUnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIHRvIG1vdmUgZnJvbSBJRExFIHRvIFBFTkRJTkcgZHJhZycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBwaGFzZVJlZi5jdXJyZW50ID0ge1xuICAgICAgdHlwZTogJ1BFTkRJTkcnLFxuICAgICAgcG9pbnQsXG4gICAgICBhY3Rpb25zXG4gICAgfTtcbiAgICBiaW5kQ2FwdHVyaW5nRXZlbnRzKCk7XG4gIH0sIFtiaW5kQ2FwdHVyaW5nRXZlbnRzXSk7XG4gIHVzZUxheW91dEVmZmVjdChmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBsaXN0ZW5Gb3JDYXB0dXJlKCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVubW91bnQoKSB7XG4gICAgICB1bmJpbmRFdmVudHNSZWYuY3VycmVudCgpO1xuICAgIH07XG4gIH0sIFtsaXN0ZW5Gb3JDYXB0dXJlXSk7XG59XG5cbmZ1bmN0aW9uIG5vb3AkMSgpIHt9XG5jb25zdCBzY3JvbGxKdW1wS2V5cyA9IHtcbiAgW3BhZ2VEb3duXTogdHJ1ZSxcbiAgW3BhZ2VVcF06IHRydWUsXG4gIFtob21lXTogdHJ1ZSxcbiAgW2VuZF06IHRydWVcbn07XG5mdW5jdGlvbiBnZXREcmFnZ2luZ0JpbmRpbmdzKGFjdGlvbnMsIHN0b3ApIHtcbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIHN0b3AoKTtcbiAgICBhY3Rpb25zLmNhbmNlbCgpO1xuICB9XG4gIGZ1bmN0aW9uIGRyb3AoKSB7XG4gICAgc3RvcCgpO1xuICAgIGFjdGlvbnMuZHJvcCgpO1xuICB9XG4gIHJldHVybiBbe1xuICAgIGV2ZW50TmFtZTogJ2tleWRvd24nLFxuICAgIGZuOiBldmVudCA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gZXNjYXBlKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNhbmNlbCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gc3BhY2UpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZHJvcCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gYXJyb3dEb3duKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGFjdGlvbnMubW92ZURvd24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IGFycm93VXApIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYWN0aW9ucy5tb3ZlVXAoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IGFycm93UmlnaHQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYWN0aW9ucy5tb3ZlUmlnaHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IGFycm93TGVmdCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBhY3Rpb25zLm1vdmVMZWZ0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzY3JvbGxKdW1wS2V5c1tldmVudC5rZXlDb2RlXSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBwcmV2ZW50U3RhbmRhcmRLZXlFdmVudHMoZXZlbnQpO1xuICAgIH1cbiAgfSwge1xuICAgIGV2ZW50TmFtZTogJ21vdXNlZG93bicsXG4gICAgZm46IGNhbmNlbFxuICB9LCB7XG4gICAgZXZlbnROYW1lOiAnbW91c2V1cCcsXG4gICAgZm46IGNhbmNlbFxuICB9LCB7XG4gICAgZXZlbnROYW1lOiAnY2xpY2snLFxuICAgIGZuOiBjYW5jZWxcbiAgfSwge1xuICAgIGV2ZW50TmFtZTogJ3RvdWNoc3RhcnQnLFxuICAgIGZuOiBjYW5jZWxcbiAgfSwge1xuICAgIGV2ZW50TmFtZTogJ3Jlc2l6ZScsXG4gICAgZm46IGNhbmNlbFxuICB9LCB7XG4gICAgZXZlbnROYW1lOiAnd2hlZWwnLFxuICAgIGZuOiBjYW5jZWwsXG4gICAgb3B0aW9uczoge1xuICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgIH1cbiAgfSwge1xuICAgIGV2ZW50TmFtZTogc3VwcG9ydGVkUGFnZVZpc2liaWxpdHlFdmVudE5hbWUsXG4gICAgZm46IGNhbmNlbFxuICB9XTtcbn1cbmZ1bmN0aW9uIHVzZUtleWJvYXJkU2Vuc29yKGFwaSkge1xuICBjb25zdCB1bmJpbmRFdmVudHNSZWYgPSB1c2VSZWYobm9vcCQxKTtcbiAgY29uc3Qgc3RhcnRDYXB0dXJlQmluZGluZyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBldmVudE5hbWU6ICdrZXlkb3duJyxcbiAgICBmbjogZnVuY3Rpb24gb25LZXlEb3duKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSAhPT0gc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZHJhZ2dhYmxlSWQgPSBhcGkuZmluZENsb3Nlc3REcmFnZ2FibGVJZChldmVudCk7XG4gICAgICBpZiAoIWRyYWdnYWJsZUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByZURyYWcgPSBhcGkudHJ5R2V0TG9jayhkcmFnZ2FibGVJZCwgc3RvcCwge1xuICAgICAgICBzb3VyY2VFdmVudDogZXZlbnRcbiAgICAgIH0pO1xuICAgICAgaWYgKCFwcmVEcmFnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBsZXQgaXNDYXB0dXJpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgYWN0aW9ucyA9IHByZURyYWcuc25hcExpZnQoKTtcbiAgICAgIHVuYmluZEV2ZW50c1JlZi5jdXJyZW50KCk7XG4gICAgICBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgICAhaXNDYXB0dXJpbmcgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3Qgc3RvcCBjYXB0dXJpbmcgYSBrZXlib2FyZCBkcmFnIHdoZW4gbm90IGNhcHR1cmluZycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICAgICAgaXNDYXB0dXJpbmcgPSBmYWxzZTtcbiAgICAgICAgdW5iaW5kRXZlbnRzUmVmLmN1cnJlbnQoKTtcbiAgICAgICAgbGlzdGVuRm9yQ2FwdHVyZSgpO1xuICAgICAgfVxuICAgICAgdW5iaW5kRXZlbnRzUmVmLmN1cnJlbnQgPSBiaW5kRXZlbnRzKHdpbmRvdywgZ2V0RHJhZ2dpbmdCaW5kaW5ncyhhY3Rpb25zLCBzdG9wKSwge1xuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgICBwYXNzaXZlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9KSwgW2FwaV0pO1xuICBjb25zdCBsaXN0ZW5Gb3JDYXB0dXJlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gdHJ5U3RhcnRDYXB0dXJlKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICAgIGNhcHR1cmU6IHRydWVcbiAgICB9O1xuICAgIHVuYmluZEV2ZW50c1JlZi5jdXJyZW50ID0gYmluZEV2ZW50cyh3aW5kb3csIFtzdGFydENhcHR1cmVCaW5kaW5nXSwgb3B0aW9ucyk7XG4gIH0sIFtzdGFydENhcHR1cmVCaW5kaW5nXSk7XG4gIHVzZUxheW91dEVmZmVjdChmdW5jdGlvbiBtb3VudCgpIHtcbiAgICBsaXN0ZW5Gb3JDYXB0dXJlKCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVubW91bnQoKSB7XG4gICAgICB1bmJpbmRFdmVudHNSZWYuY3VycmVudCgpO1xuICAgIH07XG4gIH0sIFtsaXN0ZW5Gb3JDYXB0dXJlXSk7XG59XG5cbmNvbnN0IGlkbGUgPSB7XG4gIHR5cGU6ICdJRExFJ1xufTtcbmNvbnN0IHRpbWVGb3JMb25nUHJlc3MgPSAxMjA7XG5jb25zdCBmb3JjZVByZXNzVGhyZXNob2xkID0gMC4xNTtcbmZ1bmN0aW9uIGdldFdpbmRvd0JpbmRpbmdzKHtcbiAgY2FuY2VsLFxuICBnZXRQaGFzZVxufSkge1xuICByZXR1cm4gW3tcbiAgICBldmVudE5hbWU6ICdvcmllbnRhdGlvbmNoYW5nZScsXG4gICAgZm46IGNhbmNlbFxuICB9LCB7XG4gICAgZXZlbnROYW1lOiAncmVzaXplJyxcbiAgICBmbjogY2FuY2VsXG4gIH0sIHtcbiAgICBldmVudE5hbWU6ICdjb250ZXh0bWVudScsXG4gICAgZm46IGV2ZW50ID0+IHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9LCB7XG4gICAgZXZlbnROYW1lOiAna2V5ZG93bicsXG4gICAgZm46IGV2ZW50ID0+IHtcbiAgICAgIGlmIChnZXRQaGFzZSgpLnR5cGUgIT09ICdEUkFHR0lORycpIHtcbiAgICAgICAgY2FuY2VsKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBlc2NhcGUpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIGNhbmNlbCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGV2ZW50TmFtZTogc3VwcG9ydGVkUGFnZVZpc2liaWxpdHlFdmVudE5hbWUsXG4gICAgZm46IGNhbmNlbFxuICB9XTtcbn1cbmZ1bmN0aW9uIGdldEhhbmRsZUJpbmRpbmdzKHtcbiAgY2FuY2VsLFxuICBjb21wbGV0ZWQsXG4gIGdldFBoYXNlXG59KSB7XG4gIHJldHVybiBbe1xuICAgIGV2ZW50TmFtZTogJ3RvdWNobW92ZScsXG4gICAgb3B0aW9uczoge1xuICAgICAgY2FwdHVyZTogZmFsc2VcbiAgICB9LFxuICAgIGZuOiBldmVudCA9PiB7XG4gICAgICBjb25zdCBwaGFzZSA9IGdldFBoYXNlKCk7XG4gICAgICBpZiAocGhhc2UudHlwZSAhPT0gJ0RSQUdHSU5HJykge1xuICAgICAgICBjYW5jZWwoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcGhhc2UuaGFzTW92ZWQgPSB0cnVlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjbGllbnRYLFxuICAgICAgICBjbGllbnRZXG4gICAgICB9ID0gZXZlbnQudG91Y2hlc1swXTtcbiAgICAgIGNvbnN0IHBvaW50ID0ge1xuICAgICAgICB4OiBjbGllbnRYLFxuICAgICAgICB5OiBjbGllbnRZXG4gICAgICB9O1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHBoYXNlLmFjdGlvbnMubW92ZShwb2ludCk7XG4gICAgfVxuICB9LCB7XG4gICAgZXZlbnROYW1lOiAndG91Y2hlbmQnLFxuICAgIGZuOiBldmVudCA9PiB7XG4gICAgICBjb25zdCBwaGFzZSA9IGdldFBoYXNlKCk7XG4gICAgICBpZiAocGhhc2UudHlwZSAhPT0gJ0RSQUdHSU5HJykge1xuICAgICAgICBjYW5jZWwoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHBoYXNlLmFjdGlvbnMuZHJvcCh7XG4gICAgICAgIHNob3VsZEJsb2NrTmV4dENsaWNrOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGNvbXBsZXRlZCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGV2ZW50TmFtZTogJ3RvdWNoY2FuY2VsJyxcbiAgICBmbjogZXZlbnQgPT4ge1xuICAgICAgaWYgKGdldFBoYXNlKCkudHlwZSAhPT0gJ0RSQUdHSU5HJykge1xuICAgICAgICBjYW5jZWwoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNhbmNlbCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGV2ZW50TmFtZTogJ3RvdWNoZm9yY2VjaGFuZ2UnLFxuICAgIGZuOiBldmVudCA9PiB7XG4gICAgICBjb25zdCBwaGFzZSA9IGdldFBoYXNlKCk7XG4gICAgICAhKHBoYXNlLnR5cGUgIT09ICdJRExFJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICAgIGNvbnN0IHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTtcbiAgICAgIGlmICghdG91Y2gpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNGb3JjZVByZXNzID0gdG91Y2guZm9yY2UgPj0gZm9yY2VQcmVzc1RocmVzaG9sZDtcbiAgICAgIGlmICghaXNGb3JjZVByZXNzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNob3VsZFJlc3BlY3QgPSBwaGFzZS5hY3Rpb25zLnNob3VsZFJlc3BlY3RGb3JjZVByZXNzKCk7XG4gICAgICBpZiAocGhhc2UudHlwZSA9PT0gJ1BFTkRJTkcnKSB7XG4gICAgICAgIGlmIChzaG91bGRSZXNwZWN0KSB7XG4gICAgICAgICAgY2FuY2VsKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHNob3VsZFJlc3BlY3QpIHtcbiAgICAgICAgaWYgKHBoYXNlLmhhc01vdmVkKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2FuY2VsKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9LCB7XG4gICAgZXZlbnROYW1lOiBzdXBwb3J0ZWRQYWdlVmlzaWJpbGl0eUV2ZW50TmFtZSxcbiAgICBmbjogY2FuY2VsXG4gIH1dO1xufVxuZnVuY3Rpb24gdXNlVG91Y2hTZW5zb3IoYXBpKSB7XG4gIGNvbnN0IHBoYXNlUmVmID0gdXNlUmVmKGlkbGUpO1xuICBjb25zdCB1bmJpbmRFdmVudHNSZWYgPSB1c2VSZWYobm9vcCQyKTtcbiAgY29uc3QgZ2V0UGhhc2UgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiBnZXRQaGFzZSgpIHtcbiAgICByZXR1cm4gcGhhc2VSZWYuY3VycmVudDtcbiAgfSwgW10pO1xuICBjb25zdCBzZXRQaGFzZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIHNldFBoYXNlKHBoYXNlKSB7XG4gICAgcGhhc2VSZWYuY3VycmVudCA9IHBoYXNlO1xuICB9LCBbXSk7XG4gIGNvbnN0IHN0YXJ0Q2FwdHVyZUJpbmRpbmcgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgZXZlbnROYW1lOiAndG91Y2hzdGFydCcsXG4gICAgZm46IGZ1bmN0aW9uIG9uVG91Y2hTdGFydChldmVudCkge1xuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZHJhZ2dhYmxlSWQgPSBhcGkuZmluZENsb3Nlc3REcmFnZ2FibGVJZChldmVudCk7XG4gICAgICBpZiAoIWRyYWdnYWJsZUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFjdGlvbnMgPSBhcGkudHJ5R2V0TG9jayhkcmFnZ2FibGVJZCwgc3RvcCwge1xuICAgICAgICBzb3VyY2VFdmVudDogZXZlbnRcbiAgICAgIH0pO1xuICAgICAgaWYgKCFhY3Rpb25zKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvdWNoID0gZXZlbnQudG91Y2hlc1swXTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2xpZW50WCxcbiAgICAgICAgY2xpZW50WVxuICAgICAgfSA9IHRvdWNoO1xuICAgICAgY29uc3QgcG9pbnQgPSB7XG4gICAgICAgIHg6IGNsaWVudFgsXG4gICAgICAgIHk6IGNsaWVudFlcbiAgICAgIH07XG4gICAgICB1bmJpbmRFdmVudHNSZWYuY3VycmVudCgpO1xuICAgICAgc3RhcnRQZW5kaW5nRHJhZyhhY3Rpb25zLCBwb2ludCk7XG4gICAgfVxuICB9KSwgW2FwaV0pO1xuICBjb25zdCBsaXN0ZW5Gb3JDYXB0dXJlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gbGlzdGVuRm9yQ2FwdHVyZSgpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfTtcbiAgICB1bmJpbmRFdmVudHNSZWYuY3VycmVudCA9IGJpbmRFdmVudHMod2luZG93LCBbc3RhcnRDYXB0dXJlQmluZGluZ10sIG9wdGlvbnMpO1xuICB9LCBbc3RhcnRDYXB0dXJlQmluZGluZ10pO1xuICBjb25zdCBzdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBwaGFzZVJlZi5jdXJyZW50O1xuICAgIGlmIChjdXJyZW50LnR5cGUgPT09ICdJRExFJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY3VycmVudC50eXBlID09PSAnUEVORElORycpIHtcbiAgICAgIGNsZWFyVGltZW91dChjdXJyZW50LmxvbmdQcmVzc1RpbWVySWQpO1xuICAgIH1cbiAgICBzZXRQaGFzZShpZGxlKTtcbiAgICB1bmJpbmRFdmVudHNSZWYuY3VycmVudCgpO1xuICAgIGxpc3RlbkZvckNhcHR1cmUoKTtcbiAgfSwgW2xpc3RlbkZvckNhcHR1cmUsIHNldFBoYXNlXSk7XG4gIGNvbnN0IGNhbmNlbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBwaGFzZSA9IHBoYXNlUmVmLmN1cnJlbnQ7XG4gICAgc3RvcCgpO1xuICAgIGlmIChwaGFzZS50eXBlID09PSAnRFJBR0dJTkcnKSB7XG4gICAgICBwaGFzZS5hY3Rpb25zLmNhbmNlbCh7XG4gICAgICAgIHNob3VsZEJsb2NrTmV4dENsaWNrOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHBoYXNlLnR5cGUgPT09ICdQRU5ESU5HJykge1xuICAgICAgcGhhc2UuYWN0aW9ucy5hYm9ydCgpO1xuICAgIH1cbiAgfSwgW3N0b3BdKTtcbiAgY29uc3QgYmluZENhcHR1cmluZ0V2ZW50cyA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uIGJpbmRDYXB0dXJpbmdFdmVudHMoKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICBwYXNzaXZlOiBmYWxzZVxuICAgIH07XG4gICAgY29uc3QgYXJncyA9IHtcbiAgICAgIGNhbmNlbCxcbiAgICAgIGNvbXBsZXRlZDogc3RvcCxcbiAgICAgIGdldFBoYXNlXG4gICAgfTtcbiAgICBjb25zdCB1bmJpbmRUYXJnZXQgPSBiaW5kRXZlbnRzKHdpbmRvdywgZ2V0SGFuZGxlQmluZGluZ3MoYXJncyksIG9wdGlvbnMpO1xuICAgIGNvbnN0IHVuYmluZFdpbmRvdyA9IGJpbmRFdmVudHMod2luZG93LCBnZXRXaW5kb3dCaW5kaW5ncyhhcmdzKSwgb3B0aW9ucyk7XG4gICAgdW5iaW5kRXZlbnRzUmVmLmN1cnJlbnQgPSBmdW5jdGlvbiB1bmJpbmRBbGwoKSB7XG4gICAgICB1bmJpbmRUYXJnZXQoKTtcbiAgICAgIHVuYmluZFdpbmRvdygpO1xuICAgIH07XG4gIH0sIFtjYW5jZWwsIGdldFBoYXNlLCBzdG9wXSk7XG4gIGNvbnN0IHN0YXJ0RHJhZ2dpbmcgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiBzdGFydERyYWdnaW5nKCkge1xuICAgIGNvbnN0IHBoYXNlID0gZ2V0UGhhc2UoKTtcbiAgICAhKHBoYXNlLnR5cGUgPT09ICdQRU5ESU5HJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGBDYW5ub3Qgc3RhcnQgZHJhZ2dpbmcgZnJvbSBwaGFzZSAke3BoYXNlLnR5cGV9YCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIGNvbnN0IGFjdGlvbnMgPSBwaGFzZS5hY3Rpb25zLmZsdWlkTGlmdChwaGFzZS5wb2ludCk7XG4gICAgc2V0UGhhc2Uoe1xuICAgICAgdHlwZTogJ0RSQUdHSU5HJyxcbiAgICAgIGFjdGlvbnMsXG4gICAgICBoYXNNb3ZlZDogZmFsc2VcbiAgICB9KTtcbiAgfSwgW2dldFBoYXNlLCBzZXRQaGFzZV0pO1xuICBjb25zdCBzdGFydFBlbmRpbmdEcmFnID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gc3RhcnRQZW5kaW5nRHJhZyhhY3Rpb25zLCBwb2ludCkge1xuICAgICEoZ2V0UGhhc2UoKS50eXBlID09PSAnSURMRScpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgdG8gbW92ZSBmcm9tIElETEUgdG8gUEVORElORyBkcmFnJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIGNvbnN0IGxvbmdQcmVzc1RpbWVySWQgPSBzZXRUaW1lb3V0KHN0YXJ0RHJhZ2dpbmcsIHRpbWVGb3JMb25nUHJlc3MpO1xuICAgIHNldFBoYXNlKHtcbiAgICAgIHR5cGU6ICdQRU5ESU5HJyxcbiAgICAgIHBvaW50LFxuICAgICAgYWN0aW9ucyxcbiAgICAgIGxvbmdQcmVzc1RpbWVySWRcbiAgICB9KTtcbiAgICBiaW5kQ2FwdHVyaW5nRXZlbnRzKCk7XG4gIH0sIFtiaW5kQ2FwdHVyaW5nRXZlbnRzLCBnZXRQaGFzZSwgc2V0UGhhc2UsIHN0YXJ0RHJhZ2dpbmddKTtcbiAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uIG1vdW50KCkge1xuICAgIGxpc3RlbkZvckNhcHR1cmUoKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gdW5tb3VudCgpIHtcbiAgICAgIHVuYmluZEV2ZW50c1JlZi5jdXJyZW50KCk7XG4gICAgICBjb25zdCBwaGFzZSA9IGdldFBoYXNlKCk7XG4gICAgICBpZiAocGhhc2UudHlwZSA9PT0gJ1BFTkRJTkcnKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChwaGFzZS5sb25nUHJlc3NUaW1lcklkKTtcbiAgICAgICAgc2V0UGhhc2UoaWRsZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2dldFBoYXNlLCBsaXN0ZW5Gb3JDYXB0dXJlLCBzZXRQaGFzZV0pO1xuICB1c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24gd2Via2l0SGFjaygpIHtcbiAgICBjb25zdCB1bmJpbmQgPSBiaW5kRXZlbnRzKHdpbmRvdywgW3tcbiAgICAgIGV2ZW50TmFtZTogJ3RvdWNobW92ZScsXG4gICAgICBmbjogKCkgPT4ge30sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGNhcHR1cmU6IGZhbHNlLFxuICAgICAgICBwYXNzaXZlOiBmYWxzZVxuICAgICAgfVxuICAgIH1dKTtcbiAgICByZXR1cm4gdW5iaW5kO1xuICB9LCBbXSk7XG59XG5cbmZ1bmN0aW9uIHVzZVZhbGlkYXRlU2Vuc29ySG9va3Moc2Vuc29ySG9va3MpIHtcbiAgdXNlRGV2KCgpID0+IHtcbiAgICBjb25zdCBwcmV2aW91c1JlZiA9IHVzZVByZXZpb3VzKHNlbnNvckhvb2tzKTtcbiAgICB1c2VEZXZTZXR1cFdhcm5pbmcoKCkgPT4ge1xuICAgICAgIShwcmV2aW91c1JlZi5jdXJyZW50Lmxlbmd0aCA9PT0gc2Vuc29ySG9va3MubGVuZ3RoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBjaGFuZ2UgdGhlIGFtb3VudCBvZiBzZW5zb3IgaG9va3MgYWZ0ZXIgbW91bnRpbmcnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5jb25zdCBpbnRlcmFjdGl2ZVRhZ05hbWVzID0gWydpbnB1dCcsICdidXR0b24nLCAndGV4dGFyZWEnLCAnc2VsZWN0JywgJ29wdGlvbicsICdvcHRncm91cCcsICd2aWRlbycsICdhdWRpbyddO1xuZnVuY3Rpb24gaXNBbkludGVyYWN0aXZlRWxlbWVudChwYXJlbnQsIGN1cnJlbnQpIHtcbiAgaWYgKGN1cnJlbnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBoYXNBbkludGVyYWN0aXZlVGFnID0gaW50ZXJhY3RpdmVUYWdOYW1lcy5pbmNsdWRlcyhjdXJyZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSk7XG4gIGlmIChoYXNBbkludGVyYWN0aXZlVGFnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgYXR0cmlidXRlID0gY3VycmVudC5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpO1xuICBpZiAoYXR0cmlidXRlID09PSAndHJ1ZScgfHwgYXR0cmlidXRlID09PSAnJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChjdXJyZW50ID09PSBwYXJlbnQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGlzQW5JbnRlcmFjdGl2ZUVsZW1lbnQocGFyZW50LCBjdXJyZW50LnBhcmVudEVsZW1lbnQpO1xufVxuZnVuY3Rpb24gaXNFdmVudEluSW50ZXJhY3RpdmVFbGVtZW50KGRyYWdnYWJsZSwgZXZlbnQpIHtcbiAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICBpZiAoIWlzSHRtbEVsZW1lbnQodGFyZ2V0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaXNBbkludGVyYWN0aXZlRWxlbWVudChkcmFnZ2FibGUsIHRhcmdldCk7XG59XG5cbnZhciBnZXRCb3JkZXJCb3hDZW50ZXJQb3NpdGlvbiA9IChlbCA9PiBnZXRSZWN0KGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS5jZW50ZXIpO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnQoZWwpIHtcbiAgcmV0dXJuIGVsIGluc3RhbmNlb2YgZ2V0V2luZG93RnJvbUVsKGVsKS5FbGVtZW50O1xufVxuXG5jb25zdCBzdXBwb3J0ZWRNYXRjaGVzTmFtZSA9ICgoKSA9PiB7XG4gIGNvbnN0IGJhc2UgPSAnbWF0Y2hlcyc7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cbiAgY29uc3QgY2FuZGlkYXRlcyA9IFtiYXNlLCAnbXNNYXRjaGVzU2VsZWN0b3InLCAnd2Via2l0TWF0Y2hlc1NlbGVjdG9yJ107XG4gIGNvbnN0IHZhbHVlID0gY2FuZGlkYXRlcy5maW5kKG5hbWUgPT4gbmFtZSBpbiBFbGVtZW50LnByb3RvdHlwZSk7XG4gIHJldHVybiB2YWx1ZSB8fCBiYXNlO1xufSkoKTtcbmZ1bmN0aW9uIGNsb3Nlc3RQb255ZmlsbChlbCwgc2VsZWN0b3IpIHtcbiAgaWYgKGVsID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoZWxbc3VwcG9ydGVkTWF0Y2hlc05hbWVdKHNlbGVjdG9yKSkge1xuICAgIHJldHVybiBlbDtcbiAgfVxuICByZXR1cm4gY2xvc2VzdFBvbnlmaWxsKGVsLnBhcmVudEVsZW1lbnQsIHNlbGVjdG9yKTtcbn1cbmZ1bmN0aW9uIGNsb3Nlc3QoZWwsIHNlbGVjdG9yKSB7XG4gIGlmIChlbC5jbG9zZXN0KSB7XG4gICAgcmV0dXJuIGVsLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuICB9XG4gIHJldHVybiBjbG9zZXN0UG9ueWZpbGwoZWwsIHNlbGVjdG9yKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2VsZWN0b3IoY29udGV4dElkKSB7XG4gIHJldHVybiBgWyR7ZHJhZ0hhbmRsZS5jb250ZXh0SWR9PVwiJHtjb250ZXh0SWR9XCJdYDtcbn1cbmZ1bmN0aW9uIGZpbmRDbG9zZXN0RHJhZ0hhbmRsZUZyb21FdmVudChjb250ZXh0SWQsIGV2ZW50KSB7XG4gIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgaWYgKCFpc0VsZW1lbnQodGFyZ2V0KSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoJ2V2ZW50LnRhcmdldCBtdXN0IGJlIGEgRWxlbWVudCcpIDogdm9pZCAwO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3IoY29udGV4dElkKTtcbiAgY29uc3QgaGFuZGxlID0gY2xvc2VzdCh0YXJnZXQsIHNlbGVjdG9yKTtcbiAgaWYgKCFoYW5kbGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIWlzSHRtbEVsZW1lbnQoaGFuZGxlKSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoJ2RyYWcgaGFuZGxlIG11c3QgYmUgYSBIVE1MRWxlbWVudCcpIDogdm9pZCAwO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBoYW5kbGU7XG59XG5mdW5jdGlvbiB0cnlHZXRDbG9zZXN0RHJhZ2dhYmxlSWRGcm9tRXZlbnQoY29udGV4dElkLCBldmVudCkge1xuICBjb25zdCBoYW5kbGUgPSBmaW5kQ2xvc2VzdERyYWdIYW5kbGVGcm9tRXZlbnQoY29udGV4dElkLCBldmVudCk7XG4gIGlmICghaGFuZGxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGhhbmRsZS5nZXRBdHRyaWJ1dGUoZHJhZ0hhbmRsZS5kcmFnZ2FibGVJZCk7XG59XG5cbmZ1bmN0aW9uIGZpbmREcmFnZ2FibGUoY29udGV4dElkLCBkcmFnZ2FibGVJZCkge1xuICBjb25zdCBzZWxlY3RvciA9IGBbJHtkcmFnZ2FibGUuY29udGV4dElkfT1cIiR7Y29udGV4dElkfVwiXWA7XG4gIGNvbnN0IHBvc3NpYmxlID0gcXVlcnlTZWxlY3RvckFsbChkb2N1bWVudCwgc2VsZWN0b3IpO1xuICBjb25zdCBkcmFnZ2FibGUkMSA9IHBvc3NpYmxlLmZpbmQoZWwgPT4ge1xuICAgIHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoZHJhZ2dhYmxlLmlkKSA9PT0gZHJhZ2dhYmxlSWQ7XG4gIH0pO1xuICBpZiAoIWRyYWdnYWJsZSQxKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKCFpc0h0bWxFbGVtZW50KGRyYWdnYWJsZSQxKSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoJ0RyYWdnYWJsZSBlbGVtZW50IGlzIG5vdCBhIEhUTUxFbGVtZW50JykgOiB2b2lkIDA7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGRyYWdnYWJsZSQxO1xufVxuXG5mdW5jdGlvbiBwcmV2ZW50RGVmYXVsdChldmVudCkge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xufVxuZnVuY3Rpb24gaXNBY3RpdmUoe1xuICBleHBlY3RlZCxcbiAgcGhhc2UsXG4gIGlzTG9ja0FjdGl2ZSxcbiAgc2hvdWxkV2FyblxufSkge1xuICBpZiAoIWlzTG9ja0FjdGl2ZSgpKSB7XG4gICAgaWYgKHNob3VsZFdhcm4pIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoYFxuICAgICAgICBDYW5ub3QgcGVyZm9ybSBhY3Rpb24uXG4gICAgICAgIFRoZSBzZW5zb3Igbm8gbG9uZ2VyIGhhcyBhbiBhY3Rpb24gbG9jay5cblxuICAgICAgICBUaXBzOlxuXG4gICAgICAgIC0gVGhyb3cgYXdheSB5b3VyIGFjdGlvbiBoYW5kbGVycyB3aGVuIGZvcmNlU3RvcCgpIGlzIGNhbGxlZFxuICAgICAgICAtIENoZWNrIGFjdGlvbnMuaXNBY3RpdmUoKSBpZiB5b3UgcmVhbGx5IG5lZWQgdG9cbiAgICAgIGApIDogdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGV4cGVjdGVkICE9PSBwaGFzZSkge1xuICAgIGlmIChzaG91bGRXYXJuKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGBcbiAgICAgICAgQ2Fubm90IHBlcmZvcm0gYWN0aW9uLlxuICAgICAgICBUaGUgYWN0aW9ucyB5b3UgdXNlZCBiZWxvbmcgdG8gYW4gb3V0ZGF0ZWQgcGhhc2VcblxuICAgICAgICBDdXJyZW50IHBoYXNlOiAke2V4cGVjdGVkfVxuICAgICAgICBZb3UgY2FsbGVkIGFuIGFjdGlvbiBmcm9tIG91dGRhdGVkIHBoYXNlOiAke3BoYXNlfVxuXG4gICAgICAgIFRpcHM6XG5cbiAgICAgICAgLSBEbyBub3QgdXNlIHByZURyYWdBY3Rpb25zIGFjdGlvbnMgYWZ0ZXIgY2FsbGluZyBwcmVEcmFnQWN0aW9ucy5saWZ0KClcbiAgICAgIGApIDogdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBjYW5TdGFydCh7XG4gIGxvY2tBUEksXG4gIHN0b3JlLFxuICByZWdpc3RyeSxcbiAgZHJhZ2dhYmxlSWRcbn0pIHtcbiAgaWYgKGxvY2tBUEkuaXNDbGFpbWVkKCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZW50cnkgPSByZWdpc3RyeS5kcmFnZ2FibGUuZmluZEJ5SWQoZHJhZ2dhYmxlSWQpO1xuICBpZiAoIWVudHJ5KSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhgVW5hYmxlIHRvIGZpbmQgZHJhZ2dhYmxlIHdpdGggaWQ6ICR7ZHJhZ2dhYmxlSWR9YCkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghZW50cnkub3B0aW9ucy5pc0VuYWJsZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCFjYW5TdGFydERyYWcoc3RvcmUuZ2V0U3RhdGUoKSwgZHJhZ2dhYmxlSWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gdHJ5U3RhcnQoe1xuICBsb2NrQVBJLFxuICBjb250ZXh0SWQsXG4gIHN0b3JlLFxuICByZWdpc3RyeSxcbiAgZHJhZ2dhYmxlSWQsXG4gIGZvcmNlU2Vuc29yU3RvcCxcbiAgc291cmNlRXZlbnRcbn0pIHtcbiAgY29uc3Qgc2hvdWxkU3RhcnQgPSBjYW5TdGFydCh7XG4gICAgbG9ja0FQSSxcbiAgICBzdG9yZSxcbiAgICByZWdpc3RyeSxcbiAgICBkcmFnZ2FibGVJZFxuICB9KTtcbiAgaWYgKCFzaG91bGRTdGFydCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGVudHJ5ID0gcmVnaXN0cnkuZHJhZ2dhYmxlLmdldEJ5SWQoZHJhZ2dhYmxlSWQpO1xuICBjb25zdCBlbCA9IGZpbmREcmFnZ2FibGUoY29udGV4dElkLCBlbnRyeS5kZXNjcmlwdG9yLmlkKTtcbiAgaWYgKCFlbCkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoYFVuYWJsZSB0byBmaW5kIGRyYWdnYWJsZSBlbGVtZW50IHdpdGggaWQ6ICR7ZHJhZ2dhYmxlSWR9YCkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHNvdXJjZUV2ZW50ICYmICFlbnRyeS5vcHRpb25zLmNhbkRyYWdJbnRlcmFjdGl2ZUVsZW1lbnRzICYmIGlzRXZlbnRJbkludGVyYWN0aXZlRWxlbWVudChlbCwgc291cmNlRXZlbnQpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgbG9jayA9IGxvY2tBUEkuY2xhaW0oZm9yY2VTZW5zb3JTdG9wIHx8IG5vb3AkMik7XG4gIGxldCBwaGFzZSA9ICdQUkVfRFJBRyc7XG4gIGZ1bmN0aW9uIGdldFNob3VsZFJlc3BlY3RGb3JjZVByZXNzKCkge1xuICAgIHJldHVybiBlbnRyeS5vcHRpb25zLnNob3VsZFJlc3BlY3RGb3JjZVByZXNzO1xuICB9XG4gIGZ1bmN0aW9uIGlzTG9ja0FjdGl2ZSgpIHtcbiAgICByZXR1cm4gbG9ja0FQSS5pc0FjdGl2ZShsb2NrKTtcbiAgfVxuICBmdW5jdGlvbiB0cnlEaXNwYXRjaChleHBlY3RlZCwgZ2V0QWN0aW9uKSB7XG4gICAgaWYgKGlzQWN0aXZlKHtcbiAgICAgIGV4cGVjdGVkLFxuICAgICAgcGhhc2UsXG4gICAgICBpc0xvY2tBY3RpdmUsXG4gICAgICBzaG91bGRXYXJuOiB0cnVlXG4gICAgfSkpIHtcbiAgICAgIHN0b3JlLmRpc3BhdGNoKGdldEFjdGlvbigpKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdHJ5RGlzcGF0Y2hXaGVuRHJhZ2dpbmcgPSB0cnlEaXNwYXRjaC5iaW5kKG51bGwsICdEUkFHR0lORycpO1xuICBmdW5jdGlvbiBsaWZ0KGFyZ3MpIHtcbiAgICBmdW5jdGlvbiBjb21wbGV0ZWQoKSB7XG4gICAgICBsb2NrQVBJLnJlbGVhc2UoKTtcbiAgICAgIHBoYXNlID0gJ0NPTVBMRVRFRCc7XG4gICAgfVxuICAgIGlmIChwaGFzZSAhPT0gJ1BSRV9EUkFHJykge1xuICAgICAgY29tcGxldGVkKCk7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGBDYW5ub3QgbGlmdCBpbiBwaGFzZSAke3BoYXNlfWApIDogaW52YXJpYW50KGZhbHNlKSA7XG4gICAgfVxuICAgIHN0b3JlLmRpc3BhdGNoKGxpZnQkMShhcmdzLmxpZnRBY3Rpb25BcmdzKSk7XG4gICAgcGhhc2UgPSAnRFJBR0dJTkcnO1xuICAgIGZ1bmN0aW9uIGZpbmlzaChyZWFzb24sIG9wdGlvbnMgPSB7XG4gICAgICBzaG91bGRCbG9ja05leHRDbGljazogZmFsc2VcbiAgICB9KSB7XG4gICAgICBhcmdzLmNsZWFudXAoKTtcbiAgICAgIGlmIChvcHRpb25zLnNob3VsZEJsb2NrTmV4dENsaWNrKSB7XG4gICAgICAgIGNvbnN0IHVuYmluZCA9IGJpbmRFdmVudHMod2luZG93LCBbe1xuICAgICAgICAgIGV2ZW50TmFtZTogJ2NsaWNrJyxcbiAgICAgICAgICBmbjogcHJldmVudERlZmF1bHQsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgb25jZTogdHJ1ZSxcbiAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfV0pO1xuICAgICAgICBzZXRUaW1lb3V0KHVuYmluZCk7XG4gICAgICB9XG4gICAgICBjb21wbGV0ZWQoKTtcbiAgICAgIHN0b3JlLmRpc3BhdGNoKGRyb3AkMSh7XG4gICAgICAgIHJlYXNvblxuICAgICAgfSkpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaXNBY3RpdmU6ICgpID0+IGlzQWN0aXZlKHtcbiAgICAgICAgZXhwZWN0ZWQ6ICdEUkFHR0lORycsXG4gICAgICAgIHBoYXNlLFxuICAgICAgICBpc0xvY2tBY3RpdmUsXG4gICAgICAgIHNob3VsZFdhcm46IGZhbHNlXG4gICAgICB9KSxcbiAgICAgIHNob3VsZFJlc3BlY3RGb3JjZVByZXNzOiBnZXRTaG91bGRSZXNwZWN0Rm9yY2VQcmVzcyxcbiAgICAgIGRyb3A6IG9wdGlvbnMgPT4gZmluaXNoKCdEUk9QJywgb3B0aW9ucyksXG4gICAgICBjYW5jZWw6IG9wdGlvbnMgPT4gZmluaXNoKCdDQU5DRUwnLCBvcHRpb25zKSxcbiAgICAgIC4uLmFyZ3MuYWN0aW9uc1xuICAgIH07XG4gIH1cbiAgZnVuY3Rpb24gZmx1aWRMaWZ0KGNsaWVudFNlbGVjdGlvbikge1xuICAgIGNvbnN0IG1vdmUkMSA9IHJhZlNjaGQoY2xpZW50ID0+IHtcbiAgICAgIHRyeURpc3BhdGNoV2hlbkRyYWdnaW5nKCgpID0+IG1vdmUoe1xuICAgICAgICBjbGllbnRcbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgICBjb25zdCBhcGkgPSBsaWZ0KHtcbiAgICAgIGxpZnRBY3Rpb25BcmdzOiB7XG4gICAgICAgIGlkOiBkcmFnZ2FibGVJZCxcbiAgICAgICAgY2xpZW50U2VsZWN0aW9uLFxuICAgICAgICBtb3ZlbWVudE1vZGU6ICdGTFVJRCdcbiAgICAgIH0sXG4gICAgICBjbGVhbnVwOiAoKSA9PiBtb3ZlJDEuY2FuY2VsKCksXG4gICAgICBhY3Rpb25zOiB7XG4gICAgICAgIG1vdmU6IG1vdmUkMVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5hcGksXG4gICAgICBtb3ZlOiBtb3ZlJDFcbiAgICB9O1xuICB9XG4gIGZ1bmN0aW9uIHNuYXBMaWZ0KCkge1xuICAgIGNvbnN0IGFjdGlvbnMgPSB7XG4gICAgICBtb3ZlVXA6ICgpID0+IHRyeURpc3BhdGNoV2hlbkRyYWdnaW5nKG1vdmVVcCksXG4gICAgICBtb3ZlUmlnaHQ6ICgpID0+IHRyeURpc3BhdGNoV2hlbkRyYWdnaW5nKG1vdmVSaWdodCksXG4gICAgICBtb3ZlRG93bjogKCkgPT4gdHJ5RGlzcGF0Y2hXaGVuRHJhZ2dpbmcobW92ZURvd24pLFxuICAgICAgbW92ZUxlZnQ6ICgpID0+IHRyeURpc3BhdGNoV2hlbkRyYWdnaW5nKG1vdmVMZWZ0KVxuICAgIH07XG4gICAgcmV0dXJuIGxpZnQoe1xuICAgICAgbGlmdEFjdGlvbkFyZ3M6IHtcbiAgICAgICAgaWQ6IGRyYWdnYWJsZUlkLFxuICAgICAgICBjbGllbnRTZWxlY3Rpb246IGdldEJvcmRlckJveENlbnRlclBvc2l0aW9uKGVsKSxcbiAgICAgICAgbW92ZW1lbnRNb2RlOiAnU05BUCdcbiAgICAgIH0sXG4gICAgICBjbGVhbnVwOiBub29wJDIsXG4gICAgICBhY3Rpb25zXG4gICAgfSk7XG4gIH1cbiAgZnVuY3Rpb24gYWJvcnRQcmVEcmFnKCkge1xuICAgIGNvbnN0IHNob3VsZFJlbGVhc2UgPSBpc0FjdGl2ZSh7XG4gICAgICBleHBlY3RlZDogJ1BSRV9EUkFHJyxcbiAgICAgIHBoYXNlLFxuICAgICAgaXNMb2NrQWN0aXZlLFxuICAgICAgc2hvdWxkV2FybjogdHJ1ZVxuICAgIH0pO1xuICAgIGlmIChzaG91bGRSZWxlYXNlKSB7XG4gICAgICBsb2NrQVBJLnJlbGVhc2UoKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcHJlRHJhZyA9IHtcbiAgICBpc0FjdGl2ZTogKCkgPT4gaXNBY3RpdmUoe1xuICAgICAgZXhwZWN0ZWQ6ICdQUkVfRFJBRycsXG4gICAgICBwaGFzZSxcbiAgICAgIGlzTG9ja0FjdGl2ZSxcbiAgICAgIHNob3VsZFdhcm46IGZhbHNlXG4gICAgfSksXG4gICAgc2hvdWxkUmVzcGVjdEZvcmNlUHJlc3M6IGdldFNob3VsZFJlc3BlY3RGb3JjZVByZXNzLFxuICAgIGZsdWlkTGlmdCxcbiAgICBzbmFwTGlmdCxcbiAgICBhYm9ydDogYWJvcnRQcmVEcmFnXG4gIH07XG4gIHJldHVybiBwcmVEcmFnO1xufVxuY29uc3QgZGVmYXVsdFNlbnNvcnMgPSBbdXNlTW91c2VTZW5zb3IsIHVzZUtleWJvYXJkU2Vuc29yLCB1c2VUb3VjaFNlbnNvcl07XG5mdW5jdGlvbiB1c2VTZW5zb3JNYXJzaGFsKHtcbiAgY29udGV4dElkLFxuICBzdG9yZSxcbiAgcmVnaXN0cnksXG4gIGN1c3RvbVNlbnNvcnMsXG4gIGVuYWJsZURlZmF1bHRTZW5zb3JzXG59KSB7XG4gIGNvbnN0IHVzZVNlbnNvcnMgPSBbLi4uKGVuYWJsZURlZmF1bHRTZW5zb3JzID8gZGVmYXVsdFNlbnNvcnMgOiBbXSksIC4uLihjdXN0b21TZW5zb3JzIHx8IFtdKV07XG4gIGNvbnN0IGxvY2tBUEkgPSB1c2VTdGF0ZSgoKSA9PiBjcmVhdGUoKSlbMF07XG4gIGNvbnN0IHRyeUFiYW5kb25Mb2NrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gdHJ5QWJhbmRvbkxvY2socHJldmlvdXMsIGN1cnJlbnQpIHtcbiAgICBpZiAoaXNEcmFnZ2luZyhwcmV2aW91cykgJiYgIWlzRHJhZ2dpbmcoY3VycmVudCkpIHtcbiAgICAgIGxvY2tBUEkudHJ5QWJhbmRvbigpO1xuICAgIH1cbiAgfSwgW2xvY2tBUEldKTtcbiAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uIGxpc3RlblRvU3RvcmUoKSB7XG4gICAgbGV0IHByZXZpb3VzID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHN0b3JlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICAgIHRyeUFiYW5kb25Mb2NrKHByZXZpb3VzLCBjdXJyZW50KTtcbiAgICAgIHByZXZpb3VzID0gY3VycmVudDtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG4gIH0sIFtsb2NrQVBJLCBzdG9yZSwgdHJ5QWJhbmRvbkxvY2tdKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gbG9ja0FQSS50cnlBYmFuZG9uO1xuICB9LCBbbG9ja0FQSS50cnlBYmFuZG9uXSk7XG4gIGNvbnN0IGNhbkdldExvY2sgPSB1c2VDYWxsYmFjayhkcmFnZ2FibGVJZCA9PiB7XG4gICAgcmV0dXJuIGNhblN0YXJ0KHtcbiAgICAgIGxvY2tBUEksXG4gICAgICByZWdpc3RyeSxcbiAgICAgIHN0b3JlLFxuICAgICAgZHJhZ2dhYmxlSWRcbiAgICB9KTtcbiAgfSwgW2xvY2tBUEksIHJlZ2lzdHJ5LCBzdG9yZV0pO1xuICBjb25zdCB0cnlHZXRMb2NrID0gdXNlQ2FsbGJhY2soKGRyYWdnYWJsZUlkLCBmb3JjZVN0b3AsIG9wdGlvbnMpID0+IHRyeVN0YXJ0KHtcbiAgICBsb2NrQVBJLFxuICAgIHJlZ2lzdHJ5LFxuICAgIGNvbnRleHRJZCxcbiAgICBzdG9yZSxcbiAgICBkcmFnZ2FibGVJZCxcbiAgICBmb3JjZVNlbnNvclN0b3A6IGZvcmNlU3RvcCB8fCBudWxsLFxuICAgIHNvdXJjZUV2ZW50OiBvcHRpb25zICYmIG9wdGlvbnMuc291cmNlRXZlbnQgPyBvcHRpb25zLnNvdXJjZUV2ZW50IDogbnVsbFxuICB9KSwgW2NvbnRleHRJZCwgbG9ja0FQSSwgcmVnaXN0cnksIHN0b3JlXSk7XG4gIGNvbnN0IGZpbmRDbG9zZXN0RHJhZ2dhYmxlSWQgPSB1c2VDYWxsYmFjayhldmVudCA9PiB0cnlHZXRDbG9zZXN0RHJhZ2dhYmxlSWRGcm9tRXZlbnQoY29udGV4dElkLCBldmVudCksIFtjb250ZXh0SWRdKTtcbiAgY29uc3QgZmluZE9wdGlvbnNGb3JEcmFnZ2FibGUgPSB1c2VDYWxsYmFjayhpZCA9PiB7XG4gICAgY29uc3QgZW50cnkgPSByZWdpc3RyeS5kcmFnZ2FibGUuZmluZEJ5SWQoaWQpO1xuICAgIHJldHVybiBlbnRyeSA/IGVudHJ5Lm9wdGlvbnMgOiBudWxsO1xuICB9LCBbcmVnaXN0cnkuZHJhZ2dhYmxlXSk7XG4gIGNvbnN0IHRyeVJlbGVhc2VMb2NrID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gdHJ5UmVsZWFzZUxvY2soKSB7XG4gICAgaWYgKCFsb2NrQVBJLmlzQ2xhaW1lZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxvY2tBUEkudHJ5QWJhbmRvbigpO1xuICAgIGlmIChzdG9yZS5nZXRTdGF0ZSgpLnBoYXNlICE9PSAnSURMRScpIHtcbiAgICAgIHN0b3JlLmRpc3BhdGNoKGZsdXNoKCkpO1xuICAgIH1cbiAgfSwgW2xvY2tBUEksIHN0b3JlXSk7XG4gIGNvbnN0IGlzTG9ja0NsYWltZWQgPSB1c2VDYWxsYmFjaygoKSA9PiBsb2NrQVBJLmlzQ2xhaW1lZCgpLCBbbG9ja0FQSV0pO1xuICBjb25zdCBhcGkgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgY2FuR2V0TG9jayxcbiAgICB0cnlHZXRMb2NrLFxuICAgIGZpbmRDbG9zZXN0RHJhZ2dhYmxlSWQsXG4gICAgZmluZE9wdGlvbnNGb3JEcmFnZ2FibGUsXG4gICAgdHJ5UmVsZWFzZUxvY2ssXG4gICAgaXNMb2NrQ2xhaW1lZFxuICB9KSwgW2NhbkdldExvY2ssIHRyeUdldExvY2ssIGZpbmRDbG9zZXN0RHJhZ2dhYmxlSWQsIGZpbmRPcHRpb25zRm9yRHJhZ2dhYmxlLCB0cnlSZWxlYXNlTG9jaywgaXNMb2NrQ2xhaW1lZF0pO1xuICB1c2VWYWxpZGF0ZVNlbnNvckhvb2tzKHVzZVNlbnNvcnMpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHVzZVNlbnNvcnMubGVuZ3RoOyBpKyspIHtcbiAgICB1c2VTZW5zb3JzW2ldKGFwaSk7XG4gIH1cbn1cblxuY29uc3QgY3JlYXRlUmVzcG9uZGVycyA9IHByb3BzID0+ICh7XG4gIG9uQmVmb3JlQ2FwdHVyZTogdCA9PiB7XG4gICAgY29uc3Qgb25CZWZvcmVDYXB1cmVDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5vbkJlZm9yZUNhcHR1cmUpIHtcbiAgICAgICAgcHJvcHMub25CZWZvcmVDYXB0dXJlKHQpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKFJlYWN0LnZlcnNpb24uc3RhcnRzV2l0aCgnMTYnKSB8fCBSZWFjdC52ZXJzaW9uLnN0YXJ0c1dpdGgoJzE3JykpIHtcbiAgICAgIG9uQmVmb3JlQ2FwdXJlQ2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmx1c2hTeW5jKG9uQmVmb3JlQ2FwdXJlQ2FsbGJhY2spO1xuICAgIH1cbiAgfSxcbiAgb25CZWZvcmVEcmFnU3RhcnQ6IHByb3BzLm9uQmVmb3JlRHJhZ1N0YXJ0LFxuICBvbkRyYWdTdGFydDogcHJvcHMub25EcmFnU3RhcnQsXG4gIG9uRHJhZ0VuZDogcHJvcHMub25EcmFnRW5kLFxuICBvbkRyYWdVcGRhdGU6IHByb3BzLm9uRHJhZ1VwZGF0ZVxufSk7XG5jb25zdCBjcmVhdGVBdXRvU2Nyb2xsZXJPcHRpb25zID0gcHJvcHMgPT4gKHtcbiAgLi4uZGVmYXVsdEF1dG9TY3JvbGxlck9wdGlvbnMsXG4gIC4uLnByb3BzLmF1dG9TY3JvbGxlck9wdGlvbnMsXG4gIGR1cmF0aW9uRGFtcGVuaW5nOiB7XG4gICAgLi4uZGVmYXVsdEF1dG9TY3JvbGxlck9wdGlvbnMuZHVyYXRpb25EYW1wZW5pbmcsXG4gICAgLi4ucHJvcHMuYXV0b1Njcm9sbGVyT3B0aW9uc1xuICB9XG59KTtcbmZ1bmN0aW9uIGdldFN0b3JlKGxhenlSZWYpIHtcbiAgIWxhenlSZWYuY3VycmVudCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0NvdWxkIG5vdCBmaW5kIHN0b3JlIGZyb20gbGF6eSByZWYnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHJldHVybiBsYXp5UmVmLmN1cnJlbnQ7XG59XG5mdW5jdGlvbiBBcHAocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNvbnRleHRJZCxcbiAgICBzZXRDYWxsYmFja3MsXG4gICAgc2Vuc29ycyxcbiAgICBub25jZSxcbiAgICBkcmFnSGFuZGxlVXNhZ2VJbnN0cnVjdGlvbnNcbiAgfSA9IHByb3BzO1xuICBjb25zdCBsYXp5U3RvcmVSZWYgPSB1c2VSZWYobnVsbCk7XG4gIHVzZVN0YXJ0dXBWYWxpZGF0aW9uKCk7XG4gIGNvbnN0IGxhc3RQcm9wc1JlZiA9IHVzZVByZXZpb3VzKHByb3BzKTtcbiAgY29uc3QgZ2V0UmVzcG9uZGVycyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlUmVzcG9uZGVycyhsYXN0UHJvcHNSZWYuY3VycmVudCk7XG4gIH0sIFtsYXN0UHJvcHNSZWZdKTtcbiAgY29uc3QgZ2V0QXV0b1Njcm9sbGVyT3B0aW9ucyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlQXV0b1Njcm9sbGVyT3B0aW9ucyhsYXN0UHJvcHNSZWYuY3VycmVudCk7XG4gIH0sIFtsYXN0UHJvcHNSZWZdKTtcbiAgY29uc3QgYW5ub3VuY2UgPSB1c2VBbm5vdW5jZXIoY29udGV4dElkKTtcbiAgY29uc3QgZHJhZ0hhbmRsZVVzYWdlSW5zdHJ1Y3Rpb25zSWQgPSB1c2VIaWRkZW5UZXh0RWxlbWVudCh7XG4gICAgY29udGV4dElkLFxuICAgIHRleHQ6IGRyYWdIYW5kbGVVc2FnZUluc3RydWN0aW9uc1xuICB9KTtcbiAgY29uc3Qgc3R5bGVNYXJzaGFsID0gdXNlU3R5bGVNYXJzaGFsKGNvbnRleHRJZCwgbm9uY2UpO1xuICBjb25zdCBsYXp5RGlzcGF0Y2ggPSB1c2VDYWxsYmFjayhhY3Rpb24gPT4ge1xuICAgIGdldFN0b3JlKGxhenlTdG9yZVJlZikuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfSwgW10pO1xuICBjb25zdCBtYXJzaGFsQ2FsbGJhY2tzID0gdXNlTWVtbygoKSA9PiBiaW5kQWN0aW9uQ3JlYXRvcnMoe1xuICAgIHB1Ymxpc2hXaGlsZURyYWdnaW5nLFxuICAgIHVwZGF0ZURyb3BwYWJsZVNjcm9sbCxcbiAgICB1cGRhdGVEcm9wcGFibGVJc0VuYWJsZWQsXG4gICAgdXBkYXRlRHJvcHBhYmxlSXNDb21iaW5lRW5hYmxlZCxcbiAgICBjb2xsZWN0aW9uU3RhcnRpbmdcbiAgfSwgbGF6eURpc3BhdGNoKSwgW2xhenlEaXNwYXRjaF0pO1xuICBjb25zdCByZWdpc3RyeSA9IHVzZVJlZ2lzdHJ5KCk7XG4gIGNvbnN0IGRpbWVuc2lvbk1hcnNoYWwgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRGltZW5zaW9uTWFyc2hhbChyZWdpc3RyeSwgbWFyc2hhbENhbGxiYWNrcyk7XG4gIH0sIFtyZWdpc3RyeSwgbWFyc2hhbENhbGxiYWNrc10pO1xuICBjb25zdCBhdXRvU2Nyb2xsZXIgPSB1c2VNZW1vKCgpID0+IGNyZWF0ZUF1dG9TY3JvbGxlcih7XG4gICAgc2Nyb2xsV2luZG93LFxuICAgIHNjcm9sbERyb3BwYWJsZTogZGltZW5zaW9uTWFyc2hhbC5zY3JvbGxEcm9wcGFibGUsXG4gICAgZ2V0QXV0b1Njcm9sbGVyT3B0aW9ucyxcbiAgICAuLi5iaW5kQWN0aW9uQ3JlYXRvcnMoe1xuICAgICAgbW92ZVxuICAgIH0sIGxhenlEaXNwYXRjaClcbiAgfSksIFtkaW1lbnNpb25NYXJzaGFsLnNjcm9sbERyb3BwYWJsZSwgbGF6eURpc3BhdGNoLCBnZXRBdXRvU2Nyb2xsZXJPcHRpb25zXSk7XG4gIGNvbnN0IGZvY3VzTWFyc2hhbCA9IHVzZUZvY3VzTWFyc2hhbChjb250ZXh0SWQpO1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gY3JlYXRlU3RvcmUoe1xuICAgIGFubm91bmNlLFxuICAgIGF1dG9TY3JvbGxlcixcbiAgICBkaW1lbnNpb25NYXJzaGFsLFxuICAgIGZvY3VzTWFyc2hhbCxcbiAgICBnZXRSZXNwb25kZXJzLFxuICAgIHN0eWxlTWFyc2hhbFxuICB9KSwgW2Fubm91bmNlLCBhdXRvU2Nyb2xsZXIsIGRpbWVuc2lvbk1hcnNoYWwsIGZvY3VzTWFyc2hhbCwgZ2V0UmVzcG9uZGVycywgc3R5bGVNYXJzaGFsXSk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGxhenlTdG9yZVJlZi5jdXJyZW50ICYmIGxhenlTdG9yZVJlZi5jdXJyZW50ICE9PSBzdG9yZSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZygndW5leHBlY3RlZCBzdG9yZSBjaGFuZ2UnKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cbiAgbGF6eVN0b3JlUmVmLmN1cnJlbnQgPSBzdG9yZTtcbiAgY29uc3QgdHJ5UmVzZXRTdG9yZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50ID0gZ2V0U3RvcmUobGF6eVN0b3JlUmVmKTtcbiAgICBjb25zdCBzdGF0ZSA9IGN1cnJlbnQuZ2V0U3RhdGUoKTtcbiAgICBpZiAoc3RhdGUucGhhc2UgIT09ICdJRExFJykge1xuICAgICAgY3VycmVudC5kaXNwYXRjaChmbHVzaCgpKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgY29uc3QgaXNEcmFnZ2luZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGdldFN0b3JlKGxhenlTdG9yZVJlZikuZ2V0U3RhdGUoKTtcbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdEUk9QX0FOSU1BVElORycpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdJRExFJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGUuaXNEcmFnZ2luZztcbiAgfSwgW10pO1xuICBjb25zdCBhcHBDYWxsYmFja3MgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgaXNEcmFnZ2luZyxcbiAgICB0cnlBYm9ydDogdHJ5UmVzZXRTdG9yZVxuICB9KSwgW2lzRHJhZ2dpbmcsIHRyeVJlc2V0U3RvcmVdKTtcbiAgc2V0Q2FsbGJhY2tzKGFwcENhbGxiYWNrcyk7XG4gIGNvbnN0IGdldENhbkxpZnQgPSB1c2VDYWxsYmFjayhpZCA9PiBjYW5TdGFydERyYWcoZ2V0U3RvcmUobGF6eVN0b3JlUmVmKS5nZXRTdGF0ZSgpLCBpZCksIFtdKTtcbiAgY29uc3QgZ2V0SXNNb3ZlbWVudEFsbG93ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiBpc01vdmVtZW50QWxsb3dlZChnZXRTdG9yZShsYXp5U3RvcmVSZWYpLmdldFN0YXRlKCkpLCBbXSk7XG4gIGNvbnN0IGFwcENvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgbWFyc2hhbDogZGltZW5zaW9uTWFyc2hhbCxcbiAgICBmb2N1czogZm9jdXNNYXJzaGFsLFxuICAgIGNvbnRleHRJZCxcbiAgICBjYW5MaWZ0OiBnZXRDYW5MaWZ0LFxuICAgIGlzTW92ZW1lbnRBbGxvd2VkOiBnZXRJc01vdmVtZW50QWxsb3dlZCxcbiAgICBkcmFnSGFuZGxlVXNhZ2VJbnN0cnVjdGlvbnNJZCxcbiAgICByZWdpc3RyeVxuICB9KSwgW2NvbnRleHRJZCwgZGltZW5zaW9uTWFyc2hhbCwgZHJhZ0hhbmRsZVVzYWdlSW5zdHJ1Y3Rpb25zSWQsIGZvY3VzTWFyc2hhbCwgZ2V0Q2FuTGlmdCwgZ2V0SXNNb3ZlbWVudEFsbG93ZWQsIHJlZ2lzdHJ5XSk7XG4gIHVzZVNlbnNvck1hcnNoYWwoe1xuICAgIGNvbnRleHRJZCxcbiAgICBzdG9yZSxcbiAgICByZWdpc3RyeSxcbiAgICBjdXN0b21TZW5zb3JzOiBzZW5zb3JzIHx8IG51bGwsXG4gICAgZW5hYmxlRGVmYXVsdFNlbnNvcnM6IHByb3BzLmVuYWJsZURlZmF1bHRTZW5zb3JzICE9PSBmYWxzZVxuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gdHJ5UmVzZXRTdG9yZTtcbiAgfSwgW3RyeVJlc2V0U3RvcmVdKTtcbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQXBwQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBhcHBDb250ZXh0XG4gIH0sIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUHJvdmlkZXIsIHtcbiAgICBjb250ZXh0OiBTdG9yZUNvbnRleHQsXG4gICAgc3RvcmU6IHN0b3JlXG4gIH0sIHByb3BzLmNoaWxkcmVuKSk7XG59XG5cbmxldCBjb3VudCA9IDA7XG5mdW5jdGlvbiByZXNldERlcHJlY2F0ZWRVbmlxdWVDb250ZXh0SWQoKSB7XG4gIGNvdW50ID0gMDtcbn1cbmZ1bmN0aW9uIHVzZURlcHJlY2F0ZWRVbmlxdWVDb250ZXh0SWQoKSB7XG4gIHJldHVybiB1c2VNZW1vKCgpID0+IGAke2NvdW50Kyt9YCwgW10pO1xufVxuZnVuY3Rpb24gdXNlVW5pcXVlQ29udGV4dElkKCkge1xuICByZXR1cm4gUmVhY3QudXNlSWQoKTtcbn1cbnZhciB1c2VVbmlxdWVDb250ZXh0SWQkMSA9ICd1c2VJZCcgaW4gUmVhY3QgPyB1c2VVbmlxdWVDb250ZXh0SWQgOiB1c2VEZXByZWNhdGVkVW5pcXVlQ29udGV4dElkO1xuXG5mdW5jdGlvbiByZXNldFNlcnZlckNvbnRleHQoKSB7XG4gIGlmICgndXNlSWQnIGluIFJlYWN0KSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhgSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjYWxsIHJlc2V0U2VydmVyQ29udGV4dCB3aGVuIHVzaW5nIFJlYWN0IDE4K2ApIDogdm9pZCAwO1xuICAgIHJldHVybjtcbiAgfVxuICByZXNldERlcHJlY2F0ZWRVbmlxdWVDb250ZXh0SWQoKTtcbiAgcmVzZXREZXByZWNhdGVkVW5pcXVlSWQoKTtcbn1cbmZ1bmN0aW9uIERyYWdEcm9wQ29udGV4dChwcm9wcykge1xuICBjb25zdCBjb250ZXh0SWQgPSB1c2VVbmlxdWVDb250ZXh0SWQkMSgpO1xuICBjb25zdCBkcmFnSGFuZGxlVXNhZ2VJbnN0cnVjdGlvbnMgPSBwcm9wcy5kcmFnSGFuZGxlVXNhZ2VJbnN0cnVjdGlvbnMgfHwgcHJlc2V0JDEuZHJhZ0hhbmRsZVVzYWdlSW5zdHJ1Y3Rpb25zO1xuICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChFcnJvckJvdW5kYXJ5LCBudWxsLCBzZXRDYWxsYmFja3MgPT4gUmVhY3QuY3JlYXRlRWxlbWVudChBcHAsIHtcbiAgICBub25jZTogcHJvcHMubm9uY2UsXG4gICAgY29udGV4dElkOiBjb250ZXh0SWQsXG4gICAgc2V0Q2FsbGJhY2tzOiBzZXRDYWxsYmFja3MsXG4gICAgZHJhZ0hhbmRsZVVzYWdlSW5zdHJ1Y3Rpb25zOiBkcmFnSGFuZGxlVXNhZ2VJbnN0cnVjdGlvbnMsXG4gICAgZW5hYmxlRGVmYXVsdFNlbnNvcnM6IHByb3BzLmVuYWJsZURlZmF1bHRTZW5zb3JzLFxuICAgIHNlbnNvcnM6IHByb3BzLnNlbnNvcnMsXG4gICAgb25CZWZvcmVDYXB0dXJlOiBwcm9wcy5vbkJlZm9yZUNhcHR1cmUsXG4gICAgb25CZWZvcmVEcmFnU3RhcnQ6IHByb3BzLm9uQmVmb3JlRHJhZ1N0YXJ0LFxuICAgIG9uRHJhZ1N0YXJ0OiBwcm9wcy5vbkRyYWdTdGFydCxcbiAgICBvbkRyYWdVcGRhdGU6IHByb3BzLm9uRHJhZ1VwZGF0ZSxcbiAgICBvbkRyYWdFbmQ6IHByb3BzLm9uRHJhZ0VuZCxcbiAgICBhdXRvU2Nyb2xsZXJPcHRpb25zOiBwcm9wcy5hdXRvU2Nyb2xsZXJPcHRpb25zXG4gIH0sIHByb3BzLmNoaWxkcmVuKSk7XG59XG5cbmNvbnN0IHpJbmRleE9wdGlvbnMgPSB7XG4gIGRyYWdnaW5nOiA1MDAwLFxuICBkcm9wQW5pbWF0aW5nOiA0NTAwXG59O1xuY29uc3QgZ2V0RHJhZ2dpbmdUcmFuc2l0aW9uID0gKHNob3VsZEFuaW1hdGVEcmFnTW92ZW1lbnQsIGRyb3BwaW5nKSA9PiB7XG4gIGlmIChkcm9wcGluZykge1xuICAgIHJldHVybiB0cmFuc2l0aW9ucy5kcm9wKGRyb3BwaW5nLmR1cmF0aW9uKTtcbiAgfVxuICBpZiAoc2hvdWxkQW5pbWF0ZURyYWdNb3ZlbWVudCkge1xuICAgIHJldHVybiB0cmFuc2l0aW9ucy5zbmFwO1xuICB9XG4gIHJldHVybiB0cmFuc2l0aW9ucy5mbHVpZDtcbn07XG5jb25zdCBnZXREcmFnZ2luZ09wYWNpdHkgPSAoaXNDb21iaW5pbmcsIGlzRHJvcEFuaW1hdGluZykgPT4ge1xuICBpZiAoIWlzQ29tYmluaW5nKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gaXNEcm9wQW5pbWF0aW5nID8gY29tYmluZS5vcGFjaXR5LmRyb3AgOiBjb21iaW5lLm9wYWNpdHkuY29tYmluaW5nO1xufTtcbmNvbnN0IGdldFNob3VsZERyYWdnaW5nQW5pbWF0ZSA9IGRyYWdnaW5nID0+IHtcbiAgaWYgKGRyYWdnaW5nLmZvcmNlU2hvdWxkQW5pbWF0ZSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIGRyYWdnaW5nLmZvcmNlU2hvdWxkQW5pbWF0ZTtcbiAgfVxuICByZXR1cm4gZHJhZ2dpbmcubW9kZSA9PT0gJ1NOQVAnO1xufTtcbmZ1bmN0aW9uIGdldERyYWdnaW5nU3R5bGUoZHJhZ2dpbmcpIHtcbiAgY29uc3QgZGltZW5zaW9uID0gZHJhZ2dpbmcuZGltZW5zaW9uO1xuICBjb25zdCBib3ggPSBkaW1lbnNpb24uY2xpZW50O1xuICBjb25zdCB7XG4gICAgb2Zmc2V0LFxuICAgIGNvbWJpbmVXaXRoLFxuICAgIGRyb3BwaW5nXG4gIH0gPSBkcmFnZ2luZztcbiAgY29uc3QgaXNDb21iaW5pbmcgPSBCb29sZWFuKGNvbWJpbmVXaXRoKTtcbiAgY29uc3Qgc2hvdWxkQW5pbWF0ZSA9IGdldFNob3VsZERyYWdnaW5nQW5pbWF0ZShkcmFnZ2luZyk7XG4gIGNvbnN0IGlzRHJvcEFuaW1hdGluZyA9IEJvb2xlYW4oZHJvcHBpbmcpO1xuICBjb25zdCB0cmFuc2Zvcm0gPSBpc0Ryb3BBbmltYXRpbmcgPyB0cmFuc2Zvcm1zLmRyb3Aob2Zmc2V0LCBpc0NvbWJpbmluZykgOiB0cmFuc2Zvcm1zLm1vdmVUbyhvZmZzZXQpO1xuICBjb25zdCBzdHlsZSA9IHtcbiAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICB0b3A6IGJveC5tYXJnaW5Cb3gudG9wLFxuICAgIGxlZnQ6IGJveC5tYXJnaW5Cb3gubGVmdCxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICB3aWR0aDogYm94LmJvcmRlckJveC53aWR0aCxcbiAgICBoZWlnaHQ6IGJveC5ib3JkZXJCb3guaGVpZ2h0LFxuICAgIHRyYW5zaXRpb246IGdldERyYWdnaW5nVHJhbnNpdGlvbihzaG91bGRBbmltYXRlLCBkcm9wcGluZyksXG4gICAgdHJhbnNmb3JtLFxuICAgIG9wYWNpdHk6IGdldERyYWdnaW5nT3BhY2l0eShpc0NvbWJpbmluZywgaXNEcm9wQW5pbWF0aW5nKSxcbiAgICB6SW5kZXg6IGlzRHJvcEFuaW1hdGluZyA/IHpJbmRleE9wdGlvbnMuZHJvcEFuaW1hdGluZyA6IHpJbmRleE9wdGlvbnMuZHJhZ2dpbmcsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnXG4gIH07XG4gIHJldHVybiBzdHlsZTtcbn1cbmZ1bmN0aW9uIGdldFNlY29uZGFyeVN0eWxlKHNlY29uZGFyeSkge1xuICByZXR1cm4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNmb3Jtcy5tb3ZlVG8oc2Vjb25kYXJ5Lm9mZnNldCksXG4gICAgdHJhbnNpdGlvbjogc2Vjb25kYXJ5LnNob3VsZEFuaW1hdGVEaXNwbGFjZW1lbnQgPyB1bmRlZmluZWQgOiAnbm9uZSdcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFN0eWxlJDEobWFwcGVkKSB7XG4gIHJldHVybiBtYXBwZWQudHlwZSA9PT0gJ0RSQUdHSU5HJyA/IGdldERyYWdnaW5nU3R5bGUobWFwcGVkKSA6IGdldFNlY29uZGFyeVN0eWxlKG1hcHBlZCk7XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbiQxKGRlc2NyaXB0b3IsIGVsLCB3aW5kb3dTY3JvbGwgPSBvcmlnaW4pIHtcbiAgY29uc3QgY29tcHV0ZWRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gIGNvbnN0IGJvcmRlckJveCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBjbGllbnQgPSBjYWxjdWxhdGVCb3goYm9yZGVyQm94LCBjb21wdXRlZFN0eWxlcyk7XG4gIGNvbnN0IHBhZ2UgPSB3aXRoU2Nyb2xsKGNsaWVudCwgd2luZG93U2Nyb2xsKTtcbiAgY29uc3QgcGxhY2Vob2xkZXIgPSB7XG4gICAgY2xpZW50LFxuICAgIHRhZ05hbWU6IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKSxcbiAgICBkaXNwbGF5OiBjb21wdXRlZFN0eWxlcy5kaXNwbGF5XG4gIH07XG4gIGNvbnN0IGRpc3BsYWNlQnkgPSB7XG4gICAgeDogY2xpZW50Lm1hcmdpbkJveC53aWR0aCxcbiAgICB5OiBjbGllbnQubWFyZ2luQm94LmhlaWdodFxuICB9O1xuICBjb25zdCBkaW1lbnNpb24gPSB7XG4gICAgZGVzY3JpcHRvcixcbiAgICBwbGFjZWhvbGRlcixcbiAgICBkaXNwbGFjZUJ5LFxuICAgIGNsaWVudCxcbiAgICBwYWdlXG4gIH07XG4gIHJldHVybiBkaW1lbnNpb247XG59XG5cbmZ1bmN0aW9uIHVzZURyYWdnYWJsZVB1Ymxpc2hlcihhcmdzKSB7XG4gIGNvbnN0IHVuaXF1ZUlkID0gdXNlVW5pcXVlSWQkMSgnZHJhZ2dhYmxlJyk7XG4gIGNvbnN0IHtcbiAgICBkZXNjcmlwdG9yLFxuICAgIHJlZ2lzdHJ5LFxuICAgIGdldERyYWdnYWJsZVJlZixcbiAgICBjYW5EcmFnSW50ZXJhY3RpdmVFbGVtZW50cyxcbiAgICBzaG91bGRSZXNwZWN0Rm9yY2VQcmVzcyxcbiAgICBpc0VuYWJsZWRcbiAgfSA9IGFyZ3M7XG4gIGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgY2FuRHJhZ0ludGVyYWN0aXZlRWxlbWVudHMsXG4gICAgc2hvdWxkUmVzcGVjdEZvcmNlUHJlc3MsXG4gICAgaXNFbmFibGVkXG4gIH0pLCBbY2FuRHJhZ0ludGVyYWN0aXZlRWxlbWVudHMsIGlzRW5hYmxlZCwgc2hvdWxkUmVzcGVjdEZvcmNlUHJlc3NdKTtcbiAgY29uc3QgZ2V0RGltZW5zaW9uID0gdXNlQ2FsbGJhY2sod2luZG93U2Nyb2xsID0+IHtcbiAgICBjb25zdCBlbCA9IGdldERyYWdnYWJsZVJlZigpO1xuICAgICFlbCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBnZXQgZGltZW5zaW9uIHdoZW4gbm8gcmVmIGlzIHNldCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICByZXR1cm4gZ2V0RGltZW5zaW9uJDEoZGVzY3JpcHRvciwgZWwsIHdpbmRvd1Njcm9sbCk7XG4gIH0sIFtkZXNjcmlwdG9yLCBnZXREcmFnZ2FibGVSZWZdKTtcbiAgY29uc3QgZW50cnkgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgdW5pcXVlSWQsXG4gICAgZGVzY3JpcHRvcixcbiAgICBvcHRpb25zLFxuICAgIGdldERpbWVuc2lvblxuICB9KSwgW2Rlc2NyaXB0b3IsIGdldERpbWVuc2lvbiwgb3B0aW9ucywgdW5pcXVlSWRdKTtcbiAgY29uc3QgcHVibGlzaGVkUmVmID0gdXNlUmVmKGVudHJ5KTtcbiAgY29uc3QgaXNGaXJzdFB1Ymxpc2hSZWYgPSB1c2VSZWYodHJ1ZSk7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgcmVnaXN0cnkuZHJhZ2dhYmxlLnJlZ2lzdGVyKHB1Ymxpc2hlZFJlZi5jdXJyZW50KTtcbiAgICByZXR1cm4gKCkgPT4gcmVnaXN0cnkuZHJhZ2dhYmxlLnVucmVnaXN0ZXIocHVibGlzaGVkUmVmLmN1cnJlbnQpO1xuICB9LCBbcmVnaXN0cnkuZHJhZ2dhYmxlXSk7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzRmlyc3RQdWJsaXNoUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzRmlyc3RQdWJsaXNoUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbGFzdCA9IHB1Ymxpc2hlZFJlZi5jdXJyZW50O1xuICAgIHB1Ymxpc2hlZFJlZi5jdXJyZW50ID0gZW50cnk7XG4gICAgcmVnaXN0cnkuZHJhZ2dhYmxlLnVwZGF0ZShlbnRyeSwgbGFzdCk7XG4gIH0sIFtlbnRyeSwgcmVnaXN0cnkuZHJhZ2dhYmxlXSk7XG59XG5cbnZhciBEcm9wcGFibGVDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcblxuZnVuY3Rpb24gY2hlY2tJc1ZhbGlkSW5uZXJSZWYoZWwpIHtcbiAgIShlbCAmJiBpc0h0bWxFbGVtZW50KGVsKSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGBcbiAgICBwcm92aWRlZC5pbm5lclJlZiBoYXMgbm90IGJlZW4gcHJvdmlkZWQgd2l0aCBhIEhUTUxFbGVtZW50LlxuXG4gICAgWW91IGNhbiBmaW5kIGEgZ3VpZGUgb24gdXNpbmcgdGhlIGlubmVyUmVmIGNhbGxiYWNrIGZ1bmN0aW9ucyBhdDpcbiAgICBodHRwczovL2dpdGh1Yi5jb20vaGVsbG8tcGFuZ2VhL2RuZC9ibG9iL21haW4vZG9jcy9ndWlkZXMvdXNpbmctaW5uZXItcmVmLm1kXG4gIGApIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbn1cblxuZnVuY3Rpb24gdXNlVmFsaWRhdGlvbiQxKHByb3BzLCBjb250ZXh0SWQsIGdldFJlZikge1xuICB1c2VEZXZTZXR1cFdhcm5pbmcoKCkgPT4ge1xuICAgIGZ1bmN0aW9uIHByZWZpeChpZCkge1xuICAgICAgcmV0dXJuIGBEcmFnZ2FibGVbaWQ6ICR7aWR9XTogYDtcbiAgICB9XG4gICAgY29uc3QgaWQgPSBwcm9wcy5kcmFnZ2FibGVJZDtcbiAgICAhaWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdEcmFnZ2FibGUgcmVxdWlyZXMgYSBkcmFnZ2FibGVJZCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICAhKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgRHJhZ2dhYmxlIHJlcXVpcmVzIGEgW3N0cmluZ10gZHJhZ2dhYmxlSWQuXG4gICAgICBQcm92aWRlZDogW3R5cGU6ICR7dHlwZW9mIGlkfV0gKHZhbHVlOiAke2lkfSlgKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgIU51bWJlci5pc0ludGVnZXIocHJvcHMuaW5kZXgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCBgJHtwcmVmaXgoaWQpfSByZXF1aXJlcyBhbiBpbnRlZ2VyIGluZGV4IHByb3BgKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgaWYgKHByb3BzLm1hcHBlZC50eXBlID09PSAnRFJBR0dJTkcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNoZWNrSXNWYWxpZElubmVyUmVmKGdldFJlZigpKTtcbiAgICBpZiAocHJvcHMuaXNFbmFibGVkKSB7XG4gICAgICAhZmluZERyYWdIYW5kbGUoY29udGV4dElkLCBpZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsIGAke3ByZWZpeChpZCl9IFVuYWJsZSB0byBmaW5kIGRyYWcgaGFuZGxlYCkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiB1c2VDbG9uZVByb3BWYWxpZGF0aW9uKGlzQ2xvbmUpIHtcbiAgdXNlRGV2KCgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsUmVmID0gdXNlUmVmKGlzQ2xvbmUpO1xuICAgIHVzZURldlNldHVwV2FybmluZygoKSA9PiB7XG4gICAgICAhKGlzQ2xvbmUgPT09IGluaXRpYWxSZWYuY3VycmVudCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdEcmFnZ2FibGUgaXNDbG9uZSBwcm9wIHZhbHVlIGNoYW5nZWQgZHVyaW5nIGNvbXBvbmVudCBsaWZlJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIH0sIFtpc0Nsb25lXSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VSZXF1aXJlZENvbnRleHQoQ29udGV4dCkge1xuICBjb25zdCByZXN1bHQgPSB1c2VDb250ZXh0KENvbnRleHQpO1xuICAhcmVzdWx0ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ291bGQgbm90IGZpbmQgcmVxdWlyZWQgY29udGV4dCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcHJldmVudEh0bWw1RG5kKGV2ZW50KSB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG59XG5jb25zdCBEcmFnZ2FibGUgPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3Qgc2V0UmVmID0gdXNlQ2FsbGJhY2soKGVsID0gbnVsbCkgPT4ge1xuICAgIHJlZi5jdXJyZW50ID0gZWw7XG4gIH0sIFtdKTtcbiAgY29uc3QgZ2V0UmVmID0gdXNlQ2FsbGJhY2soKCkgPT4gcmVmLmN1cnJlbnQsIFtdKTtcbiAgY29uc3Qge1xuICAgIGNvbnRleHRJZCxcbiAgICBkcmFnSGFuZGxlVXNhZ2VJbnN0cnVjdGlvbnNJZCxcbiAgICByZWdpc3RyeVxuICB9ID0gdXNlUmVxdWlyZWRDb250ZXh0KEFwcENvbnRleHQpO1xuICBjb25zdCB7XG4gICAgdHlwZSxcbiAgICBkcm9wcGFibGVJZFxuICB9ID0gdXNlUmVxdWlyZWRDb250ZXh0KERyb3BwYWJsZUNvbnRleHQpO1xuICBjb25zdCBkZXNjcmlwdG9yID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIGlkOiBwcm9wcy5kcmFnZ2FibGVJZCxcbiAgICBpbmRleDogcHJvcHMuaW5kZXgsXG4gICAgdHlwZSxcbiAgICBkcm9wcGFibGVJZFxuICB9KSwgW3Byb3BzLmRyYWdnYWJsZUlkLCBwcm9wcy5pbmRleCwgdHlwZSwgZHJvcHBhYmxlSWRdKTtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGRyYWdnYWJsZUlkLFxuICAgIGlzRW5hYmxlZCxcbiAgICBzaG91bGRSZXNwZWN0Rm9yY2VQcmVzcyxcbiAgICBjYW5EcmFnSW50ZXJhY3RpdmVFbGVtZW50cyxcbiAgICBpc0Nsb25lLFxuICAgIG1hcHBlZCxcbiAgICBkcm9wQW5pbWF0aW9uRmluaXNoZWQ6IGRyb3BBbmltYXRpb25GaW5pc2hlZEFjdGlvblxuICB9ID0gcHJvcHM7XG4gIHVzZVZhbGlkYXRpb24kMShwcm9wcywgY29udGV4dElkLCBnZXRSZWYpO1xuICB1c2VDbG9uZVByb3BWYWxpZGF0aW9uKGlzQ2xvbmUpO1xuICBpZiAoIWlzQ2xvbmUpIHtcbiAgICBjb25zdCBmb3JQdWJsaXNoZXIgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICBkZXNjcmlwdG9yLFxuICAgICAgcmVnaXN0cnksXG4gICAgICBnZXREcmFnZ2FibGVSZWY6IGdldFJlZixcbiAgICAgIGNhbkRyYWdJbnRlcmFjdGl2ZUVsZW1lbnRzLFxuICAgICAgc2hvdWxkUmVzcGVjdEZvcmNlUHJlc3MsXG4gICAgICBpc0VuYWJsZWRcbiAgICB9KSwgW2Rlc2NyaXB0b3IsIHJlZ2lzdHJ5LCBnZXRSZWYsIGNhbkRyYWdJbnRlcmFjdGl2ZUVsZW1lbnRzLCBzaG91bGRSZXNwZWN0Rm9yY2VQcmVzcywgaXNFbmFibGVkXSk7XG4gICAgdXNlRHJhZ2dhYmxlUHVibGlzaGVyKGZvclB1Ymxpc2hlcik7XG4gIH1cbiAgY29uc3QgZHJhZ0hhbmRsZVByb3BzID0gdXNlTWVtbygoKSA9PiBpc0VuYWJsZWQgPyB7XG4gICAgdGFiSW5kZXg6IDAsXG4gICAgcm9sZTogJ2J1dHRvbicsXG4gICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBkcmFnSGFuZGxlVXNhZ2VJbnN0cnVjdGlvbnNJZCxcbiAgICAnZGF0YS1yZmQtZHJhZy1oYW5kbGUtZHJhZ2dhYmxlLWlkJzogZHJhZ2dhYmxlSWQsXG4gICAgJ2RhdGEtcmZkLWRyYWctaGFuZGxlLWNvbnRleHQtaWQnOiBjb250ZXh0SWQsXG4gICAgZHJhZ2dhYmxlOiBmYWxzZSxcbiAgICBvbkRyYWdTdGFydDogcHJldmVudEh0bWw1RG5kXG4gIH0gOiBudWxsLCBbY29udGV4dElkLCBkcmFnSGFuZGxlVXNhZ2VJbnN0cnVjdGlvbnNJZCwgZHJhZ2dhYmxlSWQsIGlzRW5hYmxlZF0pO1xuICBjb25zdCBvbk1vdmVFbmQgPSB1c2VDYWxsYmFjayhldmVudCA9PiB7XG4gICAgaWYgKG1hcHBlZC50eXBlICE9PSAnRFJBR0dJTkcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghbWFwcGVkLmRyb3BwaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudC5wcm9wZXJ0eU5hbWUgIT09ICd0cmFuc2Zvcm0nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChSZWFjdC52ZXJzaW9uLnN0YXJ0c1dpdGgoJzE2JykgfHwgUmVhY3QudmVyc2lvbi5zdGFydHNXaXRoKCcxNycpKSB7XG4gICAgICBkcm9wQW5pbWF0aW9uRmluaXNoZWRBY3Rpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmx1c2hTeW5jKGRyb3BBbmltYXRpb25GaW5pc2hlZEFjdGlvbik7XG4gICAgfVxuICB9LCBbZHJvcEFuaW1hdGlvbkZpbmlzaGVkQWN0aW9uLCBtYXBwZWRdKTtcbiAgY29uc3QgcHJvdmlkZWQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBzdHlsZSA9IGdldFN0eWxlJDEobWFwcGVkKTtcbiAgICBjb25zdCBvblRyYW5zaXRpb25FbmQgPSBtYXBwZWQudHlwZSA9PT0gJ0RSQUdHSU5HJyAmJiBtYXBwZWQuZHJvcHBpbmcgPyBvbk1vdmVFbmQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgaW5uZXJSZWY6IHNldFJlZixcbiAgICAgIGRyYWdnYWJsZVByb3BzOiB7XG4gICAgICAgICdkYXRhLXJmZC1kcmFnZ2FibGUtY29udGV4dC1pZCc6IGNvbnRleHRJZCxcbiAgICAgICAgJ2RhdGEtcmZkLWRyYWdnYWJsZS1pZCc6IGRyYWdnYWJsZUlkLFxuICAgICAgICBzdHlsZSxcbiAgICAgICAgb25UcmFuc2l0aW9uRW5kXG4gICAgICB9LFxuICAgICAgZHJhZ0hhbmRsZVByb3BzXG4gICAgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCBbY29udGV4dElkLCBkcmFnSGFuZGxlUHJvcHMsIGRyYWdnYWJsZUlkLCBtYXBwZWQsIG9uTW92ZUVuZCwgc2V0UmVmXSk7XG4gIGNvbnN0IHJ1YnJpYyA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBkcmFnZ2FibGVJZDogZGVzY3JpcHRvci5pZCxcbiAgICB0eXBlOiBkZXNjcmlwdG9yLnR5cGUsXG4gICAgc291cmNlOiB7XG4gICAgICBpbmRleDogZGVzY3JpcHRvci5pbmRleCxcbiAgICAgIGRyb3BwYWJsZUlkOiBkZXNjcmlwdG9yLmRyb3BwYWJsZUlkXG4gICAgfVxuICB9KSwgW2Rlc2NyaXB0b3IuZHJvcHBhYmxlSWQsIGRlc2NyaXB0b3IuaWQsIGRlc2NyaXB0b3IuaW5kZXgsIGRlc2NyaXB0b3IudHlwZV0pO1xuICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgY2hpbGRyZW4ocHJvdmlkZWQsIG1hcHBlZC5zbmFwc2hvdCwgcnVicmljKSk7XG59O1xudmFyIERyYWdnYWJsZSQxID0gRHJhZ2dhYmxlO1xuXG52YXIgaXNTdHJpY3RFcXVhbCA9ICgoYSwgYikgPT4gYSA9PT0gYik7XG5cbnZhciB3aGF0SXNEcmFnZ2VkT3ZlckZyb21SZXN1bHQgPSAocmVzdWx0ID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbWJpbmUsXG4gICAgZGVzdGluYXRpb25cbiAgfSA9IHJlc3VsdDtcbiAgaWYgKGRlc3RpbmF0aW9uKSB7XG4gICAgcmV0dXJuIGRlc3RpbmF0aW9uLmRyb3BwYWJsZUlkO1xuICB9XG4gIGlmIChjb21iaW5lKSB7XG4gICAgcmV0dXJuIGNvbWJpbmUuZHJvcHBhYmxlSWQ7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59KTtcblxuY29uc3QgZ2V0Q29tYmluZVdpdGhGcm9tUmVzdWx0ID0gcmVzdWx0ID0+IHtcbiAgcmV0dXJuIHJlc3VsdC5jb21iaW5lID8gcmVzdWx0LmNvbWJpbmUuZHJhZ2dhYmxlSWQgOiBudWxsO1xufTtcbmNvbnN0IGdldENvbWJpbmVXaXRoRnJvbUltcGFjdCA9IGltcGFjdCA9PiB7XG4gIHJldHVybiBpbXBhY3QuYXQgJiYgaW1wYWN0LmF0LnR5cGUgPT09ICdDT01CSU5FJyA/IGltcGFjdC5hdC5jb21iaW5lLmRyYWdnYWJsZUlkIDogbnVsbDtcbn07XG5mdW5jdGlvbiBnZXREcmFnZ2FibGVTZWxlY3RvcigpIHtcbiAgY29uc3QgbWVtb2l6ZWRPZmZzZXQgPSBtZW1vaXplT25lKCh4LCB5KSA9PiAoe1xuICAgIHgsXG4gICAgeVxuICB9KSk7XG4gIGNvbnN0IGdldE1lbW9pemVkU25hcHNob3QgPSBtZW1vaXplT25lKChtb2RlLCBpc0Nsb25lLCBkcmFnZ2luZ092ZXIgPSBudWxsLCBjb21iaW5lV2l0aCA9IG51bGwsIGRyb3BwaW5nID0gbnVsbCkgPT4gKHtcbiAgICBpc0RyYWdnaW5nOiB0cnVlLFxuICAgIGlzQ2xvbmUsXG4gICAgaXNEcm9wQW5pbWF0aW5nOiBCb29sZWFuKGRyb3BwaW5nKSxcbiAgICBkcm9wQW5pbWF0aW9uOiBkcm9wcGluZyxcbiAgICBtb2RlLFxuICAgIGRyYWdnaW5nT3ZlcixcbiAgICBjb21iaW5lV2l0aCxcbiAgICBjb21iaW5lVGFyZ2V0Rm9yOiBudWxsXG4gIH0pKTtcbiAgY29uc3QgZ2V0TWVtb2l6ZWRQcm9wcyA9IG1lbW9pemVPbmUoKG9mZnNldCwgbW9kZSwgZGltZW5zaW9uLCBpc0Nsb25lLCBkcmFnZ2luZ092ZXIgPSBudWxsLCBjb21iaW5lV2l0aCA9IG51bGwsIGZvcmNlU2hvdWxkQW5pbWF0ZSA9IG51bGwpID0+ICh7XG4gICAgbWFwcGVkOiB7XG4gICAgICB0eXBlOiAnRFJBR0dJTkcnLFxuICAgICAgZHJvcHBpbmc6IG51bGwsXG4gICAgICBkcmFnZ2luZ092ZXIsXG4gICAgICBjb21iaW5lV2l0aCxcbiAgICAgIG1vZGUsXG4gICAgICBvZmZzZXQsXG4gICAgICBkaW1lbnNpb24sXG4gICAgICBmb3JjZVNob3VsZEFuaW1hdGUsXG4gICAgICBzbmFwc2hvdDogZ2V0TWVtb2l6ZWRTbmFwc2hvdChtb2RlLCBpc0Nsb25lLCBkcmFnZ2luZ092ZXIsIGNvbWJpbmVXaXRoLCBudWxsKVxuICAgIH1cbiAgfSkpO1xuICBjb25zdCBzZWxlY3RvciA9IChzdGF0ZSwgb3duUHJvcHMpID0+IHtcbiAgICBpZiAoaXNEcmFnZ2luZyhzdGF0ZSkpIHtcbiAgICAgIGlmIChzdGF0ZS5jcml0aWNhbC5kcmFnZ2FibGUuaWQgIT09IG93blByb3BzLmRyYWdnYWJsZUlkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2Zmc2V0ID0gc3RhdGUuY3VycmVudC5jbGllbnQub2Zmc2V0O1xuICAgICAgY29uc3QgZGltZW5zaW9uID0gc3RhdGUuZGltZW5zaW9ucy5kcmFnZ2FibGVzW293blByb3BzLmRyYWdnYWJsZUlkXTtcbiAgICAgIGNvbnN0IGRyYWdnaW5nT3ZlciA9IHdoYXRJc0RyYWdnZWRPdmVyKHN0YXRlLmltcGFjdCk7XG4gICAgICBjb25zdCBjb21iaW5lV2l0aCA9IGdldENvbWJpbmVXaXRoRnJvbUltcGFjdChzdGF0ZS5pbXBhY3QpO1xuICAgICAgY29uc3QgZm9yY2VTaG91bGRBbmltYXRlID0gc3RhdGUuZm9yY2VTaG91bGRBbmltYXRlO1xuICAgICAgcmV0dXJuIGdldE1lbW9pemVkUHJvcHMobWVtb2l6ZWRPZmZzZXQob2Zmc2V0LngsIG9mZnNldC55KSwgc3RhdGUubW92ZW1lbnRNb2RlLCBkaW1lbnNpb24sIG93blByb3BzLmlzQ2xvbmUsIGRyYWdnaW5nT3ZlciwgY29tYmluZVdpdGgsIGZvcmNlU2hvdWxkQW5pbWF0ZSk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5waGFzZSA9PT0gJ0RST1BfQU5JTUFUSU5HJykge1xuICAgICAgY29uc3QgY29tcGxldGVkID0gc3RhdGUuY29tcGxldGVkO1xuICAgICAgaWYgKGNvbXBsZXRlZC5yZXN1bHQuZHJhZ2dhYmxlSWQgIT09IG93blByb3BzLmRyYWdnYWJsZUlkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNDbG9uZSA9IG93blByb3BzLmlzQ2xvbmU7XG4gICAgICBjb25zdCBkaW1lbnNpb24gPSBzdGF0ZS5kaW1lbnNpb25zLmRyYWdnYWJsZXNbb3duUHJvcHMuZHJhZ2dhYmxlSWRdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gY29tcGxldGVkLnJlc3VsdDtcbiAgICAgIGNvbnN0IG1vZGUgPSByZXN1bHQubW9kZTtcbiAgICAgIGNvbnN0IGRyYWdnaW5nT3ZlciA9IHdoYXRJc0RyYWdnZWRPdmVyRnJvbVJlc3VsdChyZXN1bHQpO1xuICAgICAgY29uc3QgY29tYmluZVdpdGggPSBnZXRDb21iaW5lV2l0aEZyb21SZXN1bHQocmVzdWx0KTtcbiAgICAgIGNvbnN0IGR1cmF0aW9uID0gc3RhdGUuZHJvcER1cmF0aW9uO1xuICAgICAgY29uc3QgZHJvcHBpbmcgPSB7XG4gICAgICAgIGR1cmF0aW9uLFxuICAgICAgICBjdXJ2ZTogY3VydmVzLmRyb3AsXG4gICAgICAgIG1vdmVUbzogc3RhdGUubmV3SG9tZUNsaWVudE9mZnNldCxcbiAgICAgICAgb3BhY2l0eTogY29tYmluZVdpdGggPyBjb21iaW5lLm9wYWNpdHkuZHJvcCA6IG51bGwsXG4gICAgICAgIHNjYWxlOiBjb21iaW5lV2l0aCA/IGNvbWJpbmUuc2NhbGUuZHJvcCA6IG51bGxcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXBwZWQ6IHtcbiAgICAgICAgICB0eXBlOiAnRFJBR0dJTkcnLFxuICAgICAgICAgIG9mZnNldDogc3RhdGUubmV3SG9tZUNsaWVudE9mZnNldCxcbiAgICAgICAgICBkaW1lbnNpb24sXG4gICAgICAgICAgZHJvcHBpbmcsXG4gICAgICAgICAgZHJhZ2dpbmdPdmVyLFxuICAgICAgICAgIGNvbWJpbmVXaXRoLFxuICAgICAgICAgIG1vZGUsXG4gICAgICAgICAgZm9yY2VTaG91bGRBbmltYXRlOiBudWxsLFxuICAgICAgICAgIHNuYXBzaG90OiBnZXRNZW1vaXplZFNuYXBzaG90KG1vZGUsIGlzQ2xvbmUsIGRyYWdnaW5nT3ZlciwgY29tYmluZVdpdGgsIGRyb3BwaW5nKVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbiAgcmV0dXJuIHNlbGVjdG9yO1xufVxuZnVuY3Rpb24gZ2V0U2Vjb25kYXJ5U25hcHNob3QoY29tYmluZVRhcmdldEZvciA9IG51bGwpIHtcbiAgcmV0dXJuIHtcbiAgICBpc0RyYWdnaW5nOiBmYWxzZSxcbiAgICBpc0Ryb3BBbmltYXRpbmc6IGZhbHNlLFxuICAgIGlzQ2xvbmU6IGZhbHNlLFxuICAgIGRyb3BBbmltYXRpb246IG51bGwsXG4gICAgbW9kZTogbnVsbCxcbiAgICBkcmFnZ2luZ092ZXI6IG51bGwsXG4gICAgY29tYmluZVRhcmdldEZvcixcbiAgICBjb21iaW5lV2l0aDogbnVsbFxuICB9O1xufVxuY29uc3QgYXRSZXN0ID0ge1xuICBtYXBwZWQ6IHtcbiAgICB0eXBlOiAnU0VDT05EQVJZJyxcbiAgICBvZmZzZXQ6IG9yaWdpbixcbiAgICBjb21iaW5lVGFyZ2V0Rm9yOiBudWxsLFxuICAgIHNob3VsZEFuaW1hdGVEaXNwbGFjZW1lbnQ6IHRydWUsXG4gICAgc25hcHNob3Q6IGdldFNlY29uZGFyeVNuYXBzaG90KG51bGwpXG4gIH1cbn07XG5mdW5jdGlvbiBnZXRTZWNvbmRhcnlTZWxlY3RvcigpIHtcbiAgY29uc3QgbWVtb2l6ZWRPZmZzZXQgPSBtZW1vaXplT25lKCh4LCB5KSA9PiAoe1xuICAgIHgsXG4gICAgeVxuICB9KSk7XG4gIGNvbnN0IGdldE1lbW9pemVkU25hcHNob3QgPSBtZW1vaXplT25lKGdldFNlY29uZGFyeVNuYXBzaG90KTtcbiAgY29uc3QgZ2V0TWVtb2l6ZWRQcm9wcyA9IG1lbW9pemVPbmUoKG9mZnNldCwgY29tYmluZVRhcmdldEZvciA9IG51bGwsIHNob3VsZEFuaW1hdGVEaXNwbGFjZW1lbnQpID0+ICh7XG4gICAgbWFwcGVkOiB7XG4gICAgICB0eXBlOiAnU0VDT05EQVJZJyxcbiAgICAgIG9mZnNldCxcbiAgICAgIGNvbWJpbmVUYXJnZXRGb3IsXG4gICAgICBzaG91bGRBbmltYXRlRGlzcGxhY2VtZW50LFxuICAgICAgc25hcHNob3Q6IGdldE1lbW9pemVkU25hcHNob3QoY29tYmluZVRhcmdldEZvcilcbiAgICB9XG4gIH0pKTtcbiAgY29uc3QgZ2V0RmFsbGJhY2sgPSBjb21iaW5lVGFyZ2V0Rm9yID0+IHtcbiAgICByZXR1cm4gY29tYmluZVRhcmdldEZvciA/IGdldE1lbW9pemVkUHJvcHMob3JpZ2luLCBjb21iaW5lVGFyZ2V0Rm9yLCB0cnVlKSA6IG51bGw7XG4gIH07XG4gIGNvbnN0IGdldFByb3BzID0gKG93bklkLCBkcmFnZ2luZ0lkLCBpbXBhY3QsIGFmdGVyQ3JpdGljYWwpID0+IHtcbiAgICBjb25zdCB2aXN1YWxEaXNwbGFjZW1lbnQgPSBpbXBhY3QuZGlzcGxhY2VkLnZpc2libGVbb3duSWRdO1xuICAgIGNvbnN0IGlzQWZ0ZXJDcml0aWNhbEluVmlydHVhbExpc3QgPSBCb29sZWFuKGFmdGVyQ3JpdGljYWwuaW5WaXJ0dWFsTGlzdCAmJiBhZnRlckNyaXRpY2FsLmVmZmVjdGVkW293bklkXSk7XG4gICAgY29uc3QgY29tYmluZSA9IHRyeUdldENvbWJpbmUoaW1wYWN0KTtcbiAgICBjb25zdCBjb21iaW5lVGFyZ2V0Rm9yID0gY29tYmluZSAmJiBjb21iaW5lLmRyYWdnYWJsZUlkID09PSBvd25JZCA/IGRyYWdnaW5nSWQgOiBudWxsO1xuICAgIGlmICghdmlzdWFsRGlzcGxhY2VtZW50KSB7XG4gICAgICBpZiAoIWlzQWZ0ZXJDcml0aWNhbEluVmlydHVhbExpc3QpIHtcbiAgICAgICAgcmV0dXJuIGdldEZhbGxiYWNrKGNvbWJpbmVUYXJnZXRGb3IpO1xuICAgICAgfVxuICAgICAgaWYgKGltcGFjdC5kaXNwbGFjZWQuaW52aXNpYmxlW293bklkXSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNoYW5nZSA9IG5lZ2F0ZShhZnRlckNyaXRpY2FsLmRpc3BsYWNlZEJ5LnBvaW50KTtcbiAgICAgIGNvbnN0IG9mZnNldCA9IG1lbW9pemVkT2Zmc2V0KGNoYW5nZS54LCBjaGFuZ2UueSk7XG4gICAgICByZXR1cm4gZ2V0TWVtb2l6ZWRQcm9wcyhvZmZzZXQsIGNvbWJpbmVUYXJnZXRGb3IsIHRydWUpO1xuICAgIH1cbiAgICBpZiAoaXNBZnRlckNyaXRpY2FsSW5WaXJ0dWFsTGlzdCkge1xuICAgICAgcmV0dXJuIGdldEZhbGxiYWNrKGNvbWJpbmVUYXJnZXRGb3IpO1xuICAgIH1cbiAgICBjb25zdCBkaXNwbGFjZUJ5ID0gaW1wYWN0LmRpc3BsYWNlZEJ5LnBvaW50O1xuICAgIGNvbnN0IG9mZnNldCA9IG1lbW9pemVkT2Zmc2V0KGRpc3BsYWNlQnkueCwgZGlzcGxhY2VCeS55KTtcbiAgICByZXR1cm4gZ2V0TWVtb2l6ZWRQcm9wcyhvZmZzZXQsIGNvbWJpbmVUYXJnZXRGb3IsIHZpc3VhbERpc3BsYWNlbWVudC5zaG91bGRBbmltYXRlKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0b3IgPSAoc3RhdGUsIG93blByb3BzKSA9PiB7XG4gICAgaWYgKGlzRHJhZ2dpbmcoc3RhdGUpKSB7XG4gICAgICBpZiAoc3RhdGUuY3JpdGljYWwuZHJhZ2dhYmxlLmlkID09PSBvd25Qcm9wcy5kcmFnZ2FibGVJZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXRQcm9wcyhvd25Qcm9wcy5kcmFnZ2FibGVJZCwgc3RhdGUuY3JpdGljYWwuZHJhZ2dhYmxlLmlkLCBzdGF0ZS5pbXBhY3QsIHN0YXRlLmFmdGVyQ3JpdGljYWwpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdEUk9QX0FOSU1BVElORycpIHtcbiAgICAgIGNvbnN0IGNvbXBsZXRlZCA9IHN0YXRlLmNvbXBsZXRlZDtcbiAgICAgIGlmIChjb21wbGV0ZWQucmVzdWx0LmRyYWdnYWJsZUlkID09PSBvd25Qcm9wcy5kcmFnZ2FibGVJZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXRQcm9wcyhvd25Qcm9wcy5kcmFnZ2FibGVJZCwgY29tcGxldGVkLnJlc3VsdC5kcmFnZ2FibGVJZCwgY29tcGxldGVkLmltcGFjdCwgY29tcGxldGVkLmFmdGVyQ3JpdGljYWwpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbiAgcmV0dXJuIHNlbGVjdG9yO1xufVxuY29uc3QgbWFrZU1hcFN0YXRlVG9Qcm9wcyQxID0gKCkgPT4ge1xuICBjb25zdCBkcmFnZ2luZ1NlbGVjdG9yID0gZ2V0RHJhZ2dhYmxlU2VsZWN0b3IoKTtcbiAgY29uc3Qgc2Vjb25kYXJ5U2VsZWN0b3IgPSBnZXRTZWNvbmRhcnlTZWxlY3RvcigpO1xuICBjb25zdCBzZWxlY3RvciA9IChzdGF0ZSwgb3duUHJvcHMpID0+IGRyYWdnaW5nU2VsZWN0b3Ioc3RhdGUsIG93blByb3BzKSB8fCBzZWNvbmRhcnlTZWxlY3RvcihzdGF0ZSwgb3duUHJvcHMpIHx8IGF0UmVzdDtcbiAgcmV0dXJuIHNlbGVjdG9yO1xufTtcbmNvbnN0IG1hcERpc3BhdGNoVG9Qcm9wcyQxID0ge1xuICBkcm9wQW5pbWF0aW9uRmluaXNoZWQ6IGRyb3BBbmltYXRpb25GaW5pc2hlZFxufTtcbmNvbnN0IENvbm5lY3RlZERyYWdnYWJsZSA9IGNvbm5lY3QobWFrZU1hcFN0YXRlVG9Qcm9wcyQxLCBtYXBEaXNwYXRjaFRvUHJvcHMkMSwgbnVsbCwge1xuICBjb250ZXh0OiBTdG9yZUNvbnRleHQsXG4gIGFyZVN0YXRlUHJvcHNFcXVhbDogaXNTdHJpY3RFcXVhbFxufSkoRHJhZ2dhYmxlJDEpO1xudmFyIENvbm5lY3RlZERyYWdnYWJsZSQxID0gQ29ubmVjdGVkRHJhZ2dhYmxlO1xuXG5mdW5jdGlvbiBQcml2YXRlRHJhZ2dhYmxlKHByb3BzKSB7XG4gIGNvbnN0IGRyb3BwYWJsZUNvbnRleHQgPSB1c2VSZXF1aXJlZENvbnRleHQoRHJvcHBhYmxlQ29udGV4dCk7XG4gIGNvbnN0IGlzVXNpbmdDbG9uZUZvciA9IGRyb3BwYWJsZUNvbnRleHQuaXNVc2luZ0Nsb25lRm9yO1xuICBpZiAoaXNVc2luZ0Nsb25lRm9yID09PSBwcm9wcy5kcmFnZ2FibGVJZCAmJiAhcHJvcHMuaXNDbG9uZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KENvbm5lY3RlZERyYWdnYWJsZSQxLCBwcm9wcyk7XG59XG5mdW5jdGlvbiBQdWJsaWNEcmFnZ2FibGUocHJvcHMpIHtcbiAgY29uc3QgaXNFbmFibGVkID0gdHlwZW9mIHByb3BzLmlzRHJhZ0Rpc2FibGVkID09PSAnYm9vbGVhbicgPyAhcHJvcHMuaXNEcmFnRGlzYWJsZWQgOiB0cnVlO1xuICBjb25zdCBjYW5EcmFnSW50ZXJhY3RpdmVFbGVtZW50cyA9IEJvb2xlYW4ocHJvcHMuZGlzYWJsZUludGVyYWN0aXZlRWxlbWVudEJsb2NraW5nKTtcbiAgY29uc3Qgc2hvdWxkUmVzcGVjdEZvcmNlUHJlc3MgPSBCb29sZWFuKHByb3BzLnNob3VsZFJlc3BlY3RGb3JjZVByZXNzKTtcbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUHJpdmF0ZURyYWdnYWJsZSwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgaXNDbG9uZTogZmFsc2UsXG4gICAgaXNFbmFibGVkOiBpc0VuYWJsZWQsXG4gICAgY2FuRHJhZ0ludGVyYWN0aXZlRWxlbWVudHM6IGNhbkRyYWdJbnRlcmFjdGl2ZUVsZW1lbnRzLFxuICAgIHNob3VsZFJlc3BlY3RGb3JjZVByZXNzOiBzaG91bGRSZXNwZWN0Rm9yY2VQcmVzc1xuICB9KSk7XG59XG5cbmNvbnN0IGlzRXF1YWwgPSBiYXNlID0+IHZhbHVlID0+IGJhc2UgPT09IHZhbHVlO1xuY29uc3QgaXNTY3JvbGwgPSBpc0VxdWFsKCdzY3JvbGwnKTtcbmNvbnN0IGlzQXV0byA9IGlzRXF1YWwoJ2F1dG8nKTtcbmNvbnN0IGlzVmlzaWJsZSA9IGlzRXF1YWwoJ3Zpc2libGUnKTtcbmNvbnN0IGlzRWl0aGVyID0gKG92ZXJmbG93LCBmbikgPT4gZm4ob3ZlcmZsb3cub3ZlcmZsb3dYKSB8fCBmbihvdmVyZmxvdy5vdmVyZmxvd1kpO1xuY29uc3QgaXNCb3RoID0gKG92ZXJmbG93LCBmbikgPT4gZm4ob3ZlcmZsb3cub3ZlcmZsb3dYKSAmJiBmbihvdmVyZmxvdy5vdmVyZmxvd1kpO1xuY29uc3QgaXNFbGVtZW50U2Nyb2xsYWJsZSA9IGVsID0+IHtcbiAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gIGNvbnN0IG92ZXJmbG93ID0ge1xuICAgIG92ZXJmbG93WDogc3R5bGUub3ZlcmZsb3dYLFxuICAgIG92ZXJmbG93WTogc3R5bGUub3ZlcmZsb3dZXG4gIH07XG4gIHJldHVybiBpc0VpdGhlcihvdmVyZmxvdywgaXNTY3JvbGwpIHx8IGlzRWl0aGVyKG92ZXJmbG93LCBpc0F1dG8pO1xufTtcbmNvbnN0IGlzQm9keVNjcm9sbGFibGUgPSAoKSA9PiB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IGJvZHkgPSBnZXRCb2R5RWxlbWVudCgpO1xuICBjb25zdCBodG1sID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAhaHRtbCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSkgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBpZiAoIWlzRWxlbWVudFNjcm9sbGFibGUoYm9keSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgaHRtbFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoaHRtbCk7XG4gIGNvbnN0IGh0bWxPdmVyZmxvdyA9IHtcbiAgICBvdmVyZmxvd1g6IGh0bWxTdHlsZS5vdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZOiBodG1sU3R5bGUub3ZlcmZsb3dZXG4gIH07XG4gIGlmIChpc0JvdGgoaHRtbE92ZXJmbG93LCBpc1Zpc2libGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoYFxuICAgIFdlIGhhdmUgZGV0ZWN0ZWQgdGhhdCB5b3VyIDxib2R5PiBlbGVtZW50IG1pZ2h0IGJlIGEgc2Nyb2xsIGNvbnRhaW5lci5cbiAgICBXZSBoYXZlIGZvdW5kIG5vIHJlbGlhYmxlIHdheSBvZiBkZXRlY3Rpbmcgd2hldGhlciB0aGUgPGJvZHk+IGVsZW1lbnQgaXMgYSBzY3JvbGwgY29udGFpbmVyLlxuICAgIFVuZGVyIG1vc3QgY2lyY3Vtc3RhbmNlcyBhIDxib2R5PiBzY3JvbGwgYmFyIHdpbGwgYmUgb24gdGhlIDxodG1sPiBlbGVtZW50IChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpXG5cbiAgICBCZWNhdXNlIHdlIGNhbm5vdCBkZXRlcm1pbmUgaWYgdGhlIDxib2R5PiBpcyBhIHNjcm9sbCBjb250YWluZXIsIGFuZCBnZW5lcmFsbHkgaXQgaXMgbm90IG9uZSxcbiAgICB3ZSB3aWxsIGJlIHRyZWF0aW5nIHRoZSA8Ym9keT4gYXMgKm5vdCogYSBzY3JvbGwgY29udGFpbmVyXG5cbiAgICBNb3JlIGluZm9ybWF0aW9uOiBodHRwczovL2dpdGh1Yi5jb20vaGVsbG8tcGFuZ2VhL2RuZC9ibG9iL21haW4vZG9jcy9ndWlkZXMvaG93LXdlLWRldGVjdC1zY3JvbGwtY29udGFpbmVycy5tZFxuICBgKSA6IHZvaWQgMDtcbiAgcmV0dXJuIGZhbHNlO1xufTtcbmNvbnN0IGdldENsb3Nlc3RTY3JvbGxhYmxlID0gZWwgPT4ge1xuICBpZiAoZWwgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChlbCA9PT0gZG9jdW1lbnQuYm9keSkge1xuICAgIHJldHVybiBpc0JvZHlTY3JvbGxhYmxlKCkgPyBlbCA6IG51bGw7XG4gIH1cbiAgaWYgKGVsID09PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAoIWlzRWxlbWVudFNjcm9sbGFibGUoZWwpKSB7XG4gICAgcmV0dXJuIGdldENsb3Nlc3RTY3JvbGxhYmxlKGVsLnBhcmVudEVsZW1lbnQpO1xuICB9XG4gIHJldHVybiBlbDtcbn07XG52YXIgZ2V0Q2xvc2VzdFNjcm9sbGFibGUkMSA9IGdldENsb3Nlc3RTY3JvbGxhYmxlO1xuXG52YXIgY2hlY2tGb3JOZXN0ZWRTY3JvbGxDb250YWluZXJzID0gKHNjcm9sbGFibGUgPT4ge1xuICBpZiAoIXNjcm9sbGFibGUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgYW5vdGhlclNjcm9sbFBhcmVudCA9IGdldENsb3Nlc3RTY3JvbGxhYmxlJDEoc2Nyb2xsYWJsZS5wYXJlbnRFbGVtZW50KTtcbiAgaWYgKCFhbm90aGVyU2Nyb2xsUGFyZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoYFxuICAgIERyb3BwYWJsZTogdW5zdXBwb3J0ZWQgbmVzdGVkIHNjcm9sbCBjb250YWluZXIgZGV0ZWN0ZWQuXG4gICAgQSBEcm9wcGFibGUgY2FuIG9ubHkgaGF2ZSBvbmUgc2Nyb2xsIHBhcmVudCAod2hpY2ggY2FuIGJlIGl0c2VsZilcbiAgICBOZXN0ZWQgc2Nyb2xsIGNvbnRhaW5lcnMgYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLlxuXG4gICAgV2UgaG9wZSB0byBzdXBwb3J0IG5lc3RlZCBzY3JvbGwgY29udGFpbmVycyBzb29uOiBodHRwczovL2dpdGh1Yi5jb20vYXRsYXNzaWFuL3JlYWN0LWJlYXV0aWZ1bC1kbmQvaXNzdWVzLzEzMVxuICBgKSA6IHZvaWQgMDtcbn0pO1xuXG52YXIgZ2V0U2Nyb2xsID0gKGVsID0+ICh7XG4gIHg6IGVsLnNjcm9sbExlZnQsXG4gIHk6IGVsLnNjcm9sbFRvcFxufSkpO1xuXG5jb25zdCBnZXRJc0ZpeGVkID0gZWwgPT4ge1xuICBpZiAoIWVsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xuICBpZiAoc3R5bGUucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZ2V0SXNGaXhlZChlbC5wYXJlbnRFbGVtZW50KTtcbn07XG52YXIgZ2V0RW52ID0gKHN0YXJ0ID0+IHtcbiAgY29uc3QgY2xvc2VzdFNjcm9sbGFibGUgPSBnZXRDbG9zZXN0U2Nyb2xsYWJsZSQxKHN0YXJ0KTtcbiAgY29uc3QgaXNGaXhlZE9uUGFnZSA9IGdldElzRml4ZWQoc3RhcnQpO1xuICByZXR1cm4ge1xuICAgIGNsb3Nlc3RTY3JvbGxhYmxlLFxuICAgIGlzRml4ZWRPblBhZ2VcbiAgfTtcbn0pO1xuXG52YXIgZ2V0RHJvcHBhYmxlRGltZW5zaW9uID0gKCh7XG4gIGRlc2NyaXB0b3IsXG4gIGlzRW5hYmxlZCxcbiAgaXNDb21iaW5lRW5hYmxlZCxcbiAgaXNGaXhlZE9uUGFnZSxcbiAgZGlyZWN0aW9uLFxuICBjbGllbnQsXG4gIHBhZ2UsXG4gIGNsb3Nlc3Rcbn0pID0+IHtcbiAgY29uc3QgZnJhbWUgPSAoKCkgPT4ge1xuICAgIGlmICghY2xvc2VzdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHtcbiAgICAgIHNjcm9sbFNpemUsXG4gICAgICBjbGllbnQ6IGZyYW1lQ2xpZW50XG4gICAgfSA9IGNsb3Nlc3Q7XG4gICAgY29uc3QgbWF4U2Nyb2xsID0gZ2V0TWF4U2Nyb2xsKHtcbiAgICAgIHNjcm9sbEhlaWdodDogc2Nyb2xsU2l6ZS5zY3JvbGxIZWlnaHQsXG4gICAgICBzY3JvbGxXaWR0aDogc2Nyb2xsU2l6ZS5zY3JvbGxXaWR0aCxcbiAgICAgIGhlaWdodDogZnJhbWVDbGllbnQucGFkZGluZ0JveC5oZWlnaHQsXG4gICAgICB3aWR0aDogZnJhbWVDbGllbnQucGFkZGluZ0JveC53aWR0aFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBwYWdlTWFyZ2luQm94OiBjbG9zZXN0LnBhZ2UubWFyZ2luQm94LFxuICAgICAgZnJhbWVDbGllbnQsXG4gICAgICBzY3JvbGxTaXplLFxuICAgICAgc2hvdWxkQ2xpcFN1YmplY3Q6IGNsb3Nlc3Quc2hvdWxkQ2xpcFN1YmplY3QsXG4gICAgICBzY3JvbGw6IHtcbiAgICAgICAgaW5pdGlhbDogY2xvc2VzdC5zY3JvbGwsXG4gICAgICAgIGN1cnJlbnQ6IGNsb3Nlc3Quc2Nyb2xsLFxuICAgICAgICBtYXg6IG1heFNjcm9sbCxcbiAgICAgICAgZGlmZjoge1xuICAgICAgICAgIHZhbHVlOiBvcmlnaW4sXG4gICAgICAgICAgZGlzcGxhY2VtZW50OiBvcmlnaW5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0pKCk7XG4gIGNvbnN0IGF4aXMgPSBkaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgPyB2ZXJ0aWNhbCA6IGhvcml6b250YWw7XG4gIGNvbnN0IHN1YmplY3QgPSBnZXRTdWJqZWN0KHtcbiAgICBwYWdlLFxuICAgIHdpdGhQbGFjZWhvbGRlcjogbnVsbCxcbiAgICBheGlzLFxuICAgIGZyYW1lXG4gIH0pO1xuICBjb25zdCBkaW1lbnNpb24gPSB7XG4gICAgZGVzY3JpcHRvcixcbiAgICBpc0NvbWJpbmVFbmFibGVkLFxuICAgIGlzRml4ZWRPblBhZ2UsXG4gICAgYXhpcyxcbiAgICBpc0VuYWJsZWQsXG4gICAgY2xpZW50LFxuICAgIHBhZ2UsXG4gICAgZnJhbWUsXG4gICAgc3ViamVjdFxuICB9O1xuICByZXR1cm4gZGltZW5zaW9uO1xufSk7XG5cbmNvbnN0IGdldENsaWVudCA9ICh0YXJnZXRSZWYsIGNsb3Nlc3RTY3JvbGxhYmxlKSA9PiB7XG4gIGNvbnN0IGJhc2UgPSBnZXRCb3godGFyZ2V0UmVmKTtcbiAgaWYgKCFjbG9zZXN0U2Nyb2xsYWJsZSkge1xuICAgIHJldHVybiBiYXNlO1xuICB9XG4gIGlmICh0YXJnZXRSZWYgIT09IGNsb3Nlc3RTY3JvbGxhYmxlKSB7XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cbiAgY29uc3QgdG9wID0gYmFzZS5wYWRkaW5nQm94LnRvcCAtIGNsb3Nlc3RTY3JvbGxhYmxlLnNjcm9sbFRvcDtcbiAgY29uc3QgbGVmdCA9IGJhc2UucGFkZGluZ0JveC5sZWZ0IC0gY2xvc2VzdFNjcm9sbGFibGUuc2Nyb2xsTGVmdDtcbiAgY29uc3QgYm90dG9tID0gdG9wICsgY2xvc2VzdFNjcm9sbGFibGUuc2Nyb2xsSGVpZ2h0O1xuICBjb25zdCByaWdodCA9IGxlZnQgKyBjbG9zZXN0U2Nyb2xsYWJsZS5zY3JvbGxXaWR0aDtcbiAgY29uc3QgcGFkZGluZ0JveCA9IHtcbiAgICB0b3AsXG4gICAgcmlnaHQsXG4gICAgYm90dG9tLFxuICAgIGxlZnRcbiAgfTtcbiAgY29uc3QgYm9yZGVyQm94ID0gZXhwYW5kKHBhZGRpbmdCb3gsIGJhc2UuYm9yZGVyKTtcbiAgY29uc3QgY2xpZW50ID0gY3JlYXRlQm94KHtcbiAgICBib3JkZXJCb3gsXG4gICAgbWFyZ2luOiBiYXNlLm1hcmdpbixcbiAgICBib3JkZXI6IGJhc2UuYm9yZGVyLFxuICAgIHBhZGRpbmc6IGJhc2UucGFkZGluZ1xuICB9KTtcbiAgcmV0dXJuIGNsaWVudDtcbn07XG52YXIgZ2V0RGltZW5zaW9uID0gKCh7XG4gIHJlZixcbiAgZGVzY3JpcHRvcixcbiAgZW52LFxuICB3aW5kb3dTY3JvbGwsXG4gIGRpcmVjdGlvbixcbiAgaXNEcm9wRGlzYWJsZWQsXG4gIGlzQ29tYmluZUVuYWJsZWQsXG4gIHNob3VsZENsaXBTdWJqZWN0XG59KSA9PiB7XG4gIGNvbnN0IGNsb3Nlc3RTY3JvbGxhYmxlID0gZW52LmNsb3Nlc3RTY3JvbGxhYmxlO1xuICBjb25zdCBjbGllbnQgPSBnZXRDbGllbnQocmVmLCBjbG9zZXN0U2Nyb2xsYWJsZSk7XG4gIGNvbnN0IHBhZ2UgPSB3aXRoU2Nyb2xsKGNsaWVudCwgd2luZG93U2Nyb2xsKTtcbiAgY29uc3QgY2xvc2VzdCA9ICgoKSA9PiB7XG4gICAgaWYgKCFjbG9zZXN0U2Nyb2xsYWJsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGZyYW1lQ2xpZW50ID0gZ2V0Qm94KGNsb3Nlc3RTY3JvbGxhYmxlKTtcbiAgICBjb25zdCBzY3JvbGxTaXplID0ge1xuICAgICAgc2Nyb2xsSGVpZ2h0OiBjbG9zZXN0U2Nyb2xsYWJsZS5zY3JvbGxIZWlnaHQsXG4gICAgICBzY3JvbGxXaWR0aDogY2xvc2VzdFNjcm9sbGFibGUuc2Nyb2xsV2lkdGhcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICBjbGllbnQ6IGZyYW1lQ2xpZW50LFxuICAgICAgcGFnZTogd2l0aFNjcm9sbChmcmFtZUNsaWVudCwgd2luZG93U2Nyb2xsKSxcbiAgICAgIHNjcm9sbDogZ2V0U2Nyb2xsKGNsb3Nlc3RTY3JvbGxhYmxlKSxcbiAgICAgIHNjcm9sbFNpemUsXG4gICAgICBzaG91bGRDbGlwU3ViamVjdFxuICAgIH07XG4gIH0pKCk7XG4gIGNvbnN0IGRpbWVuc2lvbiA9IGdldERyb3BwYWJsZURpbWVuc2lvbih7XG4gICAgZGVzY3JpcHRvcixcbiAgICBpc0VuYWJsZWQ6ICFpc0Ryb3BEaXNhYmxlZCxcbiAgICBpc0NvbWJpbmVFbmFibGVkLFxuICAgIGlzRml4ZWRPblBhZ2U6IGVudi5pc0ZpeGVkT25QYWdlLFxuICAgIGRpcmVjdGlvbixcbiAgICBjbGllbnQsXG4gICAgcGFnZSxcbiAgICBjbG9zZXN0XG4gIH0pO1xuICByZXR1cm4gZGltZW5zaW9uO1xufSk7XG5cbmNvbnN0IGltbWVkaWF0ZSA9IHtcbiAgcGFzc2l2ZTogZmFsc2Vcbn07XG5jb25zdCBkZWxheWVkID0ge1xuICBwYXNzaXZlOiB0cnVlXG59O1xudmFyIGdldExpc3RlbmVyT3B0aW9ucyA9IChvcHRpb25zID0+IG9wdGlvbnMuc2hvdWxkUHVibGlzaEltbWVkaWF0ZWx5ID8gaW1tZWRpYXRlIDogZGVsYXllZCk7XG5cbmNvbnN0IGdldENsb3Nlc3RTY3JvbGxhYmxlRnJvbURyYWcgPSBkcmFnZ2luZyA9PiBkcmFnZ2luZyAmJiBkcmFnZ2luZy5lbnYuY2xvc2VzdFNjcm9sbGFibGUgfHwgbnVsbDtcbmZ1bmN0aW9uIHVzZURyb3BwYWJsZVB1Ymxpc2hlcihhcmdzKSB7XG4gIGNvbnN0IHdoaWxlRHJhZ2dpbmdSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGFwcENvbnRleHQgPSB1c2VSZXF1aXJlZENvbnRleHQoQXBwQ29udGV4dCk7XG4gIGNvbnN0IHVuaXF1ZUlkID0gdXNlVW5pcXVlSWQkMSgnZHJvcHBhYmxlJyk7XG4gIGNvbnN0IHtcbiAgICByZWdpc3RyeSxcbiAgICBtYXJzaGFsXG4gIH0gPSBhcHBDb250ZXh0O1xuICBjb25zdCBwcmV2aW91c1JlZiA9IHVzZVByZXZpb3VzKGFyZ3MpO1xuICBjb25zdCBkZXNjcmlwdG9yID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIGlkOiBhcmdzLmRyb3BwYWJsZUlkLFxuICAgIHR5cGU6IGFyZ3MudHlwZSxcbiAgICBtb2RlOiBhcmdzLm1vZGVcbiAgfSksIFthcmdzLmRyb3BwYWJsZUlkLCBhcmdzLm1vZGUsIGFyZ3MudHlwZV0pO1xuICBjb25zdCBwdWJsaXNoZWREZXNjcmlwdG9yUmVmID0gdXNlUmVmKGRlc2NyaXB0b3IpO1xuICBjb25zdCBtZW1vaXplZFVwZGF0ZVNjcm9sbCA9IHVzZU1lbW8oKCkgPT4gbWVtb2l6ZU9uZSgoeCwgeSkgPT4ge1xuICAgICF3aGlsZURyYWdnaW5nUmVmLmN1cnJlbnQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW4gb25seSB1cGRhdGUgc2Nyb2xsIHdoZW4gZHJhZ2dpbmcnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3Qgc2Nyb2xsID0ge1xuICAgICAgeCxcbiAgICAgIHlcbiAgICB9O1xuICAgIG1hcnNoYWwudXBkYXRlRHJvcHBhYmxlU2Nyb2xsKGRlc2NyaXB0b3IuaWQsIHNjcm9sbCk7XG4gIH0pLCBbZGVzY3JpcHRvci5pZCwgbWFyc2hhbF0pO1xuICBjb25zdCBnZXRDbG9zZXN0U2Nyb2xsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGRyYWdnaW5nID0gd2hpbGVEcmFnZ2luZ1JlZi5jdXJyZW50O1xuICAgIGlmICghZHJhZ2dpbmcgfHwgIWRyYWdnaW5nLmVudi5jbG9zZXN0U2Nyb2xsYWJsZSkge1xuICAgICAgcmV0dXJuIG9yaWdpbjtcbiAgICB9XG4gICAgcmV0dXJuIGdldFNjcm9sbChkcmFnZ2luZy5lbnYuY2xvc2VzdFNjcm9sbGFibGUpO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVwZGF0ZVNjcm9sbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzY3JvbGwgPSBnZXRDbG9zZXN0U2Nyb2xsKCk7XG4gICAgbWVtb2l6ZWRVcGRhdGVTY3JvbGwoc2Nyb2xsLngsIHNjcm9sbC55KTtcbiAgfSwgW2dldENsb3Nlc3RTY3JvbGwsIG1lbW9pemVkVXBkYXRlU2Nyb2xsXSk7XG4gIGNvbnN0IHNjaGVkdWxlU2Nyb2xsVXBkYXRlID0gdXNlTWVtbygoKSA9PiByYWZTY2hkKHVwZGF0ZVNjcm9sbCksIFt1cGRhdGVTY3JvbGxdKTtcbiAgY29uc3Qgb25DbG9zZXN0U2Nyb2xsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGRyYWdnaW5nID0gd2hpbGVEcmFnZ2luZ1JlZi5jdXJyZW50O1xuICAgIGNvbnN0IGNsb3Nlc3QgPSBnZXRDbG9zZXN0U2Nyb2xsYWJsZUZyb21EcmFnKGRyYWdnaW5nKTtcbiAgICAhKGRyYWdnaW5nICYmIGNsb3Nlc3QpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ291bGQgbm90IGZpbmQgc2Nyb2xsIG9wdGlvbnMgd2hpbGUgc2Nyb2xsaW5nJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBkcmFnZ2luZy5zY3JvbGxPcHRpb25zO1xuICAgIGlmIChvcHRpb25zLnNob3VsZFB1Ymxpc2hJbW1lZGlhdGVseSkge1xuICAgICAgdXBkYXRlU2Nyb2xsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNjaGVkdWxlU2Nyb2xsVXBkYXRlKCk7XG4gIH0sIFtzY2hlZHVsZVNjcm9sbFVwZGF0ZSwgdXBkYXRlU2Nyb2xsXSk7XG4gIGNvbnN0IGdldERpbWVuc2lvbkFuZFdhdGNoU2Nyb2xsID0gdXNlQ2FsbGJhY2soKHdpbmRvd1Njcm9sbCwgb3B0aW9ucykgPT4ge1xuICAgICEhd2hpbGVEcmFnZ2luZ1JlZi5jdXJyZW50ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnQ2Fubm90IGNvbGxlY3QgYSBkcm9wcGFibGUgd2hpbGUgYSBkcmFnIGlzIG9jY3VycmluZycpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgICBjb25zdCBwcmV2aW91cyA9IHByZXZpb3VzUmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgcmVmID0gcHJldmlvdXMuZ2V0RHJvcHBhYmxlUmVmKCk7XG4gICAgIXJlZiA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBjb2xsZWN0IHdpdGhvdXQgYSBkcm9wcGFibGUgcmVmJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIGNvbnN0IGVudiA9IGdldEVudihyZWYpO1xuICAgIGNvbnN0IGRyYWdnaW5nID0ge1xuICAgICAgcmVmLFxuICAgICAgZGVzY3JpcHRvcixcbiAgICAgIGVudixcbiAgICAgIHNjcm9sbE9wdGlvbnM6IG9wdGlvbnNcbiAgICB9O1xuICAgIHdoaWxlRHJhZ2dpbmdSZWYuY3VycmVudCA9IGRyYWdnaW5nO1xuICAgIGNvbnN0IGRpbWVuc2lvbiA9IGdldERpbWVuc2lvbih7XG4gICAgICByZWYsXG4gICAgICBkZXNjcmlwdG9yLFxuICAgICAgZW52LFxuICAgICAgd2luZG93U2Nyb2xsLFxuICAgICAgZGlyZWN0aW9uOiBwcmV2aW91cy5kaXJlY3Rpb24sXG4gICAgICBpc0Ryb3BEaXNhYmxlZDogcHJldmlvdXMuaXNEcm9wRGlzYWJsZWQsXG4gICAgICBpc0NvbWJpbmVFbmFibGVkOiBwcmV2aW91cy5pc0NvbWJpbmVFbmFibGVkLFxuICAgICAgc2hvdWxkQ2xpcFN1YmplY3Q6ICFwcmV2aW91cy5pZ25vcmVDb250YWluZXJDbGlwcGluZ1xuICAgIH0pO1xuICAgIGNvbnN0IHNjcm9sbGFibGUgPSBlbnYuY2xvc2VzdFNjcm9sbGFibGU7XG4gICAgaWYgKHNjcm9sbGFibGUpIHtcbiAgICAgIHNjcm9sbGFibGUuc2V0QXR0cmlidXRlKHNjcm9sbENvbnRhaW5lci5jb250ZXh0SWQsIGFwcENvbnRleHQuY29udGV4dElkKTtcbiAgICAgIHNjcm9sbGFibGUuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25DbG9zZXN0U2Nyb2xsLCBnZXRMaXN0ZW5lck9wdGlvbnMoZHJhZ2dpbmcuc2Nyb2xsT3B0aW9ucykpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY2hlY2tGb3JOZXN0ZWRTY3JvbGxDb250YWluZXJzKHNjcm9sbGFibGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGltZW5zaW9uO1xuICB9LCBbYXBwQ29udGV4dC5jb250ZXh0SWQsIGRlc2NyaXB0b3IsIG9uQ2xvc2VzdFNjcm9sbCwgcHJldmlvdXNSZWZdKTtcbiAgY29uc3QgZ2V0U2Nyb2xsV2hpbGVEcmFnZ2luZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBkcmFnZ2luZyA9IHdoaWxlRHJhZ2dpbmdSZWYuY3VycmVudDtcbiAgICBjb25zdCBjbG9zZXN0ID0gZ2V0Q2xvc2VzdFNjcm9sbGFibGVGcm9tRHJhZyhkcmFnZ2luZyk7XG4gICAgIShkcmFnZ2luZyAmJiBjbG9zZXN0KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0NhbiBvbmx5IHJlY29sbGVjdCBEcm9wcGFibGUgY2xpZW50IGZvciBEcm9wcGFibGVzIHRoYXQgaGF2ZSBhIHNjcm9sbCBjb250YWluZXInKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgcmV0dXJuIGdldFNjcm9sbChjbG9zZXN0KTtcbiAgfSwgW10pO1xuICBjb25zdCBkcmFnU3RvcHBlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBkcmFnZ2luZyA9IHdoaWxlRHJhZ2dpbmdSZWYuY3VycmVudDtcbiAgICAhZHJhZ2dpbmcgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3Qgc3RvcCBkcmFnIHdoZW4gbm8gYWN0aXZlIGRyYWcnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY29uc3QgY2xvc2VzdCA9IGdldENsb3Nlc3RTY3JvbGxhYmxlRnJvbURyYWcoZHJhZ2dpbmcpO1xuICAgIHdoaWxlRHJhZ2dpbmdSZWYuY3VycmVudCA9IG51bGw7XG4gICAgaWYgKCFjbG9zZXN0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNjaGVkdWxlU2Nyb2xsVXBkYXRlLmNhbmNlbCgpO1xuICAgIGNsb3Nlc3QucmVtb3ZlQXR0cmlidXRlKHNjcm9sbENvbnRhaW5lci5jb250ZXh0SWQpO1xuICAgIGNsb3Nlc3QucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25DbG9zZXN0U2Nyb2xsLCBnZXRMaXN0ZW5lck9wdGlvbnMoZHJhZ2dpbmcuc2Nyb2xsT3B0aW9ucykpO1xuICB9LCBbb25DbG9zZXN0U2Nyb2xsLCBzY2hlZHVsZVNjcm9sbFVwZGF0ZV0pO1xuICBjb25zdCBzY3JvbGwgPSB1c2VDYWxsYmFjayhjaGFuZ2UgPT4ge1xuICAgIGNvbnN0IGRyYWdnaW5nID0gd2hpbGVEcmFnZ2luZ1JlZi5jdXJyZW50O1xuICAgICFkcmFnZ2luZyA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBzY3JvbGwgd2hlbiB0aGVyZSBpcyBubyBkcmFnJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAgIGNvbnN0IGNsb3Nlc3QgPSBnZXRDbG9zZXN0U2Nyb2xsYWJsZUZyb21EcmFnKGRyYWdnaW5nKTtcbiAgICAhY2xvc2VzdCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBzY3JvbGwgYSBkcm9wcGFibGUgd2l0aCBubyBjbG9zZXN0IHNjcm9sbGFibGUnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY2xvc2VzdC5zY3JvbGxUb3AgKz0gY2hhbmdlLnk7XG4gICAgY2xvc2VzdC5zY3JvbGxMZWZ0ICs9IGNoYW5nZS54O1xuICB9LCBbXSk7XG4gIGNvbnN0IGNhbGxiYWNrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBnZXREaW1lbnNpb25BbmRXYXRjaFNjcm9sbCxcbiAgICAgIGdldFNjcm9sbFdoaWxlRHJhZ2dpbmcsXG4gICAgICBkcmFnU3RvcHBlZCxcbiAgICAgIHNjcm9sbFxuICAgIH07XG4gIH0sIFtkcmFnU3RvcHBlZCwgZ2V0RGltZW5zaW9uQW5kV2F0Y2hTY3JvbGwsIGdldFNjcm9sbFdoaWxlRHJhZ2dpbmcsIHNjcm9sbF0pO1xuICBjb25zdCBlbnRyeSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICB1bmlxdWVJZCxcbiAgICBkZXNjcmlwdG9yLFxuICAgIGNhbGxiYWNrc1xuICB9KSwgW2NhbGxiYWNrcywgZGVzY3JpcHRvciwgdW5pcXVlSWRdKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBwdWJsaXNoZWREZXNjcmlwdG9yUmVmLmN1cnJlbnQgPSBlbnRyeS5kZXNjcmlwdG9yO1xuICAgIHJlZ2lzdHJ5LmRyb3BwYWJsZS5yZWdpc3RlcihlbnRyeSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICh3aGlsZURyYWdnaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZygnVW5zdXBwb3J0ZWQ6IGNoYW5naW5nIHRoZSBkcm9wcGFibGVJZCBvciB0eXBlIG9mIGEgRHJvcHBhYmxlIGR1cmluZyBhIGRyYWcnKSA6IHZvaWQgMDtcbiAgICAgICAgZHJhZ1N0b3BwZWQoKTtcbiAgICAgIH1cbiAgICAgIHJlZ2lzdHJ5LmRyb3BwYWJsZS51bnJlZ2lzdGVyKGVudHJ5KTtcbiAgICB9O1xuICB9LCBbY2FsbGJhY2tzLCBkZXNjcmlwdG9yLCBkcmFnU3RvcHBlZCwgZW50cnksIG1hcnNoYWwsIHJlZ2lzdHJ5LmRyb3BwYWJsZV0pO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghd2hpbGVEcmFnZ2luZ1JlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG1hcnNoYWwudXBkYXRlRHJvcHBhYmxlSXNFbmFibGVkKHB1Ymxpc2hlZERlc2NyaXB0b3JSZWYuY3VycmVudC5pZCwgIWFyZ3MuaXNEcm9wRGlzYWJsZWQpO1xuICB9LCBbYXJncy5pc0Ryb3BEaXNhYmxlZCwgbWFyc2hhbF0pO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghd2hpbGVEcmFnZ2luZ1JlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG1hcnNoYWwudXBkYXRlRHJvcHBhYmxlSXNDb21iaW5lRW5hYmxlZChwdWJsaXNoZWREZXNjcmlwdG9yUmVmLmN1cnJlbnQuaWQsIGFyZ3MuaXNDb21iaW5lRW5hYmxlZCk7XG4gIH0sIFthcmdzLmlzQ29tYmluZUVuYWJsZWQsIG1hcnNoYWxdKTtcbn1cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5jb25zdCBlbXB0eSA9IHtcbiAgd2lkdGg6IDAsXG4gIGhlaWdodDogMCxcbiAgbWFyZ2luOiBub1NwYWNpbmdcbn07XG5jb25zdCBnZXRTaXplID0gKHtcbiAgaXNBbmltYXRpbmdPcGVuT25Nb3VudCxcbiAgcGxhY2Vob2xkZXIsXG4gIGFuaW1hdGVcbn0pID0+IHtcbiAgaWYgKGlzQW5pbWF0aW5nT3Blbk9uTW91bnQpIHtcbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cbiAgaWYgKGFuaW1hdGUgPT09ICdjbG9zZScpIHtcbiAgICByZXR1cm4gZW1wdHk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBoZWlnaHQ6IHBsYWNlaG9sZGVyLmNsaWVudC5ib3JkZXJCb3guaGVpZ2h0LFxuICAgIHdpZHRoOiBwbGFjZWhvbGRlci5jbGllbnQuYm9yZGVyQm94LndpZHRoLFxuICAgIG1hcmdpbjogcGxhY2Vob2xkZXIuY2xpZW50Lm1hcmdpblxuICB9O1xufTtcbmNvbnN0IGdldFN0eWxlID0gKHtcbiAgaXNBbmltYXRpbmdPcGVuT25Nb3VudCxcbiAgcGxhY2Vob2xkZXIsXG4gIGFuaW1hdGVcbn0pID0+IHtcbiAgY29uc3Qgc2l6ZSA9IGdldFNpemUoe1xuICAgIGlzQW5pbWF0aW5nT3Blbk9uTW91bnQsXG4gICAgcGxhY2Vob2xkZXIsXG4gICAgYW5pbWF0ZVxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBkaXNwbGF5OiBwbGFjZWhvbGRlci5kaXNwbGF5LFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIHdpZHRoOiBzaXplLndpZHRoLFxuICAgIGhlaWdodDogc2l6ZS5oZWlnaHQsXG4gICAgbWFyZ2luVG9wOiBzaXplLm1hcmdpbi50b3AsXG4gICAgbWFyZ2luUmlnaHQ6IHNpemUubWFyZ2luLnJpZ2h0LFxuICAgIG1hcmdpbkJvdHRvbTogc2l6ZS5tYXJnaW4uYm90dG9tLFxuICAgIG1hcmdpbkxlZnQ6IHNpemUubWFyZ2luLmxlZnQsXG4gICAgZmxleFNocmluazogJzAnLFxuICAgIGZsZXhHcm93OiAnMCcsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgIHRyYW5zaXRpb246IGFuaW1hdGUgIT09ICdub25lJyA/IHRyYW5zaXRpb25zLnBsYWNlaG9sZGVyIDogbnVsbFxuICB9O1xufTtcbmNvbnN0IFBsYWNlaG9sZGVyID0gcHJvcHMgPT4ge1xuICBjb25zdCBhbmltYXRlT3BlblRpbWVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB0cnlDbGVhckFuaW1hdGVPcGVuVGltZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFhbmltYXRlT3BlblRpbWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KGFuaW1hdGVPcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgYW5pbWF0ZU9wZW5UaW1lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgfSwgW10pO1xuICBjb25zdCB7XG4gICAgYW5pbWF0ZSxcbiAgICBvblRyYW5zaXRpb25FbmQsXG4gICAgb25DbG9zZSxcbiAgICBjb250ZXh0SWRcbiAgfSA9IHByb3BzO1xuICBjb25zdCBbaXNBbmltYXRpbmdPcGVuT25Nb3VudCwgc2V0SXNBbmltYXRpbmdPcGVuT25Nb3VudF0gPSB1c2VTdGF0ZShwcm9wcy5hbmltYXRlID09PSAnb3BlbicpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNBbmltYXRpbmdPcGVuT25Nb3VudCkge1xuICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuICAgIGlmIChhbmltYXRlICE9PSAnb3BlbicpIHtcbiAgICAgIHRyeUNsZWFyQW5pbWF0ZU9wZW5UaW1lcigpO1xuICAgICAgc2V0SXNBbmltYXRpbmdPcGVuT25Nb3VudChmYWxzZSk7XG4gICAgICByZXR1cm4gbm9vcDtcbiAgICB9XG4gICAgaWYgKGFuaW1hdGVPcGVuVGltZXJSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuIG5vb3A7XG4gICAgfVxuICAgIGFuaW1hdGVPcGVuVGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgYW5pbWF0ZU9wZW5UaW1lclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgIHNldElzQW5pbWF0aW5nT3Blbk9uTW91bnQoZmFsc2UpO1xuICAgIH0pO1xuICAgIHJldHVybiB0cnlDbGVhckFuaW1hdGVPcGVuVGltZXI7XG4gIH0sIFthbmltYXRlLCBpc0FuaW1hdGluZ09wZW5Pbk1vdW50LCB0cnlDbGVhckFuaW1hdGVPcGVuVGltZXJdKTtcbiAgY29uc3Qgb25TaXplQ2hhbmdlRW5kID0gdXNlQ2FsbGJhY2soZXZlbnQgPT4ge1xuICAgIGlmIChldmVudC5wcm9wZXJ0eU5hbWUgIT09ICdoZWlnaHQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG9uVHJhbnNpdGlvbkVuZCgpO1xuICAgIGlmIChhbmltYXRlID09PSAnY2xvc2UnKSB7XG4gICAgICBvbkNsb3NlKCk7XG4gICAgfVxuICB9LCBbYW5pbWF0ZSwgb25DbG9zZSwgb25UcmFuc2l0aW9uRW5kXSk7XG4gIGNvbnN0IHN0eWxlID0gZ2V0U3R5bGUoe1xuICAgIGlzQW5pbWF0aW5nT3Blbk9uTW91bnQsXG4gICAgYW5pbWF0ZTogcHJvcHMuYW5pbWF0ZSxcbiAgICBwbGFjZWhvbGRlcjogcHJvcHMucGxhY2Vob2xkZXJcbiAgfSk7XG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KHByb3BzLnBsYWNlaG9sZGVyLnRhZ05hbWUsIHtcbiAgICBzdHlsZSxcbiAgICAnZGF0YS1yZmQtcGxhY2Vob2xkZXItY29udGV4dC1pZCc6IGNvbnRleHRJZCxcbiAgICBvblRyYW5zaXRpb25FbmQ6IG9uU2l6ZUNoYW5nZUVuZCxcbiAgICByZWY6IHByb3BzLmlubmVyUmVmXG4gIH0pO1xufTtcbnZhciBQbGFjZWhvbGRlciQxID0gUmVhY3QubWVtbyhQbGFjZWhvbGRlcik7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbic7XG59XG5mdW5jdGlvbiBydW5DaGVja3MoYXJncywgY2hlY2tzKSB7XG4gIGNoZWNrcy5mb3JFYWNoKGNoZWNrID0+IGNoZWNrKGFyZ3MpKTtcbn1cbmNvbnN0IHNoYXJlZCA9IFtmdW5jdGlvbiByZXF1aXJlZCh7XG4gIHByb3BzXG59KSB7XG4gICFwcm9wcy5kcm9wcGFibGVJZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0EgRHJvcHBhYmxlIHJlcXVpcmVzIGEgZHJvcHBhYmxlSWQgcHJvcCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgISh0eXBlb2YgcHJvcHMuZHJvcHBhYmxlSWQgPT09ICdzdHJpbmcnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgYEEgRHJvcHBhYmxlIHJlcXVpcmVzIGEgW3N0cmluZ10gZHJvcHBhYmxlSWQuIFByb3ZpZGVkOiBbJHt0eXBlb2YgcHJvcHMuZHJvcHBhYmxlSWR9XWApIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbn0sIGZ1bmN0aW9uIGJvb2xlYW4oe1xuICBwcm9wc1xufSkge1xuICAhaXNCb29sZWFuKHByb3BzLmlzRHJvcERpc2FibGVkKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ2lzRHJvcERpc2FibGVkIG11c3QgYmUgYSBib29sZWFuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAhaXNCb29sZWFuKHByb3BzLmlzQ29tYmluZUVuYWJsZWQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnaXNDb21iaW5lRW5hYmxlZCBtdXN0IGJlIGEgYm9vbGVhbicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgIWlzQm9vbGVhbihwcm9wcy5pZ25vcmVDb250YWluZXJDbGlwcGluZykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdpZ25vcmVDb250YWluZXJDbGlwcGluZyBtdXN0IGJlIGEgYm9vbGVhbicpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbn0sIGZ1bmN0aW9uIHJlZih7XG4gIGdldERyb3BwYWJsZVJlZlxufSkge1xuICBjaGVja0lzVmFsaWRJbm5lclJlZihnZXREcm9wcGFibGVSZWYoKSk7XG59XTtcbmNvbnN0IHN0YW5kYXJkID0gW2Z1bmN0aW9uIHBsYWNlaG9sZGVyKHtcbiAgcHJvcHMsXG4gIGdldFBsYWNlaG9sZGVyUmVmXG59KSB7XG4gIGlmICghcHJvcHMucGxhY2Vob2xkZXIpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcmVmID0gZ2V0UGxhY2Vob2xkZXJSZWYoKTtcbiAgaWYgKHJlZikge1xuICAgIHJldHVybjtcbiAgfVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGBcbiAgICAgIERyb3BwYWJsZSBzZXR1cCBpc3N1ZSBbZHJvcHBhYmxlSWQ6IFwiJHtwcm9wcy5kcm9wcGFibGVJZH1cIl06XG4gICAgICBEcm9wcGFibGVQcm92aWRlZCA+IHBsYWNlaG9sZGVyIGNvdWxkIG5vdCBiZSBmb3VuZC5cblxuICAgICAgUGxlYXNlIGJlIHN1cmUgdG8gYWRkIHRoZSB7cHJvdmlkZWQucGxhY2Vob2xkZXJ9IFJlYWN0IE5vZGUgYXMgYSBjaGlsZCBvZiB5b3VyIERyb3BwYWJsZS5cbiAgICAgIE1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWxsby1wYW5nZWEvZG5kL2Jsb2IvbWFpbi9kb2NzL2FwaS9kcm9wcGFibGUubWRcbiAgICBgKSA6IHZvaWQgMDtcbn1dO1xuY29uc3QgdmlydHVhbCA9IFtmdW5jdGlvbiBoYXNDbG9uZSh7XG4gIHByb3BzXG59KSB7XG4gICFwcm9wcy5yZW5kZXJDbG9uZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ011c3QgcHJvdmlkZSBhIGNsb25lIHJlbmRlciBmdW5jdGlvbiAocmVuZGVyQ2xvbmUpIGZvciB2aXJ0dWFsIGxpc3RzJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xufSwgZnVuY3Rpb24gaGFzTm9QbGFjZWhvbGRlcih7XG4gIGdldFBsYWNlaG9sZGVyUmVmXG59KSB7XG4gICEhZ2V0UGxhY2Vob2xkZXJSZWYoKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIHZpcnR1YWwgbGlzdCB0byBub3QgaGF2ZSBhIHBsYWNlaG9sZGVyJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xufV07XG5mdW5jdGlvbiB1c2VWYWxpZGF0aW9uKGFyZ3MpIHtcbiAgdXNlRGV2U2V0dXBXYXJuaW5nKCgpID0+IHtcbiAgICBydW5DaGVja3MoYXJncywgc2hhcmVkKTtcbiAgICBpZiAoYXJncy5wcm9wcy5tb2RlID09PSAnc3RhbmRhcmQnKSB7XG4gICAgICBydW5DaGVja3MoYXJncywgc3RhbmRhcmQpO1xuICAgIH1cbiAgICBpZiAoYXJncy5wcm9wcy5tb2RlID09PSAndmlydHVhbCcpIHtcbiAgICAgIHJ1bkNoZWNrcyhhcmdzLCB2aXJ0dWFsKTtcbiAgICB9XG4gIH0pO1xufVxuXG5jbGFzcyBBbmltYXRlSW5PdXQgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoLi4uYXJncykge1xuICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBpc1Zpc2libGU6IEJvb2xlYW4odGhpcy5wcm9wcy5vbiksXG4gICAgICBkYXRhOiB0aGlzLnByb3BzLm9uLFxuICAgICAgYW5pbWF0ZTogdGhpcy5wcm9wcy5zaG91bGRBbmltYXRlICYmIHRoaXMucHJvcHMub24gPyAnb3BlbicgOiAnbm9uZSdcbiAgICB9O1xuICAgIHRoaXMub25DbG9zZSA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLnN0YXRlLmFuaW1hdGUgIT09ICdjbG9zZScpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGlzVmlzaWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhwcm9wcywgc3RhdGUpIHtcbiAgICBpZiAoIXByb3BzLnNob3VsZEFuaW1hdGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlzVmlzaWJsZTogQm9vbGVhbihwcm9wcy5vbiksXG4gICAgICAgIGRhdGE6IHByb3BzLm9uLFxuICAgICAgICBhbmltYXRlOiAnbm9uZSdcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChwcm9wcy5vbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNWaXNpYmxlOiB0cnVlLFxuICAgICAgICBkYXRhOiBwcm9wcy5vbixcbiAgICAgICAgYW5pbWF0ZTogJ29wZW4nXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoc3RhdGUuaXNWaXNpYmxlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgIGRhdGE6IHN0YXRlLmRhdGEsXG4gICAgICAgIGFuaW1hdGU6ICdjbG9zZSdcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgICAgYW5pbWF0ZTogJ2Nsb3NlJyxcbiAgICAgIGRhdGE6IG51bGxcbiAgICB9O1xuICB9XG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUuaXNWaXNpYmxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcHJvdmlkZWQgPSB7XG4gICAgICBvbkNsb3NlOiB0aGlzLm9uQ2xvc2UsXG4gICAgICBkYXRhOiB0aGlzLnN0YXRlLmRhdGEsXG4gICAgICBhbmltYXRlOiB0aGlzLnN0YXRlLmFuaW1hdGVcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuKHByb3ZpZGVkKTtcbiAgfVxufVxuXG5jb25zdCBEcm9wcGFibGUgPSBwcm9wcyA9PiB7XG4gIGNvbnN0IGFwcENvbnRleHQgPSB1c2VDb250ZXh0KEFwcENvbnRleHQpO1xuICAhYXBwQ29udGV4dCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0NvdWxkIG5vdCBmaW5kIGFwcCBjb250ZXh0JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBjb25zdCB7XG4gICAgY29udGV4dElkLFxuICAgIGlzTW92ZW1lbnRBbGxvd2VkXG4gIH0gPSBhcHBDb250ZXh0O1xuICBjb25zdCBkcm9wcGFibGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHBsYWNlaG9sZGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgZHJvcHBhYmxlSWQsXG4gICAgdHlwZSxcbiAgICBtb2RlLFxuICAgIGRpcmVjdGlvbixcbiAgICBpZ25vcmVDb250YWluZXJDbGlwcGluZyxcbiAgICBpc0Ryb3BEaXNhYmxlZCxcbiAgICBpc0NvbWJpbmVFbmFibGVkLFxuICAgIHNuYXBzaG90LFxuICAgIHVzZUNsb25lLFxuICAgIHVwZGF0ZVZpZXdwb3J0TWF4U2Nyb2xsLFxuICAgIGdldENvbnRhaW5lckZvckNsb25lXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgZ2V0RHJvcHBhYmxlUmVmID0gdXNlQ2FsbGJhY2soKCkgPT4gZHJvcHBhYmxlUmVmLmN1cnJlbnQsIFtdKTtcbiAgY29uc3Qgc2V0RHJvcHBhYmxlUmVmID0gdXNlQ2FsbGJhY2soKHZhbHVlID0gbnVsbCkgPT4ge1xuICAgIGRyb3BwYWJsZVJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH0sIFtdKTtcbiAgY29uc3QgZ2V0UGxhY2Vob2xkZXJSZWYgPSB1c2VDYWxsYmFjaygoKSA9PiBwbGFjZWhvbGRlclJlZi5jdXJyZW50LCBbXSk7XG4gIGNvbnN0IHNldFBsYWNlaG9sZGVyUmVmID0gdXNlQ2FsbGJhY2soKHZhbHVlID0gbnVsbCkgPT4ge1xuICAgIHBsYWNlaG9sZGVyUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSwgW10pO1xuICB1c2VWYWxpZGF0aW9uKHtcbiAgICBwcm9wcyxcbiAgICBnZXREcm9wcGFibGVSZWYsXG4gICAgZ2V0UGxhY2Vob2xkZXJSZWZcbiAgfSk7XG4gIGNvbnN0IG9uUGxhY2Vob2xkZXJUcmFuc2l0aW9uRW5kID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChpc01vdmVtZW50QWxsb3dlZCgpKSB7XG4gICAgICB1cGRhdGVWaWV3cG9ydE1heFNjcm9sbCh7XG4gICAgICAgIG1heFNjcm9sbDogZ2V0TWF4V2luZG93U2Nyb2xsKClcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2lzTW92ZW1lbnRBbGxvd2VkLCB1cGRhdGVWaWV3cG9ydE1heFNjcm9sbF0pO1xuICB1c2VEcm9wcGFibGVQdWJsaXNoZXIoe1xuICAgIGRyb3BwYWJsZUlkLFxuICAgIHR5cGUsXG4gICAgbW9kZSxcbiAgICBkaXJlY3Rpb24sXG4gICAgaXNEcm9wRGlzYWJsZWQsXG4gICAgaXNDb21iaW5lRW5hYmxlZCxcbiAgICBpZ25vcmVDb250YWluZXJDbGlwcGluZyxcbiAgICBnZXREcm9wcGFibGVSZWZcbiAgfSk7XG4gIGNvbnN0IHBsYWNlaG9sZGVyID0gdXNlTWVtbygoKSA9PiBSZWFjdC5jcmVhdGVFbGVtZW50KEFuaW1hdGVJbk91dCwge1xuICAgIG9uOiBwcm9wcy5wbGFjZWhvbGRlcixcbiAgICBzaG91bGRBbmltYXRlOiBwcm9wcy5zaG91bGRBbmltYXRlUGxhY2Vob2xkZXJcbiAgfSwgKHtcbiAgICBvbkNsb3NlLFxuICAgIGRhdGEsXG4gICAgYW5pbWF0ZVxuICB9KSA9PiBSZWFjdC5jcmVhdGVFbGVtZW50KFBsYWNlaG9sZGVyJDEsIHtcbiAgICBwbGFjZWhvbGRlcjogZGF0YSxcbiAgICBvbkNsb3NlOiBvbkNsb3NlLFxuICAgIGlubmVyUmVmOiBzZXRQbGFjZWhvbGRlclJlZixcbiAgICBhbmltYXRlOiBhbmltYXRlLFxuICAgIGNvbnRleHRJZDogY29udGV4dElkLFxuICAgIG9uVHJhbnNpdGlvbkVuZDogb25QbGFjZWhvbGRlclRyYW5zaXRpb25FbmRcbiAgfSkpLCBbY29udGV4dElkLCBvblBsYWNlaG9sZGVyVHJhbnNpdGlvbkVuZCwgcHJvcHMucGxhY2Vob2xkZXIsIHByb3BzLnNob3VsZEFuaW1hdGVQbGFjZWhvbGRlciwgc2V0UGxhY2Vob2xkZXJSZWZdKTtcbiAgY29uc3QgcHJvdmlkZWQgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgaW5uZXJSZWY6IHNldERyb3BwYWJsZVJlZixcbiAgICBwbGFjZWhvbGRlcixcbiAgICBkcm9wcGFibGVQcm9wczoge1xuICAgICAgJ2RhdGEtcmZkLWRyb3BwYWJsZS1pZCc6IGRyb3BwYWJsZUlkLFxuICAgICAgJ2RhdGEtcmZkLWRyb3BwYWJsZS1jb250ZXh0LWlkJzogY29udGV4dElkXG4gICAgfVxuICB9KSwgW2NvbnRleHRJZCwgZHJvcHBhYmxlSWQsIHBsYWNlaG9sZGVyLCBzZXREcm9wcGFibGVSZWZdKTtcbiAgY29uc3QgaXNVc2luZ0Nsb25lRm9yID0gdXNlQ2xvbmUgPyB1c2VDbG9uZS5kcmFnZ2luZy5kcmFnZ2FibGVJZCA6IG51bGw7XG4gIGNvbnN0IGRyb3BwYWJsZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgZHJvcHBhYmxlSWQsXG4gICAgdHlwZSxcbiAgICBpc1VzaW5nQ2xvbmVGb3JcbiAgfSksIFtkcm9wcGFibGVJZCwgaXNVc2luZ0Nsb25lRm9yLCB0eXBlXSk7XG4gIGZ1bmN0aW9uIGdldENsb25lKCkge1xuICAgIGlmICghdXNlQ2xvbmUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB7XG4gICAgICBkcmFnZ2luZyxcbiAgICAgIHJlbmRlclxuICAgIH0gPSB1c2VDbG9uZTtcbiAgICBjb25zdCBub2RlID0gUmVhY3QuY3JlYXRlRWxlbWVudChQcml2YXRlRHJhZ2dhYmxlLCB7XG4gICAgICBkcmFnZ2FibGVJZDogZHJhZ2dpbmcuZHJhZ2dhYmxlSWQsXG4gICAgICBpbmRleDogZHJhZ2dpbmcuc291cmNlLmluZGV4LFxuICAgICAgaXNDbG9uZTogdHJ1ZSxcbiAgICAgIGlzRW5hYmxlZDogdHJ1ZSxcbiAgICAgIHNob3VsZFJlc3BlY3RGb3JjZVByZXNzOiBmYWxzZSxcbiAgICAgIGNhbkRyYWdJbnRlcmFjdGl2ZUVsZW1lbnRzOiB0cnVlXG4gICAgfSwgKGRyYWdnYWJsZVByb3ZpZGVkLCBkcmFnZ2FibGVTbmFwc2hvdCkgPT4gcmVuZGVyKGRyYWdnYWJsZVByb3ZpZGVkLCBkcmFnZ2FibGVTbmFwc2hvdCwgZHJhZ2dpbmcpKTtcbiAgICByZXR1cm4gUmVhY3RET00uY3JlYXRlUG9ydGFsKG5vZGUsIGdldENvbnRhaW5lckZvckNsb25lKCkpO1xuICB9XG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KERyb3BwYWJsZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogZHJvcHBhYmxlQ29udGV4dFxuICB9LCBjaGlsZHJlbihwcm92aWRlZCwgc25hcHNob3QpLCBnZXRDbG9uZSgpKTtcbn07XG52YXIgRHJvcHBhYmxlJDEgPSBEcm9wcGFibGU7XG5cbmZ1bmN0aW9uIGdldEJvZHkoKSB7XG4gICFkb2N1bWVudC5ib2R5ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gaW52YXJpYW50KGZhbHNlLCAnZG9jdW1lbnQuYm9keSBpcyBub3QgcmVhZHknKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHJldHVybiBkb2N1bWVudC5ib2R5O1xufVxuY29uc3QgZGVmYXVsdFByb3BzID0ge1xuICBtb2RlOiAnc3RhbmRhcmQnLFxuICB0eXBlOiAnREVGQVVMVCcsXG4gIGRpcmVjdGlvbjogJ3ZlcnRpY2FsJyxcbiAgaXNEcm9wRGlzYWJsZWQ6IGZhbHNlLFxuICBpc0NvbWJpbmVFbmFibGVkOiBmYWxzZSxcbiAgaWdub3JlQ29udGFpbmVyQ2xpcHBpbmc6IGZhbHNlLFxuICByZW5kZXJDbG9uZTogbnVsbCxcbiAgZ2V0Q29udGFpbmVyRm9yQ2xvbmU6IGdldEJvZHlcbn07XG5jb25zdCBhdHRhY2hEZWZhdWx0UHJvcHNUb093blByb3BzID0gb3duUHJvcHMgPT4ge1xuICBsZXQgbWVyZ2VkUHJvcHMgPSB7XG4gICAgLi4ub3duUHJvcHNcbiAgfTtcbiAgbGV0IGRlZmF1bHRQcm9wS2V5O1xuICBmb3IgKGRlZmF1bHRQcm9wS2V5IGluIGRlZmF1bHRQcm9wcykge1xuICAgIGlmIChvd25Qcm9wc1tkZWZhdWx0UHJvcEtleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgbWVyZ2VkUHJvcHMgPSB7XG4gICAgICAgIC4uLm1lcmdlZFByb3BzLFxuICAgICAgICBbZGVmYXVsdFByb3BLZXldOiBkZWZhdWx0UHJvcHNbZGVmYXVsdFByb3BLZXldXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWVyZ2VkUHJvcHM7XG59O1xuY29uc3QgaXNNYXRjaGluZ1R5cGUgPSAodHlwZSwgY3JpdGljYWwpID0+IHR5cGUgPT09IGNyaXRpY2FsLmRyb3BwYWJsZS50eXBlO1xuY29uc3QgZ2V0RHJhZ2dhYmxlID0gKGNyaXRpY2FsLCBkaW1lbnNpb25zKSA9PiBkaW1lbnNpb25zLmRyYWdnYWJsZXNbY3JpdGljYWwuZHJhZ2dhYmxlLmlkXTtcbmNvbnN0IG1ha2VNYXBTdGF0ZVRvUHJvcHMgPSAoKSA9PiB7XG4gIGNvbnN0IGlkbGVXaXRoQW5pbWF0aW9uID0ge1xuICAgIHBsYWNlaG9sZGVyOiBudWxsLFxuICAgIHNob3VsZEFuaW1hdGVQbGFjZWhvbGRlcjogdHJ1ZSxcbiAgICBzbmFwc2hvdDoge1xuICAgICAgaXNEcmFnZ2luZ092ZXI6IGZhbHNlLFxuICAgICAgZHJhZ2dpbmdPdmVyV2l0aDogbnVsbCxcbiAgICAgIGRyYWdnaW5nRnJvbVRoaXNXaXRoOiBudWxsLFxuICAgICAgaXNVc2luZ1BsYWNlaG9sZGVyOiBmYWxzZVxuICAgIH0sXG4gICAgdXNlQ2xvbmU6IG51bGxcbiAgfTtcbiAgY29uc3QgaWRsZVdpdGhvdXRBbmltYXRpb24gPSB7XG4gICAgLi4uaWRsZVdpdGhBbmltYXRpb24sXG4gICAgc2hvdWxkQW5pbWF0ZVBsYWNlaG9sZGVyOiBmYWxzZVxuICB9O1xuICBjb25zdCBnZXREcmFnZ2FibGVSdWJyaWMgPSBtZW1vaXplT25lKGRlc2NyaXB0b3IgPT4gKHtcbiAgICBkcmFnZ2FibGVJZDogZGVzY3JpcHRvci5pZCxcbiAgICB0eXBlOiBkZXNjcmlwdG9yLnR5cGUsXG4gICAgc291cmNlOiB7XG4gICAgICBpbmRleDogZGVzY3JpcHRvci5pbmRleCxcbiAgICAgIGRyb3BwYWJsZUlkOiBkZXNjcmlwdG9yLmRyb3BwYWJsZUlkXG4gICAgfVxuICB9KSk7XG4gIGNvbnN0IGdldE1hcFByb3BzID0gbWVtb2l6ZU9uZSgoaWQsIGlzRW5hYmxlZCwgaXNEcmFnZ2luZ092ZXJGb3JDb25zdW1lciwgaXNEcmFnZ2luZ092ZXJGb3JJbXBhY3QsIGRyYWdnaW5nLCByZW5kZXJDbG9uZSkgPT4ge1xuICAgIGNvbnN0IGRyYWdnYWJsZUlkID0gZHJhZ2dpbmcuZGVzY3JpcHRvci5pZDtcbiAgICBjb25zdCBpc0hvbWUgPSBkcmFnZ2luZy5kZXNjcmlwdG9yLmRyb3BwYWJsZUlkID09PSBpZDtcbiAgICBpZiAoaXNIb21lKSB7XG4gICAgICBjb25zdCB1c2VDbG9uZSA9IHJlbmRlckNsb25lID8ge1xuICAgICAgICByZW5kZXI6IHJlbmRlckNsb25lLFxuICAgICAgICBkcmFnZ2luZzogZ2V0RHJhZ2dhYmxlUnVicmljKGRyYWdnaW5nLmRlc2NyaXB0b3IpXG4gICAgICB9IDogbnVsbDtcbiAgICAgIGNvbnN0IHNuYXBzaG90ID0ge1xuICAgICAgICBpc0RyYWdnaW5nT3ZlcjogaXNEcmFnZ2luZ092ZXJGb3JDb25zdW1lcixcbiAgICAgICAgZHJhZ2dpbmdPdmVyV2l0aDogaXNEcmFnZ2luZ092ZXJGb3JDb25zdW1lciA/IGRyYWdnYWJsZUlkIDogbnVsbCxcbiAgICAgICAgZHJhZ2dpbmdGcm9tVGhpc1dpdGg6IGRyYWdnYWJsZUlkLFxuICAgICAgICBpc1VzaW5nUGxhY2Vob2xkZXI6IHRydWVcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwbGFjZWhvbGRlcjogZHJhZ2dpbmcucGxhY2Vob2xkZXIsXG4gICAgICAgIHNob3VsZEFuaW1hdGVQbGFjZWhvbGRlcjogZmFsc2UsXG4gICAgICAgIHNuYXBzaG90LFxuICAgICAgICB1c2VDbG9uZVxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKCFpc0VuYWJsZWQpIHtcbiAgICAgIHJldHVybiBpZGxlV2l0aG91dEFuaW1hdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0RyYWdnaW5nT3ZlckZvckltcGFjdCkge1xuICAgICAgcmV0dXJuIGlkbGVXaXRoQW5pbWF0aW9uO1xuICAgIH1cbiAgICBjb25zdCBzbmFwc2hvdCA9IHtcbiAgICAgIGlzRHJhZ2dpbmdPdmVyOiBpc0RyYWdnaW5nT3ZlckZvckNvbnN1bWVyLFxuICAgICAgZHJhZ2dpbmdPdmVyV2l0aDogZHJhZ2dhYmxlSWQsXG4gICAgICBkcmFnZ2luZ0Zyb21UaGlzV2l0aDogbnVsbCxcbiAgICAgIGlzVXNpbmdQbGFjZWhvbGRlcjogdHJ1ZVxuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHBsYWNlaG9sZGVyOiBkcmFnZ2luZy5wbGFjZWhvbGRlcixcbiAgICAgIHNob3VsZEFuaW1hdGVQbGFjZWhvbGRlcjogdHJ1ZSxcbiAgICAgIHNuYXBzaG90LFxuICAgICAgdXNlQ2xvbmU6IG51bGxcbiAgICB9O1xuICB9KTtcbiAgY29uc3Qgc2VsZWN0b3IgPSAoc3RhdGUsIG93blByb3BzKSA9PiB7XG4gICAgY29uc3Qgb3duUHJvcHNXaXRoRGVmYXVsdFByb3BzID0gYXR0YWNoRGVmYXVsdFByb3BzVG9Pd25Qcm9wcyhvd25Qcm9wcyk7XG4gICAgY29uc3QgaWQgPSBvd25Qcm9wc1dpdGhEZWZhdWx0UHJvcHMuZHJvcHBhYmxlSWQ7XG4gICAgY29uc3QgdHlwZSA9IG93blByb3BzV2l0aERlZmF1bHRQcm9wcy50eXBlO1xuICAgIGNvbnN0IGlzRW5hYmxlZCA9ICFvd25Qcm9wc1dpdGhEZWZhdWx0UHJvcHMuaXNEcm9wRGlzYWJsZWQ7XG4gICAgY29uc3QgcmVuZGVyQ2xvbmUgPSBvd25Qcm9wc1dpdGhEZWZhdWx0UHJvcHMucmVuZGVyQ2xvbmU7XG4gICAgaWYgKGlzRHJhZ2dpbmcoc3RhdGUpKSB7XG4gICAgICBjb25zdCBjcml0aWNhbCA9IHN0YXRlLmNyaXRpY2FsO1xuICAgICAgaWYgKCFpc01hdGNoaW5nVHlwZSh0eXBlLCBjcml0aWNhbCkpIHtcbiAgICAgICAgcmV0dXJuIGlkbGVXaXRob3V0QW5pbWF0aW9uO1xuICAgICAgfVxuICAgICAgY29uc3QgZHJhZ2dpbmcgPSBnZXREcmFnZ2FibGUoY3JpdGljYWwsIHN0YXRlLmRpbWVuc2lvbnMpO1xuICAgICAgY29uc3QgaXNEcmFnZ2luZ092ZXIgPSB3aGF0SXNEcmFnZ2VkT3ZlcihzdGF0ZS5pbXBhY3QpID09PSBpZDtcbiAgICAgIHJldHVybiBnZXRNYXBQcm9wcyhpZCwgaXNFbmFibGVkLCBpc0RyYWdnaW5nT3ZlciwgaXNEcmFnZ2luZ092ZXIsIGRyYWdnaW5nLCByZW5kZXJDbG9uZSk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5waGFzZSA9PT0gJ0RST1BfQU5JTUFUSU5HJykge1xuICAgICAgY29uc3QgY29tcGxldGVkID0gc3RhdGUuY29tcGxldGVkO1xuICAgICAgaWYgKCFpc01hdGNoaW5nVHlwZSh0eXBlLCBjb21wbGV0ZWQuY3JpdGljYWwpKSB7XG4gICAgICAgIHJldHVybiBpZGxlV2l0aG91dEFuaW1hdGlvbjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRyYWdnaW5nID0gZ2V0RHJhZ2dhYmxlKGNvbXBsZXRlZC5jcml0aWNhbCwgc3RhdGUuZGltZW5zaW9ucyk7XG4gICAgICByZXR1cm4gZ2V0TWFwUHJvcHMoaWQsIGlzRW5hYmxlZCwgd2hhdElzRHJhZ2dlZE92ZXJGcm9tUmVzdWx0KGNvbXBsZXRlZC5yZXN1bHQpID09PSBpZCwgd2hhdElzRHJhZ2dlZE92ZXIoY29tcGxldGVkLmltcGFjdCkgPT09IGlkLCBkcmFnZ2luZywgcmVuZGVyQ2xvbmUpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUucGhhc2UgPT09ICdJRExFJyAmJiBzdGF0ZS5jb21wbGV0ZWQgJiYgIXN0YXRlLnNob3VsZEZsdXNoKSB7XG4gICAgICBjb25zdCBjb21wbGV0ZWQgPSBzdGF0ZS5jb21wbGV0ZWQ7XG4gICAgICBpZiAoIWlzTWF0Y2hpbmdUeXBlKHR5cGUsIGNvbXBsZXRlZC5jcml0aWNhbCkpIHtcbiAgICAgICAgcmV0dXJuIGlkbGVXaXRob3V0QW5pbWF0aW9uO1xuICAgICAgfVxuICAgICAgY29uc3Qgd2FzT3ZlciA9IHdoYXRJc0RyYWdnZWRPdmVyKGNvbXBsZXRlZC5pbXBhY3QpID09PSBpZDtcbiAgICAgIGNvbnN0IHdhc0NvbWJpbmluZyA9IEJvb2xlYW4oY29tcGxldGVkLmltcGFjdC5hdCAmJiBjb21wbGV0ZWQuaW1wYWN0LmF0LnR5cGUgPT09ICdDT01CSU5FJyk7XG4gICAgICBjb25zdCBpc0hvbWUgPSBjb21wbGV0ZWQuY3JpdGljYWwuZHJvcHBhYmxlLmlkID09PSBpZDtcbiAgICAgIGlmICh3YXNPdmVyKSB7XG4gICAgICAgIHJldHVybiB3YXNDb21iaW5pbmcgPyBpZGxlV2l0aEFuaW1hdGlvbiA6IGlkbGVXaXRob3V0QW5pbWF0aW9uO1xuICAgICAgfVxuICAgICAgaWYgKGlzSG9tZSkge1xuICAgICAgICByZXR1cm4gaWRsZVdpdGhBbmltYXRpb247XG4gICAgICB9XG4gICAgICByZXR1cm4gaWRsZVdpdGhvdXRBbmltYXRpb247XG4gICAgfVxuICAgIHJldHVybiBpZGxlV2l0aG91dEFuaW1hdGlvbjtcbiAgfTtcbiAgcmV0dXJuIHNlbGVjdG9yO1xufTtcbmNvbnN0IG1hcERpc3BhdGNoVG9Qcm9wcyA9IHtcbiAgdXBkYXRlVmlld3BvcnRNYXhTY3JvbGw6IHVwZGF0ZVZpZXdwb3J0TWF4U2Nyb2xsXG59O1xuY29uc3QgQ29ubmVjdGVkRHJvcHBhYmxlID0gY29ubmVjdChtYWtlTWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIChzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9wcykgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLmF0dGFjaERlZmF1bHRQcm9wc1RvT3duUHJvcHMob3duUHJvcHMpLFxuICAgIC4uLnN0YXRlUHJvcHMsXG4gICAgLi4uZGlzcGF0Y2hQcm9wc1xuICB9O1xufSwge1xuICBjb250ZXh0OiBTdG9yZUNvbnRleHQsXG4gIGFyZVN0YXRlUHJvcHNFcXVhbDogaXNTdHJpY3RFcXVhbFxufSkoRHJvcHBhYmxlJDEpO1xudmFyIENvbm5lY3RlZERyb3BwYWJsZSQxID0gQ29ubmVjdGVkRHJvcHBhYmxlO1xuXG5leHBvcnQgeyBEcmFnRHJvcENvbnRleHQsIFB1YmxpY0RyYWdnYWJsZSBhcyBEcmFnZ2FibGUsIENvbm5lY3RlZERyb3BwYWJsZSQxIGFzIERyb3BwYWJsZSwgcmVzZXRTZXJ2ZXJDb250ZXh0LCB1c2VLZXlib2FyZFNlbnNvciwgdXNlTW91c2VTZW5zb3IsIHVzZVRvdWNoU2Vuc29yIH07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QkMSIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwidXNlQ29udGV4dCIsIlJlYWN0RE9NIiwiZmx1c2hTeW5jIiwiY3JlYXRlU3RvcmUiLCJjcmVhdGVTdG9yZSQxIiwiYXBwbHlNaWRkbGV3YXJlIiwiY29tcG9zZSIsImJpbmRBY3Rpb25DcmVhdG9ycyIsIlByb3ZpZGVyIiwiY29ubmVjdCIsInVzZU1lbW8iLCJ1c2VDYWxsYmFjayIsImdldFJlY3QiLCJleHBhbmQiLCJvZmZzZXQiLCJ3aXRoU2Nyb2xsIiwiY2FsY3VsYXRlQm94IiwiZ2V0Qm94IiwiY3JlYXRlQm94IiwibWVtb2l6ZU9uZSIsInJhZlNjaGQiLCJfZXh0ZW5kcyIsImlzUHJvZHVjdGlvbiQxIiwicHJvY2VzcyIsInNwYWNlc0FuZFRhYnMiLCJsaW5lU3RhcnRXaXRoU3BhY2VzIiwiY2xlYW4kMiIsInZhbHVlIiwicmVwbGFjZSIsInRyaW0iLCJnZXREZXZNZXNzYWdlIiwibWVzc2FnZSIsImdldEZvcm1hdHRlZE1lc3NhZ2UiLCJpc0Rpc2FibGVkRmxhZyIsImxvZyIsInR5cGUiLCJ3aW5kb3ciLCJjb25zb2xlIiwid2FybmluZyIsImJpbmQiLCJlcnJvciIsIm5vb3AkMiIsImdldE9wdGlvbnMiLCJzaGFyZWQiLCJmcm9tQmluZGluZyIsImJpbmRFdmVudHMiLCJlbCIsImJpbmRpbmdzIiwic2hhcmVkT3B0aW9ucyIsInVuYmluZGluZ3MiLCJtYXAiLCJiaW5kaW5nIiwib3B0aW9ucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudE5hbWUiLCJmbiIsInVuYmluZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1bmJpbmRBbGwiLCJmb3JFYWNoIiwiaXNQcm9kdWN0aW9uIiwicHJlZml4JDEiLCJSYmRJbnZhcmlhbnQiLCJFcnJvciIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiaW52YXJpYW50IiwiY29uZGl0aW9uIiwiRXJyb3JCb3VuZGFyeSIsIkNvbXBvbmVudCIsImNvbXBvbmVudERpZE1vdW50Iiwib25XaW5kb3dFcnJvciIsImNvbXBvbmVudERpZENhdGNoIiwiZXJyIiwic2V0U3RhdGUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbmRlciIsInByb3BzIiwiY2hpbGRyZW4iLCJzZXRDYWxsYmFja3MiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJjYWxsYmFja3MiLCJldmVudCIsImdldENhbGxiYWNrcyIsImlzRHJhZ2dpbmciLCJ0cnlBYm9ydCIsInByZXZlbnREZWZhdWx0IiwiZHJhZ0hhbmRsZVVzYWdlSW5zdHJ1Y3Rpb25zIiwicG9zaXRpb24iLCJpbmRleCIsIm9uRHJhZ1N0YXJ0Iiwic3RhcnQiLCJzb3VyY2UiLCJ3aXRoTG9jYXRpb24iLCJkZXN0aW5hdGlvbiIsImlzSW5Ib21lTGlzdCIsImRyb3BwYWJsZUlkIiwic3RhcnRQb3NpdGlvbiIsImVuZFBvc2l0aW9uIiwid2l0aENvbWJpbmUiLCJpZCIsImNvbWJpbmUiLCJpbkhvbWVMaXN0IiwiZHJhZ2dhYmxlSWQiLCJvbkRyYWdVcGRhdGUiLCJ1cGRhdGUiLCJsb2NhdGlvbiIsInJldHVybmVkVG9TdGFydCIsIm9uRHJhZ0VuZCIsInJlc3VsdCIsInJlYXNvbiIsInByZXNldCIsInByZXNldCQxIiwib3JpZ2luIiwieCIsInkiLCJhZGQiLCJwb2ludDEiLCJwb2ludDIiLCJzdWJ0cmFjdCIsImlzRXF1YWwkMSIsIm5lZ2F0ZSIsInBvaW50IiwicGF0Y2giLCJsaW5lIiwib3RoZXJWYWx1ZSIsImRpc3RhbmNlIiwiTWF0aCIsInNxcnQiLCJjbG9zZXN0JDEiLCJ0YXJnZXQiLCJwb2ludHMiLCJtaW4iLCJhcHBseSIsImV4ZWN1dGVDbGlwIiwiZnJhbWUiLCJzdWJqZWN0IiwidG9wIiwibWF4IiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXRCeVBvc2l0aW9uIiwic3BhY2luZyIsImdldENvcm5lcnMiLCJub1NwYWNpbmciLCJzY3JvbGwkMSIsInNjcm9sbCIsImRpZmYiLCJkaXNwbGFjZW1lbnQiLCJpbmNyZWFzZSIsImF4aXMiLCJ3aXRoUGxhY2Vob2xkZXIiLCJpbmNyZWFzZWRCeSIsImVuZCIsImNsaXAiLCJzaG91bGRDbGlwU3ViamVjdCIsInBhZ2VNYXJnaW5Cb3giLCJnZXRTdWJqZWN0IiwicGFnZSIsInNjcm9sbGVkIiwibWFyZ2luQm94IiwiaW5jcmVhc2VkIiwiY2xpcHBlZCIsImFjdGl2ZSIsInNjcm9sbERyb3BwYWJsZSIsImRyb3BwYWJsZSIsIm5ld1Njcm9sbCIsInNjcm9sbGFibGUiLCJzY3JvbGxEaWZmIiwiaW5pdGlhbCIsInNjcm9sbERpc3BsYWNlbWVudCIsImN1cnJlbnQiLCJ0b0Ryb3BwYWJsZU1hcCIsImRyb3BwYWJsZXMiLCJyZWR1Y2UiLCJwcmV2aW91cyIsImRlc2NyaXB0b3IiLCJ0b0RyYWdnYWJsZU1hcCIsImRyYWdnYWJsZXMiLCJ0b0Ryb3BwYWJsZUxpc3QiLCJPYmplY3QiLCJ2YWx1ZXMiLCJ0b0RyYWdnYWJsZUxpc3QiLCJnZXREcmFnZ2FibGVzSW5zaWRlRHJvcHBhYmxlIiwiZmlsdGVyIiwiZHJhZ2dhYmxlIiwic29ydCIsImEiLCJiIiwidHJ5R2V0RGVzdGluYXRpb24iLCJpbXBhY3QiLCJhdCIsInRyeUdldENvbWJpbmUiLCJyZW1vdmVEcmFnZ2FibGVGcm9tTGlzdCIsInJlbW92ZSIsImxpc3QiLCJpdGVtIiwibW92ZVRvTmV4dENvbWJpbmUiLCJpc01vdmluZ0ZvcndhcmQiLCJpbnNpZGVEZXN0aW5hdGlvbiIsInByZXZpb3VzSW1wYWN0IiwiaXNDb21iaW5lRW5hYmxlZCIsImdldEltcGFjdCIsImFsbCIsImRpc3BsYWNlZCIsImNsb3Nlc3RJZCIsImxlbmd0aCIsIndpdGhvdXREcmFnZ2FibGUiLCJsYXN0IiwiaW5kZXhPZkNsb3Nlc3QiLCJmaW5kSW5kZXgiLCJkIiwicHJvcG9zZWRJbmRleCIsImJlZm9yZSIsImlzSG9tZU9mIiwibm9EaXNwbGFjZWRCeSIsImVtcHR5R3JvdXBzIiwiaW52aXNpYmxlIiwidmlzaWJsZSIsIm5vSW1wYWN0IiwiZGlzcGxhY2VkQnkiLCJub0ltcGFjdCQxIiwiaXNXaXRoaW4iLCJsb3dlckJvdW5kIiwidXBwZXJCb3VuZCIsImlzUGFydGlhbGx5VmlzaWJsZVRocm91Z2hGcmFtZSIsImlzV2l0aGluVmVydGljYWwiLCJpc1dpdGhpbkhvcml6b250YWwiLCJpc0NvbnRhaW5lZCIsImlzUGFydGlhbGx5VmlzaWJsZVZlcnRpY2FsbHkiLCJpc1BhcnRpYWxseVZpc2libGVIb3Jpem9udGFsbHkiLCJpc1BhcnRpYWxseUNvbnRhaW5lZCIsImlzQmlnZ2VyVmVydGljYWxseSIsImlzQmlnZ2VySG9yaXpvbnRhbGx5IiwiaXNUYXJnZXRCaWdnZXJUaGFuRnJhbWUiLCJpc1RhcmdldEJpZ2dlck9uT25lQXhpcyIsImlzVG90YWxseVZpc2libGVUaHJvdWdoRnJhbWUiLCJ2ZXJ0aWNhbCIsImRpcmVjdGlvbiIsImNyb3NzQXhpc0xpbmUiLCJzaXplIiwiY3Jvc3NBeGlzU3RhcnQiLCJjcm9zc0F4aXNFbmQiLCJjcm9zc0F4aXNTaXplIiwiaG9yaXpvbnRhbCIsImlzVG90YWxseVZpc2libGVUaHJvdWdoRnJhbWVPbkF4aXMiLCJnZXREcm9wcGFibGVEaXNwbGFjZWQiLCJpc1Zpc2libGVJbkRyb3BwYWJsZSIsImlzVmlzaWJsZVRocm91Z2hGcmFtZUZuIiwiaXNWaXNpYmxlSW5WaWV3cG9ydCIsInZpZXdwb3J0IiwiaXNWaXNpYmxlJDEiLCJ0b0JlRGlzcGxhY2VkIiwid2l0aERyb3BwYWJsZURpc3BsYWNlbWVudCIsImRpc3BsYWNlZFRhcmdldCIsImlzUGFydGlhbGx5VmlzaWJsZSIsImlzVG90YWxseVZpc2libGUiLCJpc1RvdGFsbHlWaXNpYmxlT25BeGlzIiwiZ2V0U2hvdWxkQW5pbWF0ZSIsImZvcmNlU2hvdWxkQW5pbWF0ZSIsInNob3VsZEFuaW1hdGUiLCJnZXRUYXJnZXQiLCJleHBhbmRCeSIsImdldERpc3BsYWNlbWVudEdyb3VwcyIsImFmdGVyRHJhZ2dpbmciLCJncm91cHMiLCJwdXNoIiwiaXNWaXNpYmxlIiwiZ2V0SW5kZXhPZkxhc3RJdGVtIiwiaW5kZXhPZkxhc3RJdGVtIiwiZ29BdEVuZCIsIm5ld0luZGV4IiwiY2FsY3VsYXRlUmVvcmRlckltcGFjdCIsIm1hdGNoIiwiZmluZCIsIndpdGhvdXREcmFnZ2luZyIsInNsaWNlRnJvbSIsImluZGV4T2YiLCJpbXBhY3RlZCIsInNsaWNlIiwiZGlkU3RhcnRBZnRlckNyaXRpY2FsIiwiYWZ0ZXJDcml0aWNhbCIsIkJvb2xlYW4iLCJlZmZlY3RlZCIsImZyb21Db21iaW5lIiwiY29tYmluZUlkIiwiY29tYmluZVdpdGgiLCJjb21iaW5lV2l0aEluZGV4IiwiZGlkQ29tYmluZVdpdGhTdGFydEFmdGVyQ3JpdGljYWwiLCJmcm9tUmVvcmRlciIsImN1cnJlbnRJbmRleCIsImZpcnN0SW5kZXgiLCJsYXN0SW5kZXgiLCJtb3ZlVG9OZXh0SW5kZXgiLCJ3YXNBdCIsImdldENvbWJpbmVkSXRlbURpc3BsYWNlbWVudCIsImlzRGlzcGxhY2VkIiwid2hlbkNvbWJpbmluZyIsImNlbnRlciIsImJvcmRlckJveCIsImRpc3BsYWNlQnkiLCJkaXN0YW5jZUZyb21TdGFydFRvQm9yZGVyQm94Q2VudGVyIiwiYm94IiwibWFyZ2luIiwiZGlzdGFuY2VGcm9tRW5kVG9Cb3JkZXJCb3hDZW50ZXIiLCJnZXRDcm9zc0F4aXNCb3JkZXJCb3hDZW50ZXIiLCJpc01vdmluZyIsImdvQWZ0ZXIiLCJtb3ZlUmVsYXRpdmVUbyIsImdvQmVmb3JlIiwiZ29JbnRvU3RhcnQiLCJtb3ZlSW50byIsImNvbnRlbnRCb3giLCJ3aGVuUmVvcmRlcmluZyIsImRyYWdnYWJsZVBhZ2UiLCJjbG9zZXN0QWZ0ZXIiLCJjbG9zZXN0Iiwid2l0aERpc3BsYWNlbWVudCIsImdldFJlc3VsdFdpdGhvdXREcm9wcGFibGVEaXNwbGFjZW1lbnQiLCJvcmlnaW5hbCIsImdldFBhZ2VCb3JkZXJCb3hDZW50ZXJGcm9tSW1wYWN0Iiwid2l0aG91dERpc3BsYWNlbWVudCIsInNjcm9sbFZpZXdwb3J0IiwidXBkYXRlZCIsImdldERyYWdnYWJsZXMkMSIsImlkcyIsInRyeUdldFZpc2libGUiLCJpIiwic3BlY3VsYXRpdmVseUluY3JlYXNlIiwibWF4U2Nyb2xsQ2hhbmdlIiwic2Nyb2xsZWRWaWV3cG9ydCIsInNjcm9sbGVkRHJvcHBhYmxlIiwid2l0aFZpZXdwb3J0U2Nyb2xsIiwid2l0aERyb3BwYWJsZVNjcm9sbCIsIm5ld0ltcGFjdCIsIndpdGhWaWV3cG9ydERpc3BsYWNlbWVudCIsImdldENsaWVudEZyb21QYWdlQm9yZGVyQm94Q2VudGVyIiwicGFnZUJvcmRlckJveENlbnRlciIsIndpdGhvdXRQYWdlU2Nyb2xsQ2hhbmdlIiwiY2xpZW50IiwiaXNUb3RhbGx5VmlzaWJsZUluTmV3TG9jYXRpb24iLCJuZXdQYWdlQm9yZGVyQm94Q2VudGVyIiwib25seU9uTWFpbkF4aXMiLCJjaGFuZ2VOZWVkZWQiLCJzaGlmdGVkIiwibW92ZVRvTmV4dFBsYWNlIiwicHJldmlvdXNQYWdlQm9yZGVyQm94Q2VudGVyIiwicHJldmlvdXNDbGllbnRTZWxlY3Rpb24iLCJpc0VuYWJsZWQiLCJpc1Zpc2libGVJbk5ld0xvY2F0aW9uIiwiY2xpZW50U2VsZWN0aW9uIiwic2Nyb2xsSnVtcFJlcXVlc3QiLCJjYXV0aW91cyIsImdldEtub3duQWN0aXZlIiwicmVjdCIsImdldEJlc3RDcm9zc0F4aXNEcm9wcGFibGUiLCJpc0JldHdlZW5Tb3VyY2VDbGlwcGVkIiwiY2FuZGlkYXRlcyIsImFjdGl2ZU9mVGFyZ2V0IiwiaXNCZXR3ZWVuRGVzdGluYXRpb25DbGlwcGVkIiwiZmlyc3QiLCJzZWNvbmQiLCJhcnJheSIsImNvbnRhaW5zIiwiaXNXaXRoaW5Ecm9wcGFibGUiLCJnZXRDdXJyZW50UGFnZUJvcmRlckJveENlbnRlciIsImdldEN1cnJlbnRQYWdlQm9yZGVyQm94IiwiZ2V0Q2xvc2VzdERyYWdnYWJsZSIsInNvcnRlZCIsImRpc3RhbmNlVG9BIiwiZGlzdGFuY2VUb0IiLCJnZXREaXNwbGFjZWRCeSIsImdldFJlcXVpcmVkR3Jvd3RoRm9yUGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlclNpemUiLCJtb2RlIiwiYXZhaWxhYmxlU3BhY2UiLCJpbnNpZGVEcm9wcGFibGUiLCJzcGFjZVVzZWQiLCJzdW0iLCJkaW1lbnNpb24iLCJyZXF1aXJlZFNwYWNlIiwibmVlZHNUb0dyb3dCeSIsIndpdGhNYXhTY3JvbGwiLCJhZGRQbGFjZWhvbGRlciIsInJlcXVpcmVkR3Jvd3RoIiwiYWRkZWQiLCJvbGRGcmFtZU1heFNjcm9sbCIsIm1heFNjcm9sbCIsIm5ld0ZyYW1lIiwicmVtb3ZlUGxhY2Vob2xkZXIiLCJvbGRNYXhTY3JvbGwiLCJtb3ZlVG9OZXdEcm9wcGFibGUiLCJwcm9wb3NlZCIsInByb3Bvc2VkUGFnZUJvcmRlckJveENlbnRlciIsImlzR29pbmdCZWZvcmVUYXJnZXQiLCJyZWxhdGl2ZVRvIiwibW92ZUNyb3NzQXhpcyIsImlzT3ZlciIsIndoYXRJc0RyYWdnZWRPdmVyIiwiZ2V0RHJvcHBhYmxlT3ZlciQxIiwibW92ZUluRGlyZWN0aW9uIiwic3RhdGUiLCJpc0FjdHVhbGx5T3ZlciIsImRpbWVuc2lvbnMiLCJpc01haW5BeGlzTW92ZW1lbnRBbGxvd2VkIiwiaG9tZSIsImNyaXRpY2FsIiwiaXNNb3ZpbmdPbk1haW5BeGlzIiwiYm9yZGVyQm94Q2VudGVyIiwic2VsZWN0aW9uIiwiaXNNb3ZlbWVudEFsbG93ZWQiLCJwaGFzZSIsImlzUG9zaXRpb25JbkZyYW1lIiwicnVuIiwiZ2V0SGFzT3ZlcmxhcCIsImdldEZ1cnRoZXN0QXdheSIsInBhZ2VCb3JkZXJCb3giLCJzdGFydENlbnRlciIsImNhbmRpZGF0ZSIsImdldERyb3BwYWJsZU92ZXIiLCJjaGlsZENlbnRlciIsImlzU3RhcnRDb250YWluZWQiLCJpc0VuZENvbnRhaW5lZCIsIm9mZnNldFJlY3RCeVBvc2l0aW9uIiwiYXJlYSIsImdldElzRGlzcGxhY2VkIiwiYXRJbmRleCIsImdldFJlb3JkZXJJbXBhY3QiLCJwYWdlQm9yZGVyQm94V2l0aERyb3BwYWJsZVNjcm9sbCIsInRhcmdldFJlY3QiLCJ0YXJnZXRTdGFydCIsInRhcmdldEVuZCIsImNoaWxkIiwiZGlkU3RhcnRBZnRlckNyaXRpY2FsJDEiLCJjb21iaW5lVGhyZXNob2xkRGl2aXNvciIsImdldENvbWJpbmVJbXBhY3QiLCJjaGlsZFJlY3QiLCJjaGlsZFNpemUiLCJ0aHJlc2hvbGQiLCJnZXREcmFnSW1wYWN0IiwicGFnZU9mZnNldCIsImRlc3RpbmF0aW9uSWQiLCJwYXRjaERyb3BwYWJsZU1hcCIsImNsZWFyVW51c2VkUGxhY2Vob2xkZXIiLCJub3ciLCJsYXN0RHJvcHBhYmxlIiwicmVjb21wdXRlUGxhY2Vob2xkZXJzIiwiY2xlYW5lZCIsInBhdGNoZWQiLCJmb3JjZWRDbGllbnRTZWxlY3Rpb24iLCJmb3JjZWREaW1lbnNpb25zIiwiZm9yY2VkVmlld3BvcnQiLCJmb3JjZWRJbXBhY3QiLCJ3aXRoVXBkYXRlZFBsYWNlaG9sZGVycyIsImdldERyYWdnYWJsZXMiLCJyZWNvbXB1dGUiLCJnZXRDbGllbnRCb3JkZXJCb3hDZW50ZXIiLCJyZWZyZXNoU25hcCIsIm1vdmVtZW50TW9kZSIsIm5lZWRzVmlzaWJpbGl0eUNoZWNrIiwiZ2V0SG9tZUxvY2F0aW9uIiwiZ2V0TGlmdEVmZmVjdCIsImluc2lkZUhvbWUiLCJyYXdJbmRleCIsImluVmlydHVhbExpc3QiLCJwYXRjaERpbWVuc2lvbk1hcCIsImtleSIsImZpbmlzaCIsIm9mZnNldERyYWdnYWJsZSIsIm9mZnNldCQxIiwiaW5pdGlhbFdpbmRvd1Njcm9sbCIsIm1vdmVkIiwicGxhY2Vob2xkZXIiLCJnZXRGcmFtZSIsImFkanVzdEFkZGl0aW9uc0ZvclNjcm9sbENoYW5nZXMiLCJhZGRpdGlvbnMiLCJ1cGRhdGVkRHJvcHBhYmxlcyIsIndpbmRvd1Njcm9sbENoYW5nZSIsIm1vZGlmaWVkIiwiZHJvcHBhYmxlU2Nyb2xsQ2hhbmdlIiwidG90YWxDaGFuZ2UiLCJ0aW1pbmdzS2V5IiwicHVibGlzaFdoaWxlRHJhZ2dpbmdJblZpcnR1YWwiLCJwdWJsaXNoZWQiLCJ3aXRoU2Nyb2xsQ2hhbmdlIiwiZXhpc3RpbmciLCJ1cGRhdGVkQWRkaXRpb25zIiwicmVtb3ZhbHMiLCJ3YXNPdmVySWQiLCJ3YXNPdmVyIiwib25MaWZ0SW1wYWN0IiwiZHJhZ2dpbmdTdGF0ZSIsImRyb3BQZW5kaW5nIiwiaXNXYWl0aW5nIiwiaXNTbmFwcGluZyIsInBvc3REcm9wcGFibGVDaGFuZ2UiLCJpc0VuYWJsZWRDaGFuZ2luZyIsInJlbW92ZVNjcm9sbEp1bXBSZXF1ZXN0IiwiaWRsZSQyIiwiY29tcGxldGVkIiwic2hvdWxkRmx1c2giLCJyZWR1Y2VyIiwiYWN0aW9uIiwicGF5bG9hZCIsImlzV2luZG93U2Nyb2xsQWxsb3dlZCIsImV2ZXJ5IiwiaXNGaXhlZE9uUGFnZSIsIlN0cmluZyIsIm5ld1N0YXRlIiwiZHJvcER1cmF0aW9uIiwibmV3SG9tZUNsaWVudE9mZnNldCIsImJlZm9yZUluaXRpYWxDYXB0dXJlIiwibGlmdCQxIiwiaW5pdGlhbFB1Ymxpc2giLCJwdWJsaXNoV2hpbGVEcmFnZ2luZyIsImNvbGxlY3Rpb25TdGFydGluZyIsInVwZGF0ZURyb3BwYWJsZVNjcm9sbCIsInVwZGF0ZURyb3BwYWJsZUlzRW5hYmxlZCIsInVwZGF0ZURyb3BwYWJsZUlzQ29tYmluZUVuYWJsZWQiLCJtb3ZlIiwibW92ZUJ5V2luZG93U2Nyb2xsIiwidXBkYXRlVmlld3BvcnRNYXhTY3JvbGwiLCJtb3ZlVXAiLCJtb3ZlRG93biIsIm1vdmVSaWdodCIsIm1vdmVMZWZ0IiwiZmx1c2giLCJhbmltYXRlRHJvcCIsImNvbXBsZXRlRHJvcCIsImRyb3AkMSIsImRyb3BBbmltYXRpb25GaW5pc2hlZCIsImNoZWNrSW5kZXhlcyIsImluZGV4ZXMiLCJlcnJvcnMiLCJrZXlzIiwiZm9ybWF0dGVkIiwiaGFzRXJyb3IiLCJqb2luIiwidmFsaWRhdGVEaW1lbnNpb25zIiwibGlmdCIsIm1hcnNoYWwiLCJnZXRTdGF0ZSIsImRpc3BhdGNoIiwibmV4dCIsInNjcm9sbE9wdGlvbnMiLCJzaG91bGRQdWJsaXNoSW1tZWRpYXRlbHkiLCJyZXF1ZXN0Iiwic3RhcnRQdWJsaXNoaW5nIiwic3R5bGUiLCJkcmFnZ2luZyIsImRyb3BwaW5nIiwicmVzdGluZyIsImN1cnZlcyIsIm91dE9mVGhlV2F5IiwiZHJvcCIsIm9wYWNpdHkiLCJjb21iaW5pbmciLCJzY2FsZSIsInRpbWluZ3MiLCJtaW5Ecm9wVGltZSIsIm1heERyb3BUaW1lIiwib3V0T2ZUaGVXYXlUaW1pbmciLCJ0cmFuc2l0aW9ucyIsImZsdWlkIiwic25hcCIsImR1cmF0aW9uIiwidGltaW5nIiwibW92ZVRvIiwidW5kZWZpbmVkIiwidHJhbnNmb3JtcyIsImlzQ29tYmluaW5nIiwidHJhbnNsYXRlIiwiZHJvcFRpbWVSYW5nZSIsIm1heERyb3BUaW1lQXREaXN0YW5jZSIsImNhbmNlbERyb3BNb2RpZmllciIsImdldERyb3BEdXJhdGlvbiIsImRpc3RhbmNlJDEiLCJwZXJjZW50YWdlIiwid2l0aER1cmF0aW9uIiwiTnVtYmVyIiwidG9GaXhlZCIsImdldE5ld0hvbWVDbGllbnRPZmZzZXQiLCJuZXdDbGllbnRDZW50ZXIiLCJnZXREcm9wSW1wYWN0IiwibGFzdEltcGFjdCIsInJlY29tcHV0ZWRIb21lSW1wYWN0IiwiZGlkRHJvcEluc2lkZURyb3BwYWJsZSIsIndpdGhvdXRNb3ZlbWVudCIsImRyb3BNaWRkbGV3YXJlIiwiaXNXYWl0aW5nRm9yRHJvcCIsImlzQW5pbWF0aW9uUmVxdWlyZWQiLCJnZXRXaW5kb3dTY3JvbGwiLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiZ2V0V2luZG93U2Nyb2xsQmluZGluZyIsInBhc3NpdmUiLCJjYXB0dXJlIiwiZG9jdW1lbnQiLCJnZXRTY3JvbGxMaXN0ZW5lciIsIm9uV2luZG93U2Nyb2xsIiwidXBkYXRlU2Nyb2xsIiwic2NoZWR1bGVkIiwiaXNBY3RpdmUiLCJzdG9wIiwiY2FuY2VsIiwic2hvdWxkRW5kIiwic2Nyb2xsTGlzdGVuZXIiLCJzdG9yZSIsImxpc3RlbmVyIiwic2Nyb2xsTGlzdGVuZXIkMSIsImdldEV4cGlyaW5nQW5ub3VuY2UiLCJhbm5vdW5jZSIsIndhc0NhbGxlZCIsImlzRXhwaXJlZCIsInRpbWVvdXRJZCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJnZXRBc3luY01hcnNoYWwiLCJlbnRyaWVzIiwiZXhlY3V0ZSIsInRpbWVySWQiLCJlbnRyeSIsInNwbGljZSIsImNhbGxiYWNrIiwic2hhbGxvdyIsImFyZUxvY2F0aW9uc0VxdWFsIiwiaXNDb21iaW5lRXF1YWwiLCJpc0NyaXRpY2FsRXF1YWwiLCJpc0RyYWdnYWJsZUVxdWFsIiwiaXNEcm9wcGFibGVFcXVhbCIsIndpdGhUaW1pbmdzIiwiZ2V0RHJhZ1N0YXJ0IiwicmVzcG9uZGVyIiwiZGF0YSIsImdldERlZmF1bHRNZXNzYWdlIiwid2lsbEV4cGlyZSIsInByb3ZpZGVkIiwiZ2V0UHVibGlzaGVyIiwiZ2V0UmVzcG9uZGVycyIsImFzeW5jTWFyc2hhbCIsImJlZm9yZUNhcHR1cmUiLCJvbkJlZm9yZUNhcHR1cmUiLCJiZWZvcmVTdGFydCIsIm9uQmVmb3JlRHJhZ1N0YXJ0IiwibGFzdENyaXRpY2FsIiwibGFzdExvY2F0aW9uIiwibGFzdENvbWJpbmUiLCJoYXNDcml0aWNhbENoYW5nZWQiLCJoYXNMb2NhdGlvbkNoYW5nZWQiLCJoYXNHcm91cGluZ0NoYW5nZWQiLCJhYm9ydCIsInJlc3BvbmRlcnMiLCJwdWJsaXNoZXIiLCJkcm9wQW5pbWF0aW9uRmluaXNoTWlkZGxld2FyZSIsImRyb3BBbmltYXRpb25GaW5pc2giLCJkcm9wQW5pbWF0aW9uRmx1c2hPblNjcm9sbE1pZGRsZXdhcmUiLCJmcmFtZUlkIiwiY2xlYXIiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIm9uY2UiLCJmbHVzaERyb3BBbmltYXRpb24iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJkcm9wQW5pbWF0aW9uRmx1c2hPblNjcm9sbCIsImRpbWVuc2lvbk1hcnNoYWxTdG9wcGVyIiwic3RvcFB1Ymxpc2hpbmciLCJmb2N1cyIsImlzV2F0Y2hpbmciLCJ0cnlSZWNvcmRGb2N1cyIsInRyeVJlc3RvcmVGb2N1c1JlY29yZGVkIiwidHJ5U2hpZnRSZWNvcmQiLCJzaG91bGRTdG9wIiwiYXV0b1Njcm9sbCIsImF1dG9TY3JvbGxlciIsInBlbmRpbmdEcm9wIiwicG9zdEFjdGlvblN0YXRlIiwicGVuZGluZ0Ryb3AkMSIsImNvbXBvc2VFbmhhbmNlcnMiLCJfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9DT01QT1NFX18iLCJuYW1lIiwiZGltZW5zaW9uTWFyc2hhbCIsImZvY3VzTWFyc2hhbCIsInN0eWxlTWFyc2hhbCIsImNsZWFuJDEiLCJjcmVhdGVQdWJsaXNoZXIiLCJyZWdpc3RyeSIsInN0YWdpbmciLCJjb2xsZWN0IiwiZ2V0QnlJZCIsImdldERpbWVuc2lvbiIsImdldFNjcm9sbFdoaWxlRHJhZ2dpbmciLCJwdWJsaXNoIiwiZ2V0TWF4U2Nyb2xsIiwic2Nyb2xsSGVpZ2h0Iiwic2Nyb2xsV2lkdGgiLCJhZGp1c3RlZE1heFNjcm9sbCIsImdldERvY3VtZW50RWxlbWVudCIsImRvYyIsImRvY3VtZW50RWxlbWVudCIsImdldE1heFdpbmRvd1Njcm9sbCIsImNsaWVudFdpZHRoIiwiY2xpZW50SGVpZ2h0IiwiZ2V0Vmlld3BvcnQiLCJnZXRJbml0aWFsUHVibGlzaCIsIndpbmRvd1Njcm9sbCIsImdldEFsbEJ5VHlwZSIsImdldERpbWVuc2lvbkFuZFdhdGNoU2Nyb2xsIiwic2hvdWxkUHVibGlzaFVwZGF0ZSIsImNyZWF0ZURpbWVuc2lvbk1hcnNoYWwiLCJjb2xsZWN0aW9uIiwiZXhpc3RzIiwiY2hhbmdlIiwiZHJhZ1N0b3BwZWQiLCJ1bnN1YnNjcmliZSIsInN1YnNjcmliZXIiLCJzdWJzY3JpYmUiLCJjYW5TdGFydERyYWciLCJzY3JvbGxXaW5kb3ciLCJzY3JvbGxCeSIsImdldFNjcm9sbGFibGVEcm9wcGFibGVzIiwiZ2V0U2Nyb2xsYWJsZURyb3BwYWJsZU92ZXIiLCJtYXliZSIsImdldEJlc3RTY3JvbGxhYmxlRHJvcHBhYmxlIiwiZGVmYXVsdEF1dG9TY3JvbGxlck9wdGlvbnMiLCJzdGFydEZyb21QZXJjZW50YWdlIiwibWF4U2Nyb2xsQXRQZXJjZW50YWdlIiwibWF4UGl4ZWxTY3JvbGwiLCJlYXNlIiwiZHVyYXRpb25EYW1wZW5pbmciLCJzdG9wRGFtcGVuaW5nQXQiLCJhY2NlbGVyYXRlQXQiLCJkaXNhYmxlZCIsImdldERpc3RhbmNlVGhyZXNob2xkcyIsImNvbnRhaW5lciIsImdldEF1dG9TY3JvbGxlck9wdGlvbnMiLCJhdXRvU2Nyb2xsZXJPcHRpb25zIiwic3RhcnRTY3JvbGxpbmdGcm9tIiwibWF4U2Nyb2xsVmFsdWVBdCIsInRocmVzaG9sZHMiLCJnZXRQZXJjZW50YWdlIiwic3RhcnRPZlJhbmdlIiwiZW5kT2ZSYW5nZSIsInJhbmdlIiwiY3VycmVudEluUmFuZ2UiLCJtaW5TY3JvbGwiLCJnZXRWYWx1ZUZyb21EaXN0YW5jZSIsImRpc3RhbmNlVG9FZGdlIiwicGVyY2VudGFnZUZyb21NYXhTY3JvbGxWYWx1ZUF0IiwicGVyY2VudGFnZUZyb21TdGFydFNjcm9sbGluZ0Zyb20iLCJjZWlsIiwiZGFtcGVuVmFsdWVCeVRpbWUiLCJwcm9wb3NlZFNjcm9sbCIsImRyYWdTdGFydFRpbWUiLCJzdG9wQXQiLCJEYXRlIiwicnVuVGltZSIsImJldHdlZW5BY2NlbGVyYXRlQXRBbmRTdG9wQXRQZXJjZW50YWdlIiwiZ2V0VmFsdWUiLCJzaG91bGRVc2VUaW1lRGFtcGVuaW5nIiwiZ2V0U2Nyb2xsT25BeGlzIiwiZGlzdGFuY2VUb0VkZ2VzIiwiaXNDbG9zZXJUb0VuZCIsImFkanVzdEZvclNpemVMaW1pdHMiLCJpc1Rvb0JpZ1ZlcnRpY2FsbHkiLCJpc1Rvb0JpZ0hvcml6b250YWxseSIsImNsZWFuIiwiZ2V0U2Nyb2xsJDEiLCJyZXF1aXJlZCIsImxpbWl0ZWQiLCJzbWFsbGVzdFNpZ25lZCIsImdldE92ZXJsYXAiLCJnZXRSZW1haW5kZXIiLCJ0YXJnZXRTY3JvbGwiLCJvdmVybGFwIiwiY2FuUGFydGlhbGx5U2Nyb2xsIiwicmF3TWF4Iiwic21hbGxlc3RDaGFuZ2UiLCJjYW5TY3JvbGxXaW5kb3ciLCJnZXRXaW5kb3dPdmVybGFwIiwiY2FuU2Nyb2xsRHJvcHBhYmxlIiwiZ2V0RHJvcHBhYmxlT3ZlcmxhcCIsImdldFdpbmRvd1Njcm9sbENoYW5nZSIsImdldERyb3BwYWJsZVNjcm9sbENoYW5nZSIsImNyZWF0ZUZsdWlkU2Nyb2xsZXIiLCJzY2hlZHVsZVdpbmRvd1Njcm9sbCIsInNjaGVkdWxlRHJvcHBhYmxlU2Nyb2xsIiwidHJ5U2Nyb2xsIiwic3RhcnQkMSIsIndhc1Njcm9sbE5lZWRlZCIsImZha2VTY3JvbGxDYWxsYmFjayIsImNyZWF0ZUp1bXBTY3JvbGxlciIsIm1vdmVCeU9mZnNldCIsInNjcm9sbERyb3BwYWJsZUFzTXVjaEFzSXRDYW4iLCJ3aGF0VGhlRHJvcHBhYmxlQ2FuU2Nyb2xsIiwicmVtYWluZGVyIiwic2Nyb2xsV2luZG93QXNNdWNoQXNJdENhbiIsIndoYXRUaGVXaW5kb3dDYW5TY3JvbGwiLCJqdW1wU2Nyb2xsZXIiLCJkcm9wcGFibGVSZW1haW5kZXIiLCJ3aW5kb3dSZW1haW5kZXIiLCJjcmVhdGVBdXRvU2Nyb2xsZXIiLCJmbHVpZFNjcm9sbGVyIiwianVtcFNjcm9sbCIsInNjcm9sbGVyIiwicHJlZml4IiwiZHJhZ0hhbmRsZSIsImJhc2UiLCJjb250ZXh0SWQiLCJzY3JvbGxDb250YWluZXIiLCJtYWtlR2V0U2VsZWN0b3IiLCJjb250ZXh0IiwiYXR0cmlidXRlIiwiZ2V0U3R5bGVzIiwicnVsZXMiLCJwcm9wZXJ0eSIsInJ1bGUiLCJzdHlsZXMiLCJzZWxlY3RvciIsIm5vUG9pbnRlckV2ZW50cyIsImdldFN0eWxlcyQxIiwiZ2V0U2VsZWN0b3IiLCJkcmFnSGFuZGxlJDEiLCJncmFiQ3Vyc29yIiwiYWx3YXlzIiwiZHJvcEFuaW1hdGluZyIsImRyYWdnYWJsZSQxIiwidHJhbnNpdGlvbiIsInVzZXJDYW5jZWwiLCJkcm9wcGFibGUkMSIsImJvZHkiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IiwiY3JlYXRlRWxlbWVudCIsImdldEhlYWQiLCJoZWFkIiwicXVlcnlTZWxlY3RvciIsImNyZWF0ZVN0eWxlRWwiLCJub25jZSIsInNldEF0dHJpYnV0ZSIsInVzZVN0eWxlTWFyc2hhbCIsImFsd2F5c1JlZiIsImR5bmFtaWNSZWYiLCJzZXREeW5hbWljU3R5bGUiLCJ0ZXh0Q29udGVudCIsInNldEFsd2F5c1N0eWxlIiwiZHluYW1pYyIsImFwcGVuZENoaWxkIiwicmVmIiwicmVtb3ZlQ2hpbGQiLCJxdWVyeVNlbGVjdG9yQWxsIiwicGFyZW50Tm9kZSIsIkFycmF5IiwiZnJvbSIsImdldFdpbmRvd0Zyb21FbCIsIm93bmVyRG9jdW1lbnQiLCJkZWZhdWx0VmlldyIsImlzSHRtbEVsZW1lbnQiLCJIVE1MRWxlbWVudCIsImZpbmREcmFnSGFuZGxlIiwicG9zc2libGUiLCJoYW5kbGUiLCJnZXRBdHRyaWJ1dGUiLCJ1c2VGb2N1c01hcnNoYWwiLCJlbnRyaWVzUmVmIiwicmVjb3JkUmVmIiwicmVzdG9yZUZvY3VzRnJhbWVSZWYiLCJpc01vdW50ZWRSZWYiLCJyZWdpc3RlciIsInVucmVnaXN0ZXIiLCJ0cnlHaXZlRm9jdXMiLCJ0cnlHaXZlRm9jdXNUbyIsImFjdGl2ZUVsZW1lbnQiLCJyZWRpcmVjdFRvIiwicmVjb3JkIiwiZm9jdXNlZCIsImNsZWFyRnJhbWVPblVubW91bnQiLCJjcmVhdGVSZWdpc3RyeSIsInN1YnNjcmliZXJzIiwiY2IiLCJub3RpZnkiLCJmaW5kRHJhZ2dhYmxlQnlJZCIsImdldERyYWdnYWJsZUJ5SWQiLCJkcmFnZ2FibGVBUEkiLCJ1bmlxdWVJZCIsImZpbmRCeUlkIiwiZmluZERyb3BwYWJsZUJ5SWQiLCJnZXREcm9wcGFibGVCeUlkIiwiZHJvcHBhYmxlQVBJIiwidXNlUmVnaXN0cnkiLCJ1bm1vdW50IiwidmVyc2lvbiIsInN0YXJ0c1dpdGgiLCJTdG9yZUNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiZ2V0Qm9keUVsZW1lbnQiLCJ2aXN1YWxseUhpZGRlbiIsImJvcmRlciIsInBhZGRpbmciLCJvdmVyZmxvdyIsInZpc3VhbGx5SGlkZGVuJDEiLCJnZXRJZCIsInVzZUFubm91bmNlciIsInNldHVwIiwiY2xlYW51cCIsImNvdW50JDEiLCJkZWZhdWx0cyIsInNlcGFyYXRvciIsInJlc2V0RGVwcmVjYXRlZFVuaXF1ZUlkIiwidXNlRGVwcmVjYXRlZFVuaXF1ZUlkIiwidXNlVW5pcXVlSWQiLCJ1c2VJZCIsInVzZVVuaXF1ZUlkJDEiLCJnZXRFbGVtZW50SWQiLCJ1c2VIaWRkZW5UZXh0RWxlbWVudCIsInRleHQiLCJtb3VudCIsImRpc3BsYXkiLCJBcHBDb250ZXh0IiwicGVlckRlcGVuZGVuY2llcyIsInJlYWN0Iiwic2VtdmVyIiwiZ2V0VmVyc2lvbiIsImV4ZWMiLCJtYWpvciIsIm1pbm9yIiwicmF3IiwiaXNTYXRpc2ZpZWQiLCJleHBlY3RlZCIsImFjdHVhbCIsImNoZWNrUmVhY3RWZXJzaW9uIiwicGVlckRlcFZhbHVlIiwiYWN0dWFsVmFsdWUiLCJwZWVyRGVwIiwic3VmZml4IiwiY2hlY2tEb2N0eXBlIiwiZG9jdHlwZSIsInRvTG93ZXJDYXNlIiwicHVibGljSWQiLCJ1c2VEZXYiLCJ1c2VIb29rIiwidXNlRGV2U2V0dXBXYXJuaW5nIiwiaW5wdXRzIiwiZSIsInVzZVN0YXJ0dXBWYWxpZGF0aW9uIiwidXNlUHJldmlvdXMiLCJjcmVhdGUiLCJsb2NrIiwiaXNDbGFpbWVkIiwiY2xhaW0iLCJhYmFuZG9uIiwibmV3TG9jayIsInJlbGVhc2UiLCJ0cnlBYmFuZG9uIiwidGFiIiwiZW50ZXIiLCJlc2NhcGUiLCJzcGFjZSIsInBhZ2VVcCIsInBhZ2VEb3duIiwiYXJyb3dMZWZ0IiwiYXJyb3dVcCIsImFycm93UmlnaHQiLCJhcnJvd0Rvd24iLCJwcmV2ZW50ZWRLZXlzIiwicHJldmVudFN0YW5kYXJkS2V5RXZlbnRzIiwia2V5Q29kZSIsInN1cHBvcnRlZEV2ZW50TmFtZSIsInN1cHBvcnRlZCIsInN1cHBvcnRlZFBhZ2VWaXNpYmlsaXR5RXZlbnROYW1lIiwicHJpbWFyeUJ1dHRvbiIsInNsb3BweUNsaWNrVGhyZXNob2xkIiwiaXNTbG9wcHlDbGlja1RocmVzaG9sZEV4Y2VlZGVkIiwiYWJzIiwiaWRsZSQxIiwiZ2V0Q2FwdHVyZUJpbmRpbmdzIiwiZ2V0UGhhc2UiLCJzZXRQaGFzZSIsImJ1dHRvbiIsImNsaWVudFgiLCJjbGllbnRZIiwiYWN0aW9ucyIsInBlbmRpbmciLCJmbHVpZExpZnQiLCJzaG91bGRCbG9ja05leHRDbGljayIsInNob3VsZFJlc3BlY3RGb3JjZVByZXNzIiwidXNlTW91c2VTZW5zb3IiLCJhcGkiLCJwaGFzZVJlZiIsInVuYmluZEV2ZW50c1JlZiIsInN0YXJ0Q2FwdHVyZUJpbmRpbmciLCJvbk1vdXNlRG93biIsImRlZmF1bHRQcmV2ZW50ZWQiLCJjdHJsS2V5IiwibWV0YUtleSIsInNoaWZ0S2V5IiwiYWx0S2V5IiwiZmluZENsb3Nlc3REcmFnZ2FibGVJZCIsInRyeUdldExvY2siLCJzb3VyY2VFdmVudCIsInN0YXJ0UGVuZGluZ0RyYWciLCJwcmV2ZW50Rm9yY2VQcmVzc0JpbmRpbmciLCJmaW5kT3B0aW9uc0ZvckRyYWdnYWJsZSIsImNhbkdldExvY2siLCJsaXN0ZW5Gb3JDYXB0dXJlIiwiYmluZENhcHR1cmluZ0V2ZW50cyIsIm5vb3AkMSIsInNjcm9sbEp1bXBLZXlzIiwiZ2V0RHJhZ2dpbmdCaW5kaW5ncyIsInVzZUtleWJvYXJkU2Vuc29yIiwib25LZXlEb3duIiwicHJlRHJhZyIsImlzQ2FwdHVyaW5nIiwic25hcExpZnQiLCJ0cnlTdGFydENhcHR1cmUiLCJpZGxlIiwidGltZUZvckxvbmdQcmVzcyIsImZvcmNlUHJlc3NUaHJlc2hvbGQiLCJnZXRXaW5kb3dCaW5kaW5ncyIsImdldEhhbmRsZUJpbmRpbmdzIiwiaGFzTW92ZWQiLCJ0b3VjaGVzIiwidG91Y2giLCJpc0ZvcmNlUHJlc3MiLCJmb3JjZSIsInNob3VsZFJlc3BlY3QiLCJ1c2VUb3VjaFNlbnNvciIsIm9uVG91Y2hTdGFydCIsImxvbmdQcmVzc1RpbWVySWQiLCJ1bmJpbmRUYXJnZXQiLCJ1bmJpbmRXaW5kb3ciLCJzdGFydERyYWdnaW5nIiwid2Via2l0SGFjayIsInVzZVZhbGlkYXRlU2Vuc29ySG9va3MiLCJzZW5zb3JIb29rcyIsInByZXZpb3VzUmVmIiwiaW50ZXJhY3RpdmVUYWdOYW1lcyIsImlzQW5JbnRlcmFjdGl2ZUVsZW1lbnQiLCJwYXJlbnQiLCJoYXNBbkludGVyYWN0aXZlVGFnIiwiaW5jbHVkZXMiLCJ0YWdOYW1lIiwicGFyZW50RWxlbWVudCIsImlzRXZlbnRJbkludGVyYWN0aXZlRWxlbWVudCIsImdldEJvcmRlckJveENlbnRlclBvc2l0aW9uIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaXNFbGVtZW50IiwiRWxlbWVudCIsInN1cHBvcnRlZE1hdGNoZXNOYW1lIiwiY2xvc2VzdFBvbnlmaWxsIiwiZmluZENsb3Nlc3REcmFnSGFuZGxlRnJvbUV2ZW50IiwidHJ5R2V0Q2xvc2VzdERyYWdnYWJsZUlkRnJvbUV2ZW50IiwiZmluZERyYWdnYWJsZSIsImlzTG9ja0FjdGl2ZSIsInNob3VsZFdhcm4iLCJjYW5TdGFydCIsImxvY2tBUEkiLCJ0cnlTdGFydCIsImZvcmNlU2Vuc29yU3RvcCIsInNob3VsZFN0YXJ0IiwiY2FuRHJhZ0ludGVyYWN0aXZlRWxlbWVudHMiLCJnZXRTaG91bGRSZXNwZWN0Rm9yY2VQcmVzcyIsInRyeURpc3BhdGNoIiwiZ2V0QWN0aW9uIiwidHJ5RGlzcGF0Y2hXaGVuRHJhZ2dpbmciLCJsaWZ0QWN0aW9uQXJncyIsIm1vdmUkMSIsImFib3J0UHJlRHJhZyIsInNob3VsZFJlbGVhc2UiLCJkZWZhdWx0U2Vuc29ycyIsInVzZVNlbnNvck1hcnNoYWwiLCJjdXN0b21TZW5zb3JzIiwiZW5hYmxlRGVmYXVsdFNlbnNvcnMiLCJ1c2VTZW5zb3JzIiwidHJ5QWJhbmRvbkxvY2siLCJsaXN0ZW5Ub1N0b3JlIiwiZm9yY2VTdG9wIiwidHJ5UmVsZWFzZUxvY2siLCJpc0xvY2tDbGFpbWVkIiwiY3JlYXRlUmVzcG9uZGVycyIsInQiLCJvbkJlZm9yZUNhcHVyZUNhbGxiYWNrIiwiY3JlYXRlQXV0b1Njcm9sbGVyT3B0aW9ucyIsImdldFN0b3JlIiwibGF6eVJlZiIsIkFwcCIsInNlbnNvcnMiLCJsYXp5U3RvcmVSZWYiLCJsYXN0UHJvcHNSZWYiLCJkcmFnSGFuZGxlVXNhZ2VJbnN0cnVjdGlvbnNJZCIsImxhenlEaXNwYXRjaCIsIm1hcnNoYWxDYWxsYmFja3MiLCJ0cnlSZXNldFN0b3JlIiwiYXBwQ2FsbGJhY2tzIiwiZ2V0Q2FuTGlmdCIsImdldElzTW92ZW1lbnRBbGxvd2VkIiwiYXBwQ29udGV4dCIsImNhbkxpZnQiLCJjb3VudCIsInJlc2V0RGVwcmVjYXRlZFVuaXF1ZUNvbnRleHRJZCIsInVzZURlcHJlY2F0ZWRVbmlxdWVDb250ZXh0SWQiLCJ1c2VVbmlxdWVDb250ZXh0SWQiLCJ1c2VVbmlxdWVDb250ZXh0SWQkMSIsInJlc2V0U2VydmVyQ29udGV4dCIsIkRyYWdEcm9wQ29udGV4dCIsInpJbmRleE9wdGlvbnMiLCJnZXREcmFnZ2luZ1RyYW5zaXRpb24iLCJzaG91bGRBbmltYXRlRHJhZ01vdmVtZW50IiwiZ2V0RHJhZ2dpbmdPcGFjaXR5IiwiaXNEcm9wQW5pbWF0aW5nIiwiZ2V0U2hvdWxkRHJhZ2dpbmdBbmltYXRlIiwiZ2V0RHJhZ2dpbmdTdHlsZSIsInRyYW5zZm9ybSIsImJveFNpemluZyIsInpJbmRleCIsInBvaW50ZXJFdmVudHMiLCJnZXRTZWNvbmRhcnlTdHlsZSIsInNlY29uZGFyeSIsInNob3VsZEFuaW1hdGVEaXNwbGFjZW1lbnQiLCJnZXRTdHlsZSQxIiwibWFwcGVkIiwiZ2V0RGltZW5zaW9uJDEiLCJjb21wdXRlZFN0eWxlcyIsImdldENvbXB1dGVkU3R5bGUiLCJ1c2VEcmFnZ2FibGVQdWJsaXNoZXIiLCJnZXREcmFnZ2FibGVSZWYiLCJwdWJsaXNoZWRSZWYiLCJpc0ZpcnN0UHVibGlzaFJlZiIsIkRyb3BwYWJsZUNvbnRleHQiLCJjaGVja0lzVmFsaWRJbm5lclJlZiIsInVzZVZhbGlkYXRpb24kMSIsImdldFJlZiIsImlzSW50ZWdlciIsInVzZUNsb25lUHJvcFZhbGlkYXRpb24iLCJpc0Nsb25lIiwiaW5pdGlhbFJlZiIsInVzZVJlcXVpcmVkQ29udGV4dCIsIkNvbnRleHQiLCJwcmV2ZW50SHRtbDVEbmQiLCJEcmFnZ2FibGUiLCJzZXRSZWYiLCJkcm9wQW5pbWF0aW9uRmluaXNoZWRBY3Rpb24iLCJmb3JQdWJsaXNoZXIiLCJkcmFnSGFuZGxlUHJvcHMiLCJ0YWJJbmRleCIsInJvbGUiLCJvbk1vdmVFbmQiLCJwcm9wZXJ0eU5hbWUiLCJvblRyYW5zaXRpb25FbmQiLCJpbm5lclJlZiIsImRyYWdnYWJsZVByb3BzIiwicnVicmljIiwiRnJhZ21lbnQiLCJzbmFwc2hvdCIsIkRyYWdnYWJsZSQxIiwiaXNTdHJpY3RFcXVhbCIsIndoYXRJc0RyYWdnZWRPdmVyRnJvbVJlc3VsdCIsImdldENvbWJpbmVXaXRoRnJvbVJlc3VsdCIsImdldENvbWJpbmVXaXRoRnJvbUltcGFjdCIsImdldERyYWdnYWJsZVNlbGVjdG9yIiwibWVtb2l6ZWRPZmZzZXQiLCJnZXRNZW1vaXplZFNuYXBzaG90IiwiZHJhZ2dpbmdPdmVyIiwiZHJvcEFuaW1hdGlvbiIsImNvbWJpbmVUYXJnZXRGb3IiLCJnZXRNZW1vaXplZFByb3BzIiwib3duUHJvcHMiLCJjdXJ2ZSIsImdldFNlY29uZGFyeVNuYXBzaG90IiwiYXRSZXN0IiwiZ2V0U2Vjb25kYXJ5U2VsZWN0b3IiLCJnZXRGYWxsYmFjayIsImdldFByb3BzIiwib3duSWQiLCJkcmFnZ2luZ0lkIiwidmlzdWFsRGlzcGxhY2VtZW50IiwiaXNBZnRlckNyaXRpY2FsSW5WaXJ0dWFsTGlzdCIsIm1ha2VNYXBTdGF0ZVRvUHJvcHMkMSIsImRyYWdnaW5nU2VsZWN0b3IiLCJzZWNvbmRhcnlTZWxlY3RvciIsIm1hcERpc3BhdGNoVG9Qcm9wcyQxIiwiQ29ubmVjdGVkRHJhZ2dhYmxlIiwiYXJlU3RhdGVQcm9wc0VxdWFsIiwiQ29ubmVjdGVkRHJhZ2dhYmxlJDEiLCJQcml2YXRlRHJhZ2dhYmxlIiwiZHJvcHBhYmxlQ29udGV4dCIsImlzVXNpbmdDbG9uZUZvciIsIlB1YmxpY0RyYWdnYWJsZSIsImlzRHJhZ0Rpc2FibGVkIiwiZGlzYWJsZUludGVyYWN0aXZlRWxlbWVudEJsb2NraW5nIiwiaXNFcXVhbCIsImlzU2Nyb2xsIiwiaXNBdXRvIiwiaXNFaXRoZXIiLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJpc0JvdGgiLCJpc0VsZW1lbnRTY3JvbGxhYmxlIiwiaXNCb2R5U2Nyb2xsYWJsZSIsImh0bWwiLCJodG1sU3R5bGUiLCJodG1sT3ZlcmZsb3ciLCJnZXRDbG9zZXN0U2Nyb2xsYWJsZSIsImdldENsb3Nlc3RTY3JvbGxhYmxlJDEiLCJjaGVja0Zvck5lc3RlZFNjcm9sbENvbnRhaW5lcnMiLCJhbm90aGVyU2Nyb2xsUGFyZW50IiwiZ2V0U2Nyb2xsIiwic2Nyb2xsTGVmdCIsInNjcm9sbFRvcCIsImdldElzRml4ZWQiLCJnZXRFbnYiLCJjbG9zZXN0U2Nyb2xsYWJsZSIsImdldERyb3BwYWJsZURpbWVuc2lvbiIsInNjcm9sbFNpemUiLCJmcmFtZUNsaWVudCIsInBhZGRpbmdCb3giLCJnZXRDbGllbnQiLCJ0YXJnZXRSZWYiLCJlbnYiLCJpc0Ryb3BEaXNhYmxlZCIsImltbWVkaWF0ZSIsImRlbGF5ZWQiLCJnZXRMaXN0ZW5lck9wdGlvbnMiLCJnZXRDbG9zZXN0U2Nyb2xsYWJsZUZyb21EcmFnIiwidXNlRHJvcHBhYmxlUHVibGlzaGVyIiwid2hpbGVEcmFnZ2luZ1JlZiIsInB1Ymxpc2hlZERlc2NyaXB0b3JSZWYiLCJtZW1vaXplZFVwZGF0ZVNjcm9sbCIsImdldENsb3Nlc3RTY3JvbGwiLCJzY2hlZHVsZVNjcm9sbFVwZGF0ZSIsIm9uQ2xvc2VzdFNjcm9sbCIsImdldERyb3BwYWJsZVJlZiIsImlnbm9yZUNvbnRhaW5lckNsaXBwaW5nIiwicmVtb3ZlQXR0cmlidXRlIiwibm9vcCIsImVtcHR5IiwiZ2V0U2l6ZSIsImlzQW5pbWF0aW5nT3Blbk9uTW91bnQiLCJhbmltYXRlIiwiZ2V0U3R5bGUiLCJtYXJnaW5Ub3AiLCJtYXJnaW5SaWdodCIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpbkxlZnQiLCJmbGV4U2hyaW5rIiwiZmxleEdyb3ciLCJQbGFjZWhvbGRlciIsImFuaW1hdGVPcGVuVGltZXJSZWYiLCJ0cnlDbGVhckFuaW1hdGVPcGVuVGltZXIiLCJvbkNsb3NlIiwic2V0SXNBbmltYXRpbmdPcGVuT25Nb3VudCIsIm9uU2l6ZUNoYW5nZUVuZCIsIlBsYWNlaG9sZGVyJDEiLCJtZW1vIiwiaXNCb29sZWFuIiwicnVuQ2hlY2tzIiwiY2hlY2tzIiwiY2hlY2siLCJib29sZWFuIiwic3RhbmRhcmQiLCJnZXRQbGFjZWhvbGRlclJlZiIsInZpcnR1YWwiLCJoYXNDbG9uZSIsInJlbmRlckNsb25lIiwiaGFzTm9QbGFjZWhvbGRlciIsInVzZVZhbGlkYXRpb24iLCJBbmltYXRlSW5PdXQiLCJQdXJlQ29tcG9uZW50IiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwib24iLCJEcm9wcGFibGUiLCJkcm9wcGFibGVSZWYiLCJwbGFjZWhvbGRlclJlZiIsInVzZUNsb25lIiwiZ2V0Q29udGFpbmVyRm9yQ2xvbmUiLCJzZXREcm9wcGFibGVSZWYiLCJzZXRQbGFjZWhvbGRlclJlZiIsIm9uUGxhY2Vob2xkZXJUcmFuc2l0aW9uRW5kIiwic2hvdWxkQW5pbWF0ZVBsYWNlaG9sZGVyIiwiZHJvcHBhYmxlUHJvcHMiLCJnZXRDbG9uZSIsIm5vZGUiLCJkcmFnZ2FibGVQcm92aWRlZCIsImRyYWdnYWJsZVNuYXBzaG90IiwiY3JlYXRlUG9ydGFsIiwiRHJvcHBhYmxlJDEiLCJnZXRCb2R5IiwiZGVmYXVsdFByb3BzIiwiYXR0YWNoRGVmYXVsdFByb3BzVG9Pd25Qcm9wcyIsIm1lcmdlZFByb3BzIiwiZGVmYXVsdFByb3BLZXkiLCJpc01hdGNoaW5nVHlwZSIsImdldERyYWdnYWJsZSIsIm1ha2VNYXBTdGF0ZVRvUHJvcHMiLCJpZGxlV2l0aEFuaW1hdGlvbiIsImlzRHJhZ2dpbmdPdmVyIiwiZHJhZ2dpbmdPdmVyV2l0aCIsImRyYWdnaW5nRnJvbVRoaXNXaXRoIiwiaXNVc2luZ1BsYWNlaG9sZGVyIiwiaWRsZVdpdGhvdXRBbmltYXRpb24iLCJnZXREcmFnZ2FibGVSdWJyaWMiLCJnZXRNYXBQcm9wcyIsImlzRHJhZ2dpbmdPdmVyRm9yQ29uc3VtZXIiLCJpc0RyYWdnaW5nT3ZlckZvckltcGFjdCIsImlzSG9tZSIsIm93blByb3BzV2l0aERlZmF1bHRQcm9wcyIsIndhc0NvbWJpbmluZyIsIm1hcERpc3BhdGNoVG9Qcm9wcyIsIkNvbm5lY3RlZERyb3BwYWJsZSIsInN0YXRlUHJvcHMiLCJkaXNwYXRjaFByb3BzIiwiQ29ubmVjdGVkRHJvcHBhYmxlJDEiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@hello-pangea/dnd/dist/dnd.esm.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/css-box-model/dist/css-box-model.esm.js":
/*!**************************************************************!*\
!*** ./node_modules/css-box-model/dist/css-box-model.esm.js ***!
\**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ calculateBox: function() { return /* binding */ calculateBox; },\n/* harmony export */ createBox: function() { return /* binding */ createBox; },\n/* harmony export */ expand: function() { return /* binding */ expand; },\n/* harmony export */ getBox: function() { return /* binding */ getBox; },\n/* harmony export */ getRect: function() { return /* binding */ getRect; },\n/* harmony export */ offset: function() { return /* binding */ offset; },\n/* harmony export */ shrink: function() { return /* binding */ shrink; },\n/* harmony export */ withScroll: function() { return /* binding */ withScroll; }\n/* harmony export */ });\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tiny-invariant */ \"(app-pages-browser)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\");\n\nvar getRect = function getRect(_ref) {\n var top = _ref.top, right = _ref.right, bottom = _ref.bottom, left = _ref.left;\n var width = right - left;\n var height = bottom - top;\n var rect = {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: width,\n height: height,\n x: left,\n y: top,\n center: {\n x: (right + left) / 2,\n y: (bottom + top) / 2\n }\n };\n return rect;\n};\nvar expand = function expand(target, expandBy) {\n return {\n top: target.top - expandBy.top,\n left: target.left - expandBy.left,\n bottom: target.bottom + expandBy.bottom,\n right: target.right + expandBy.right\n };\n};\nvar shrink = function shrink(target, shrinkBy) {\n return {\n top: target.top + shrinkBy.top,\n left: target.left + shrinkBy.left,\n bottom: target.bottom - shrinkBy.bottom,\n right: target.right - shrinkBy.right\n };\n};\nvar shift = function shift(target, shiftBy) {\n return {\n top: target.top + shiftBy.y,\n left: target.left + shiftBy.x,\n bottom: target.bottom + shiftBy.y,\n right: target.right + shiftBy.x\n };\n};\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nvar createBox = function createBox(_ref2) {\n var borderBox = _ref2.borderBox, _ref2$margin = _ref2.margin, margin = _ref2$margin === void 0 ? noSpacing : _ref2$margin, _ref2$border = _ref2.border, border = _ref2$border === void 0 ? noSpacing : _ref2$border, _ref2$padding = _ref2.padding, padding = _ref2$padding === void 0 ? noSpacing : _ref2$padding;\n var marginBox = getRect(expand(borderBox, margin));\n var paddingBox = getRect(shrink(borderBox, border));\n var contentBox = getRect(shrink(paddingBox, padding));\n return {\n marginBox: marginBox,\n borderBox: getRect(borderBox),\n paddingBox: paddingBox,\n contentBox: contentBox,\n margin: margin,\n border: border,\n padding: padding\n };\n};\nvar parse = function parse(raw) {\n var value = raw.slice(0, -2);\n var suffix = raw.slice(-2);\n if (suffix !== \"px\") {\n return 0;\n }\n var result = Number(value);\n !!isNaN(result) ? true ? (0,tiny_invariant__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(false, \"Could not parse value [raw: \" + raw + \", without suffix: \" + value + \"]\") : 0 : void 0;\n return result;\n};\nvar getWindowScroll = function getWindowScroll() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};\nvar offset = function offset(original, change) {\n var borderBox = original.borderBox, border = original.border, margin = original.margin, padding = original.padding;\n var shifted = shift(borderBox, change);\n return createBox({\n borderBox: shifted,\n border: border,\n margin: margin,\n padding: padding\n });\n};\nvar withScroll = function withScroll(original, scroll) {\n if (scroll === void 0) {\n scroll = getWindowScroll();\n }\n return offset(original, scroll);\n};\nvar calculateBox = function calculateBox(borderBox, styles) {\n var margin = {\n top: parse(styles.marginTop),\n right: parse(styles.marginRight),\n bottom: parse(styles.marginBottom),\n left: parse(styles.marginLeft)\n };\n var padding = {\n top: parse(styles.paddingTop),\n right: parse(styles.paddingRight),\n bottom: parse(styles.paddingBottom),\n left: parse(styles.paddingLeft)\n };\n var border = {\n top: parse(styles.borderTopWidth),\n right: parse(styles.borderRightWidth),\n bottom: parse(styles.borderBottomWidth),\n left: parse(styles.borderLeftWidth)\n };\n return createBox({\n borderBox: borderBox,\n margin: margin,\n padding: padding,\n border: border\n });\n};\nvar getBox = function getBox(el) {\n var borderBox = el.getBoundingClientRect();\n var styles = window.getComputedStyle(el);\n return calculateBox(borderBox, styles);\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9jc3MtYm94LW1vZGVsL2Rpc3QvY3NzLWJveC1tb2RlbC5lc20uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQXVDO0FBRXZDLElBQUlDLFVBQVUsU0FBU0EsUUFBUUMsSUFBSTtJQUNqQyxJQUFJQyxNQUFNRCxLQUFLQyxHQUFHLEVBQ2RDLFFBQVFGLEtBQUtFLEtBQUssRUFDbEJDLFNBQVNILEtBQUtHLE1BQU0sRUFDcEJDLE9BQU9KLEtBQUtJLElBQUk7SUFDcEIsSUFBSUMsUUFBUUgsUUFBUUU7SUFDcEIsSUFBSUUsU0FBU0gsU0FBU0Y7SUFDdEIsSUFBSU0sT0FBTztRQUNUTixLQUFLQTtRQUNMQyxPQUFPQTtRQUNQQyxRQUFRQTtRQUNSQyxNQUFNQTtRQUNOQyxPQUFPQTtRQUNQQyxRQUFRQTtRQUNSRSxHQUFHSjtRQUNISyxHQUFHUjtRQUNIUyxRQUFRO1lBQ05GLEdBQUcsQ0FBQ04sUUFBUUUsSUFBRyxJQUFLO1lBQ3BCSyxHQUFHLENBQUNOLFNBQVNGLEdBQUUsSUFBSztRQUN0QjtJQUNGO0lBQ0EsT0FBT007QUFDVDtBQUNBLElBQUlJLFNBQVMsU0FBU0EsT0FBT0MsTUFBTSxFQUFFQyxRQUFRO0lBQzNDLE9BQU87UUFDTFosS0FBS1csT0FBT1gsR0FBRyxHQUFHWSxTQUFTWixHQUFHO1FBQzlCRyxNQUFNUSxPQUFPUixJQUFJLEdBQUdTLFNBQVNULElBQUk7UUFDakNELFFBQVFTLE9BQU9ULE1BQU0sR0FBR1UsU0FBU1YsTUFBTTtRQUN2Q0QsT0FBT1UsT0FBT1YsS0FBSyxHQUFHVyxTQUFTWCxLQUFLO0lBQ3RDO0FBQ0Y7QUFDQSxJQUFJWSxTQUFTLFNBQVNBLE9BQU9GLE1BQU0sRUFBRUcsUUFBUTtJQUMzQyxPQUFPO1FBQ0xkLEtBQUtXLE9BQU9YLEdBQUcsR0FBR2MsU0FBU2QsR0FBRztRQUM5QkcsTUFBTVEsT0FBT1IsSUFBSSxHQUFHVyxTQUFTWCxJQUFJO1FBQ2pDRCxR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O1FBQ2pDbEQsTUFBTTJCLE1BQU1vQixPQUFPSSxVQUFVO0lBQy9CO0lBQ0EsSUFBSTVCLFVBQVU7UUFDWjFCLEtBQUs4QixNQUFNb0IsT0FBT0ssVUFBVTtRQUM1QnRELE9BQU82QixNQUFNb0IsT0FBT00sWUFBWTtRQUNoQ3RELFFBQVE0QixNQUFNb0IsT0FBT08sYUFBYTtRQUNsQ3RELE1BQU0yQixNQUFNb0IsT0FBT1EsV0FBVztJQUNoQztJQUNBLElBQUlsQyxTQUFTO1FBQ1h4QixLQUFLOEIsTUFBTW9CLE9BQU9TLGNBQWM7UUFDaEMxRCxPQUFPNkIsTUFBTW9CLE9BQU9VLGdCQUFnQjtRQUNwQzFELFFBQVE0QixNQUFNb0IsT0FBT1csaUJBQWlCO1FBQ3RDMUQsTUFBTTJCLE1BQU1vQixPQUFPWSxlQUFlO0lBQ3BDO0lBQ0EsT0FBTzVDLFVBQVU7UUFDZkUsV0FBV0E7UUFDWEUsUUFBUUE7UUFDUkksU0FBU0E7UUFDVEYsUUFBUUE7SUFDVjtBQUNGO0FBQ0EsSUFBSXVDLFNBQVMsU0FBU0EsT0FBT0MsRUFBRTtJQUM3QixJQUFJNUMsWUFBWTRDLEdBQUdDLHFCQUFxQjtJQUN4QyxJQUFJZixTQUFTVixPQUFPMEIsZ0JBQWdCLENBQUNGO0lBQ3JDLE9BQU9mLGFBQWE3QixXQUFXOEI7QUFDakM7QUFFd0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2Nzcy1ib3gtbW9kZWwvZGlzdC9jc3MtYm94LW1vZGVsLmVzbS5qcz9kNjYwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbnZhcmlhbnQgZnJvbSAndGlueS1pbnZhcmlhbnQnO1xuXG52YXIgZ2V0UmVjdCA9IGZ1bmN0aW9uIGdldFJlY3QoX3JlZikge1xuICB2YXIgdG9wID0gX3JlZi50b3AsXG4gICAgICByaWdodCA9IF9yZWYucmlnaHQsXG4gICAgICBib3R0b20gPSBfcmVmLmJvdHRvbSxcbiAgICAgIGxlZnQgPSBfcmVmLmxlZnQ7XG4gIHZhciB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgdmFyIGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgdmFyIHJlY3QgPSB7XG4gICAgdG9wOiB0b3AsXG4gICAgcmlnaHQ6IHJpZ2h0LFxuICAgIGJvdHRvbTogYm90dG9tLFxuICAgIGxlZnQ6IGxlZnQsXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IGxlZnQsXG4gICAgeTogdG9wLFxuICAgIGNlbnRlcjoge1xuICAgICAgeDogKHJpZ2h0ICsgbGVmdCkgLyAyLFxuICAgICAgeTogKGJvdHRvbSArIHRvcCkgLyAyXG4gICAgfVxuICB9O1xuICByZXR1cm4gcmVjdDtcbn07XG52YXIgZXhwYW5kID0gZnVuY3Rpb24gZXhwYW5kKHRhcmdldCwgZXhwYW5kQnkpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IHRhcmdldC50b3AgLSBleHBhbmRCeS50b3AsXG4gICAgbGVmdDogdGFyZ2V0LmxlZnQgLSBleHBhbmRCeS5sZWZ0LFxuICAgIGJvdHRvbTogdGFyZ2V0LmJvdHRvbSArIGV4cGFuZEJ5LmJvdHRvbSxcbiAgICByaWdodDogdGFyZ2V0LnJpZ2h0ICsgZXhwYW5kQnkucmlnaHRcbiAgfTtcbn07XG52YXIgc2hyaW5rID0gZnVuY3Rpb24gc2hyaW5rKHRhcmdldCwgc2hyaW5rQnkpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IHRhcmdldC50b3AgKyBzaHJpbmtCeS50b3AsXG4gICAgbGVmdDogdGFyZ2V0LmxlZnQgKyBzaHJpbmtCeS5sZWZ0LFxuICAgIGJvdHRvbTogdGFyZ2V0LmJvdHRvbSAtIHNocmlua0J5LmJvdHRvbSxcbiAgICByaWdodDogdGFyZ2V0LnJpZ2h0IC0gc2hyaW5rQnkucmlnaHRcbiAgfTtcbn07XG5cbnZhciBzaGlmdCA9IGZ1bmN0aW9uIHNoaWZ0KHRhcmdldCwgc2hpZnRCeSkge1xuICByZXR1cm4ge1xuICAgIHRvcDogdGFyZ2V0LnRvcCArIHNoaWZ0QnkueSxcbiAgICBsZWZ0OiB0YXJnZXQubGVmdCArIHNoaWZ0QnkueCxcbiAgICBib3R0b206IHRhcmdldC5ib3R0b20gKyBzaGlmdEJ5LnksXG4gICAgcmlnaHQ6IHRhcmdldC5yaWdodCArIHNoaWZ0QnkueFxuICB9O1xufTtcblxudmFyIG5vU3BhY2luZyA9IHtcbiAgdG9wOiAwLFxuICByaWdodDogMCxcbiAgYm90dG9tOiAwLFxuICBsZWZ0OiAwXG59O1xudmFyIGNyZWF0ZUJveCA9IGZ1bmN0aW9uIGNyZWF0ZUJveChfcmVmMikge1xuICB2YXIgYm9yZGVyQm94ID0gX3JlZjIuYm9yZGVyQm94LFxuICAgICAgX3JlZjIkbWFyZ2luID0gX3JlZjIubWFyZ2luLFxuICAgICAgbWFyZ2luID0gX3JlZjIkbWFyZ2luID09PSB2b2lkIDAgPyBub1NwYWNpbmcgOiBfcmVmMiRtYXJnaW4sXG4gICAgICBfcmVmMiRib3JkZXIgPSBfcmVmMi5ib3JkZXIsXG4gICAgICBib3JkZXIgPSBfcmVmMiRib3JkZXIgPT09IHZvaWQgMCA/IG5vU3BhY2luZyA6IF9yZWYyJGJvcmRlcixcbiAgICAgIF9yZWYyJHBhZGRpbmcgPSBfcmVmMi5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9yZWYyJHBhZGRpbmcgPT09IHZvaWQgMCA/IG5vU3BhY2luZyA6IF9yZWYyJHBhZGRpbmc7XG4gIHZhciBtYXJnaW5Cb3ggPSBnZXRSZWN0KGV4cGFuZChib3JkZXJCb3gsIG1hcmdpbikpO1xuICB2YXIgcGFkZGluZ0JveCA9IGdldFJlY3Qoc2hyaW5rKGJvcmRlckJveCwgYm9yZGVyKSk7XG4gIHZhciBjb250ZW50Qm94ID0gZ2V0UmVjdChzaHJpbmsocGFkZGluZ0JveCwgcGFkZGluZykpO1xuICByZXR1cm4ge1xuICAgIG1hcmdpbkJveDogbWFyZ2luQm94LFxuICAgIGJvcmRlckJveDogZ2V0UmVjdChib3JkZXJCb3gpLFxuICAgIHBhZGRpbmdCb3g6IHBhZGRpbmdCb3gsXG4gICAgY29udGVudEJveDogY29udGVudEJveCxcbiAgICBtYXJnaW46IG1hcmdpbixcbiAgICBib3JkZXI6IGJvcmRlcixcbiAgICBwYWRkaW5nOiBwYWRkaW5nXG4gIH07XG59O1xuXG52YXIgcGFyc2UgPSBmdW5jdGlvbiBwYXJzZShyYXcpIHtcbiAgdmFyIHZhbHVlID0gcmF3LnNsaWNlKDAsIC0yKTtcbiAgdmFyIHN1ZmZpeCA9IHJhdy5zbGljZSgtMik7XG5cbiAgaWYgKHN1ZmZpeCAhPT0gJ3B4Jykge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IE51bWJlcih2YWx1ZSk7XG4gICEhaXNOYU4ocmVzdWx0KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgXCJDb3VsZCBub3QgcGFyc2UgdmFsdWUgW3JhdzogXCIgKyByYXcgKyBcIiwgd2l0aG91dCBzdWZmaXg6IFwiICsgdmFsdWUgKyBcIl1cIikgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIGdldFdpbmRvd1Njcm9sbCA9IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbCgpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiB3aW5kb3cucGFnZVhPZmZzZXQsXG4gICAgeTogd2luZG93LnBhZ2VZT2Zmc2V0XG4gIH07XG59O1xuXG52YXIgb2Zmc2V0ID0gZnVuY3Rpb24gb2Zmc2V0KG9yaWdpbmFsLCBjaGFuZ2UpIHtcbiAgdmFyIGJvcmRlckJveCA9IG9yaWdpbmFsLmJvcmRlckJveCxcbiAgICAgIGJvcmRlciA9IG9yaWdpbmFsLmJvcmRlcixcbiAgICAgIG1hcmdpbiA9IG9yaWdpbmFsLm1hcmdpbixcbiAgICAgIHBhZGRpbmcgPSBvcmlnaW5hbC5wYWRkaW5nO1xuICB2YXIgc2hpZnRlZCA9IHNoaWZ0KGJvcmRlckJveCwgY2hhbmdlKTtcbiAgcmV0dXJuIGNyZWF0ZUJveCh7XG4gICAgYm9yZGVyQm94OiBzaGlmdGVkLFxuICAgIGJvcmRlcjogYm9yZGVyLFxuICAgIG1hcmdpbjogbWFyZ2luLFxuICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgfSk7XG59O1xudmFyIHdpdGhTY3JvbGwgPSBmdW5jdGlvbiB3aXRoU2Nyb2xsKG9yaWdpbmFsLCBzY3JvbGwpIHtcbiAgaWYgKHNjcm9sbCA9PT0gdm9pZCAwKSB7XG4gICAgc2Nyb2xsID0gZ2V0V2luZG93U2Nyb2xsKCk7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0KG9yaWdpbmFsLCBzY3JvbGwpO1xufTtcbnZhciBjYWxjdWxhdGVCb3ggPSBmdW5jdGlvbiBjYWxjdWxhdGVCb3goYm9yZGVyQm94LCBzdHlsZXMpIHtcbiAgdmFyIG1hcmdpbiA9IHtcbiAgICB0b3A6IHBhcnNlKHN0eWxlcy5tYXJnaW5Ub3ApLFxuICAgIHJpZ2h0OiBwYXJzZShzdHlsZXMubWFyZ2luUmlnaHQpLFxuICAgIGJvdHRvbTogcGFyc2Uoc3R5bGVzLm1hcmdpbkJvdHRvbSksXG4gICAgbGVmdDogcGFyc2Uoc3R5bGVzLm1hcmdpbkxlZnQpXG4gIH07XG4gIHZhciBwYWRkaW5nID0ge1xuICAgIHRvcDogcGFyc2Uoc3R5bGVzLnBhZGRpbmdUb3ApLFxuICAgIHJpZ2h0OiBwYXJzZShzdHlsZXMucGFkZGluZ1JpZ2h0KSxcbiAgICBib3R0b206IHBhcnNlKHN0eWxlcy5wYWRkaW5nQm90dG9tKSxcbiAgICBsZWZ0OiBwYXJzZShzdHlsZXMucGFkZGluZ0xlZnQpXG4gIH07XG4gIHZhciBib3JkZXIgPSB7XG4gICAgdG9wOiBwYXJzZShzdHlsZXMuYm9yZGVyVG9wV2lkdGgpLFxuICAgIHJpZ2h0OiBwYXJzZShzdHlsZXMuYm9yZGVyUmlnaHRXaWR0aCksXG4gICAgYm90dG9tOiBwYXJzZShzdHlsZXMuYm9yZGVyQm90dG9tV2lkdGgpLFxuICAgIGxlZnQ6IHBhcnNlKHN0eWxlcy5ib3JkZXJMZWZ0V2lkdGgpXG4gIH07XG4gIHJldHVybiBjcmVhdGVCb3goe1xuICAgIGJvcmRlckJveDogYm9yZGVyQm94LFxuICAgIG1hcmdpbjogbWFyZ2luLFxuICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgYm9yZGVyOiBib3JkZXJcbiAgfSk7XG59O1xudmFyIGdldEJveCA9IGZ1bmN0aW9uIGdldEJveChlbCkge1xuICB2YXIgYm9yZGVyQm94ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG4gIHJldHVybiBjYWxjdWxhdGVCb3goYm9yZGVyQm94LCBzdHlsZXMpO1xufTtcblxuZXhwb3J0IHsgY2FsY3VsYXRlQm94LCBjcmVhdGVCb3gsIGV4cGFuZCwgZ2V0Qm94LCBnZXRSZWN0LCBvZmZzZXQsIHNocmluaywgd2l0aFNjcm9sbCB9O1xuIl0sIm5hbWVzIjpbImludmFyaWFudCIsImdldFJlY3QiLCJfcmVmIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJyZWN0IiwieCIsInkiLCJjZW50ZXIiLCJleHBhbmQiLCJ0YXJnZXQiLCJleHBhbmRCeSIsInNocmluayIsInNocmlua0J5Iiwic2hpZnQiLCJzaGlmdEJ5Iiwibm9TcGFjaW5nIiwiY3JlYXRlQm94IiwiX3JlZjIiLCJib3JkZXJCb3giLCJfcmVmMiRtYXJnaW4iLCJtYXJnaW4iLCJfcmVmMiRib3JkZXIiLCJib3JkZXIiLCJfcmVmMiRwYWRkaW5nIiwicGFkZGluZyIsIm1hcmdpbkJveCIsInBhZGRpbmdCb3giLCJjb250ZW50Qm94IiwicGFyc2UiLCJyYXciLCJ2YWx1ZSIsInNsaWNlIiwic3VmZml4IiwicmVzdWx0IiwiTnVtYmVyIiwiaXNOYU4iLCJwcm9jZXNzIiwiZ2V0V2luZG93U2Nyb2xsIiwid2luZG93IiwicGFnZVhPZmZzZXQiLCJwYWdlWU9mZnNldCIsIm9mZnNldCIsIm9yaWdpbmFsIiwiY2hhbmdlIiwic2hpZnRlZCIsIndpdGhTY3JvbGwiLCJzY3JvbGwiLCJjYWxjdWxhdGVCb3giLCJzdHlsZXMiLCJtYXJnaW5Ub3AiLCJtYXJnaW5SaWdodCIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpbkxlZnQiLCJwYWRkaW5nVG9wIiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdMZWZ0IiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJMZWZ0V2lkdGgiLCJnZXRCb3giLCJlbCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImdldENvbXB1dGVkU3R5bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/css-box-model/dist/css-box-model.esm.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js":
/*!**********************************************************************************!*\
!*** ./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js ***!
\**********************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\nvar reactIs = __webpack_require__(/*! react-is */ \"(app-pages-browser)/./node_modules/hoist-non-react-statics/node_modules/react-is/index.js\");\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */ var REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n \"$$typeof\": true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n \"$$typeof\": true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n}\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== \"string\") {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n var keys = getOwnPropertyNames(sourceComponent);\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n for(var i = 0; i < keys.length; ++i){\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n return targetComponent;\n}\nmodule.exports = hoistNonReactStatics;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9kaXN0L2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzLmNqcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUVBLElBQUlBLFVBQVVDLG1CQUFPQSxDQUFDO0FBRXRCOzs7Q0FHQyxHQUNELElBQUlDLGdCQUFnQjtJQUNsQkMsbUJBQW1CO0lBQ25CQyxhQUFhO0lBQ2JDLGNBQWM7SUFDZEMsY0FBYztJQUNkQyxhQUFhO0lBQ2JDLGlCQUFpQjtJQUNqQkMsMEJBQTBCO0lBQzFCQywwQkFBMEI7SUFDMUJDLFFBQVE7SUFDUkMsV0FBVztJQUNYQyxNQUFNO0FBQ1I7QUFDQSxJQUFJQyxnQkFBZ0I7SUFDbEJDLE1BQU07SUFDTkMsUUFBUTtJQUNSQyxXQUFXO0lBQ1hDLFFBQVE7SUFDUkMsUUFBUTtJQUNSQyxXQUFXO0lBQ1hDLE9BQU87QUFDVDtBQUNBLElBQUlDLHNCQUFzQjtJQUN4QixZQUFZO0lBQ1pDLFFBQVE7SUFDUmpCLGNBQWM7SUFDZEMsYUFBYTtJQUNiSyxXQUFXO0FBQ2I7QUFDQSxJQUFJWSxlQUFlO0lBQ2pCLFlBQVk7SUFDWkMsU0FBUztJQUNUbkIsY0FBYztJQUNkQyxhQUFhO0lBQ2JLLFdBQVc7SUFDWEMsTUFBTTtBQUNSO0FBQ0EsSUFBSWEsZUFBZSxDQUFDO0FBQ3BCQSxZQUFZLENBQUMxQixRQUFRMkIsVUFBVSxDQUFDLEdBQUdMO0FBQ25DSSxZQUFZLENBQUMxQixRQUFRNEIsSUFBSSxDQUFDLEdBQUdKO0FBRTdCLFNBQVNLLFdBQVdDLFNBQVM7SUFDM0IseUJBQXlCO0lBQ3pCLElBQUk5QixRQUFRK0IsTUFBTSxDQUFDRCxZQUFZO1FBQzdCLE9BQU9OO0lBQ1QsRUFBRSx5QkFBeUI7SUFHM0IsT0FBT0UsWUFBWSxDQUFDSSxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUk1QjtBQUNoRDtBQUVBLElBQUk4QixpQkFBaUJDLE9BQU9ELGNBQWM7QUFDMUMsSUFBSUUsc0JBQXNCRCxPQUFPQyxtQkFBbUI7QUFDcEQsSUFBSUMsd0JBQXdCRixPQUFPRSxxQkFBcUI7QUFDeEQsSUFBSUMsMkJBQTJCSCxPQUFPRyx3QkFBd0I7QUFDOUQsSUFBSUMsaUJBQWlCSixPQUFPSSxjQUFjO0FBQzFDLElBQUlDLGtCQUFrQkwsT0FBT2hCLFNBQVM7QUFDdEMsU0FBU3NCLHFCQUFxQkMsZUFBZSxFQUFFQyxlQUFlLEVBQUVDLFNBQVM7SUFDdkUsSUFBSSxPQUFPRCxvQkFBb0IsVUFBVTtRQUN2Qyw0Q0FBNEM7UUFDNUMsSUFBSUgsaUJBQWlCO1lBQ25CLElBQUlLLHFCQUFxQk4sZUFBZUk7WUFFeEMsSUFBSUUsc0JBQXNCQSx1QkFBdUJMLGlCQUFpQjtnQkFDaEVDLHFCQUFxQkMsaUJBQWlCRyxvQkFBb0JEO1lBQzVEO1FBQ0Y7UUFFQSxJQUFJRSxPQUFPVixvQkFBb0JPO1FBRS9CLElBQUlOLHVCQUF1QjtZQUN6QlMsT0FBT0EsS0FBS0MsTUFBTSxDQUFDVixzQkFBc0JNO1FBQzNDO1FBRUEsSUFBSUssZ0JBQWdCakIsV0FBV1c7UUFDL0IsSUFBSU8sZ0JBQWdCbEIsV0FBV1k7UUFFL0IsSUFBSyxJQUFJTyxJQUFJLEdBQUdBLElBQUlKLEtBQUs1QixNQUFNLEVBQUUsRUFBRWdDLEVBQUc7WUFDcEMsSUFBSUMsTUFBTUwsSUFBSSxDQUFDSSxFQUFFO1lBRWpCLElBQUksQ0FBQ2xDLGFBQWEsQ0FBQ21DLElBQUksSUFBSSxDQUFFUCxDQUFBQSxhQUFhQSxTQUFTLENBQUNPLElBQUksS0FBSyxDQUFFRixDQUFBQSxpQkFBaUJBLGFBQWEsQ0FBQ0UsSUFBSSxLQUFLLENBQUVILENBQUFBLGlCQUFpQkEsYUFBYSxDQUFDRyxJQUFJLEdBQUc7Z0JBQzdJLElBQUlDLGFBQWFkLHlCQUF5QkssaUJBQWlCUTtnQkFFM0QsSUFBSTtvQkFDRiwyQ0FBMkM7b0JBQzNDakIsZUFBZVEsaUJBQWlCUyxLQUFLQztnQkFDdkMsRUFBRSxPQUFPQyxHQUFHLENBQUM7WUFDZjtRQUNGO0lBQ0Y7SUFFQSxPQUFPWDtBQUNUO0FBRUFZLE9BQU9DLE9BQU8sR0FBR2QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzPzkxZGIiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbnZhciBSRUFDVF9TVEFUSUNTID0ge1xuICBjaGlsZENvbnRleHRUeXBlczogdHJ1ZSxcbiAgY29udGV4dFR5cGU6IHRydWUsXG4gIGNvbnRleHRUeXBlczogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgZ2V0RGVmYXVsdFByb3BzOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczogdHJ1ZSxcbiAgbWl4aW5zOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgS05PV05fU1RBVElDUyA9IHtcbiAgbmFtZTogdHJ1ZSxcbiAgbGVuZ3RoOiB0cnVlLFxuICBwcm90b3R5cGU6IHRydWUsXG4gIGNhbGxlcjogdHJ1ZSxcbiAgY2FsbGVlOiB0cnVlLFxuICBhcmd1bWVudHM6IHRydWUsXG4gIGFyaXR5OiB0cnVlXG59O1xudmFyIEZPUldBUkRfUkVGX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIHJlbmRlcjogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlXG59O1xudmFyIE1FTU9fU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgY29tcGFyZTogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIFRZUEVfU1RBVElDUyA9IHt9O1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuRm9yd2FyZFJlZl0gPSBGT1JXQVJEX1JFRl9TVEFUSUNTO1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuTWVtb10gPSBNRU1PX1NUQVRJQ1M7XG5cbmZ1bmN0aW9uIGdldFN0YXRpY3MoY29tcG9uZW50KSB7XG4gIC8vIFJlYWN0IHYxNi4xMSBhbmQgYmVsb3dcbiAgaWYgKHJlYWN0SXMuaXNNZW1vKGNvbXBvbmVudCkpIHtcbiAgICByZXR1cm4gTUVNT19TVEFUSUNTO1xuICB9IC8vIFJlYWN0IHYxNi4xMiBhbmQgYWJvdmVcblxuXG4gIHJldHVybiBUWVBFX1NUQVRJQ1NbY29tcG9uZW50WyckJHR5cGVvZiddXSB8fCBSRUFDVF9TVEFUSUNTO1xufVxuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbnZhciBvYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xuZnVuY3Rpb24gaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQsIGJsYWNrbGlzdCkge1xuICBpZiAodHlwZW9mIHNvdXJjZUNvbXBvbmVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBkb24ndCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuICAgIGlmIChvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgIHZhciBpbmhlcml0ZWRDb21wb25lbnQgPSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgICBpZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgaW5oZXJpdGVkQ29tcG9uZW50LCBibGFja2xpc3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgaWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2VDb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0U3RhdGljcyA9IGdldFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50KTtcbiAgICB2YXIgc291cmNlU3RhdGljcyA9IGdldFN0YXRpY3Moc291cmNlQ29tcG9uZW50KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmICghS05PV05fU1RBVElDU1trZXldICYmICEoYmxhY2tsaXN0ICYmIGJsYWNrbGlzdFtrZXldKSAmJiAhKHNvdXJjZVN0YXRpY3MgJiYgc291cmNlU3RhdGljc1trZXldKSAmJiAhKHRhcmdldFN0YXRpY3MgJiYgdGFyZ2V0U3RhdGljc1trZXldKSkge1xuICAgICAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2VDb21wb25lbnQsIGtleSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBBdm9pZCBmYWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0Q29tcG9uZW50LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaG9pc3ROb25SZWFjdFN0YXRpY3M7XG4iXSwibmFtZXMiOlsicmVhY3RJcyIsInJlcXVpcmUiLCJSRUFDVF9TVEFUSUNTIiwiY2hpbGRDb250ZXh0VHlwZXMiLCJjb250ZXh0VHlwZSIsImNvbnRleHRUeXBlcyIsImRlZmF1bHRQcm9wcyIsImRpc3BsYXlOYW1lIiwiZ2V0RGVmYXVsdFByb3BzIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwibWl4aW5zIiwicHJvcFR5cGVzIiwidHlwZSIsIktOT1dOX1NUQVRJQ1MiLCJuYW1lIiwibGVuZ3RoIiwicHJvdG90eXBlIiwiY2FsbGVyIiwiY2FsbGVlIiwiYXJndW1lbnRzIiwiYXJpdHkiLCJGT1JXQVJEX1JFRl9TVEFUSUNTIiwicmVuZGVyIiwiTUVNT19TVEFUSUNTIiwiY29tcGFyZSIsIlRZUEVfU1RBVElDUyIsIkZvcndhcmRSZWYiLCJNZW1vIiwiZ2V0U3RhdGljcyIsImNvbXBvbmVudCIsImlzTWVtbyIsImRlZmluZVByb3BlcnR5IiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldFByb3RvdHlwZU9mIiwib2JqZWN0UHJvdG90eXBlIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJ0YXJnZXRDb21wb25lbnQiLCJzb3VyY2VDb21wb25lbnQiLCJibGFja2xpc3QiLCJpbmhlcml0ZWRDb21wb25lbnQiLCJrZXlzIiwiY29uY2F0IiwidGFyZ2V0U3RhdGljcyIsInNvdXJjZVN0YXRpY3MiLCJpIiwia2V5IiwiZGVzY3JpcHRvciIsImUiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js":
/*!************************************************************************************************!*\
!*** ./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js ***!
\************************************************************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ \nif (true) {\n (function() {\n \"use strict\";\n // The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n // nor polyfill, then a plain number is used for performance.\n var hasSymbol = typeof Symbol === \"function\" && Symbol.for;\n var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for(\"react.element\") : 0xeac7;\n var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for(\"react.portal\") : 0xeaca;\n var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for(\"react.fragment\") : 0xeacb;\n var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.strict_mode\") : 0xeacc;\n var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for(\"react.profiler\") : 0xead2;\n var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for(\"react.provider\") : 0xeacd;\n var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for(\"react.context\") : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n // (unstable) APIs that have been removed. Can we remove the symbols?\n var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for(\"react.async_mode\") : 0xeacf;\n var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for(\"react.concurrent_mode\") : 0xeacf;\n var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for(\"react.forward_ref\") : 0xead0;\n var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for(\"react.suspense\") : 0xead1;\n var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for(\"react.suspense_list\") : 0xead8;\n var REACT_MEMO_TYPE = hasSymbol ? Symbol.for(\"react.memo\") : 0xead3;\n var REACT_LAZY_TYPE = hasSymbol ? Symbol.for(\"react.lazy\") : 0xead4;\n var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for(\"react.block\") : 0xead9;\n var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for(\"react.fundamental\") : 0xead5;\n var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for(\"react.responder\") : 0xead6;\n var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for(\"react.scope\") : 0xead7;\n function isValidElementType(type) {\n return typeof type === \"string\" || typeof type === \"function\" || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === \"object\" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n }\n function typeOf(object) {\n if (typeof object === \"object\" && object !== null) {\n var $$typeof = object.$$typeof;\n switch($$typeof){\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch(type){\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch($$typeofType){\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return undefined;\n } // AsyncMode is deprecated along with isAsyncMode\n var AsyncMode = REACT_ASYNC_MODE_TYPE;\n var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n console[\"warn\"](\"The ReactIs.isAsyncMode() alias has been deprecated, \" + \"and will be removed in React 17+. Update your code to use \" + \"ReactIs.isConcurrentMode() instead. It has the exact same API.\");\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n }\n function isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n exports.AsyncMode = AsyncMode;\n exports.ConcurrentMode = ConcurrentMode;\n exports.ContextConsumer = ContextConsumer;\n exports.ContextProvider = ContextProvider;\n exports.Element = Element;\n exports.ForwardRef = ForwardRef;\n exports.Fragment = Fragment;\n exports.Lazy = Lazy;\n exports.Memo = Memo;\n exports.Portal = Portal;\n exports.Profiler = Profiler;\n exports.StrictMode = StrictMode;\n exports.Suspense = Suspense;\n exports.isAsyncMode = isAsyncMode;\n exports.isConcurrentMode = isConcurrentMode;\n exports.isContextConsumer = isContextConsumer;\n exports.isContextProvider = isContextProvider;\n exports.isElement = isElement;\n exports.isForwardRef = isForwardRef;\n exports.isFragment = isFragment;\n exports.isLazy = isLazy;\n exports.isMemo = isMemo;\n exports.isPortal = isPortal;\n exports.isProfiler = isProfiler;\n exports.isStrictMode = isStrictMode;\n exports.isSuspense = isSuspense;\n exports.isValidElementType = isValidElementType;\n exports.typeOf = typeOf;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzIiwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0NBT0MsR0FFRDtBQUlBLElBQUlBLElBQXFDLEVBQUU7SUFDeEM7UUFDSDtRQUVBLG1GQUFtRjtRQUNuRiw2REFBNkQ7UUFDN0QsSUFBSUMsWUFBWSxPQUFPQyxXQUFXLGNBQWNBLE9BQU9DLEdBQUc7UUFDMUQsSUFBSUMscUJBQXFCSCxZQUFZQyxPQUFPQyxHQUFHLENBQUMsbUJBQW1CO1FBQ25FLElBQUlFLG9CQUFvQkosWUFBWUMsT0FBT0MsR0FBRyxDQUFDLGtCQUFrQjtRQUNqRSxJQUFJRyxzQkFBc0JMLFlBQVlDLE9BQU9DLEdBQUcsQ0FBQyxvQkFBb0I7UUFDckUsSUFBSUkseUJBQXlCTixZQUFZQyxPQUFPQyxHQUFHLENBQUMsdUJBQXVCO1FBQzNFLElBQUlLLHNCQUFzQlAsWUFBWUMsT0FBT0MsR0FBRyxDQUFDLG9CQUFvQjtRQUNyRSxJQUFJTSxzQkFBc0JSLFlBQVlDLE9BQU9DLEdBQUcsQ0FBQyxvQkFBb0I7UUFDckUsSUFBSU8scUJBQXFCVCxZQUFZQyxPQUFPQyxHQUFHLENBQUMsbUJBQW1CLFFBQVEsOEVBQThFO1FBQ3pKLHFFQUFxRTtRQUVyRSxJQUFJUSx3QkFBd0JWLFlBQVlDLE9BQU9DLEdBQUcsQ0FBQyxzQkFBc0I7UUFDekUsSUFBSVMsNkJBQTZCWCxZQUFZQyxPQUFPQyxHQUFHLENBQUMsMkJBQTJCO1FBQ25GLElBQUlVLHlCQUF5QlosWUFBWUMsT0FBT0MsR0FBRyxDQUFDLHVCQUF1QjtRQUMzRSxJQUFJVyxzQkFBc0JiLFlBQVlDLE9BQU9DLEdBQUcsQ0FBQyxvQkFBb0I7UUFDckUsSUFBSVksMkJBQTJCZCxZQUFZQyxPQUFPQyxHQUFHLENBQUMseUJBQXlCO1FBQy9FLElBQUlhLGtCQUFrQmYs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O1FBQzVCVSxpQkFBaUIsR0FBR1Q7UUFDcEJTLG9CQUFvQixHQUFHUjtRQUN2QlEsa0JBQWtCLEdBQUdQO1FBQ3JCTyxjQUFjLEdBQUdOO1FBQ2pCTSxjQUFjLEdBQUdMO1FBQ2pCSyxnQkFBZ0IsR0FBR0o7UUFDbkJJLGtCQUFrQixHQUFHSDtRQUNyQkcsb0JBQW9CLEdBQUdGO1FBQ3ZCRSxrQkFBa0IsR0FBR0Q7UUFDckJDLDBCQUEwQixHQUFHbkM7UUFDN0JtQyxjQUFjLEdBQUdoQztJQUNmO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanM/Yzg3ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAoZnVuY3Rpb24oKSB7XG4ndXNlIHN0cmljdCc7XG5cbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudC1saWtlIHR5cGVzLiBJZiB0aGVyZSBpcyBubyBuYXRpdmUgU3ltYm9sXG4vLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1iZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG52YXIgaGFzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuZm9yO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSA6IDB4ZWFjNztcbnZhciBSRUFDVF9QT1JUQUxfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnBvcnRhbCcpIDogMHhlYWNhO1xudmFyIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5mcmFnbWVudCcpIDogMHhlYWNiO1xudmFyIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5zdHJpY3RfbW9kZScpIDogMHhlYWNjO1xudmFyIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5wcm9maWxlcicpIDogMHhlYWQyO1xudmFyIFJFQUNUX1BST1ZJREVSX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5wcm92aWRlcicpIDogMHhlYWNkO1xudmFyIFJFQUNUX0NPTlRFWFRfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbnRleHQnKSA6IDB4ZWFjZTsgLy8gVE9ETzogV2UgZG9uJ3QgdXNlIEFzeW5jTW9kZSBvciBDb25jdXJyZW50TW9kZSBhbnltb3JlLiBUaGV5IHdlcmUgdGVtcG9yYXJ5XG4vLyAodW5zdGFibGUpIEFQSXMgdGhhdCBoYXZlIGJlZW4gcmVtb3ZlZC4gQ2FuIHdlIHJlbW92ZSB0aGUgc3ltYm9scz9cblxudmFyIFJFQUNUX0FTWU5DX01PREVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmFzeW5jX21vZGUnKSA6IDB4ZWFjZjtcbnZhciBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbmN1cnJlbnRfbW9kZScpIDogMHhlYWNmO1xudmFyIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5mb3J3YXJkX3JlZicpIDogMHhlYWQwO1xudmFyIFJFQUNUX1NVU1BFTlNFX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZScpIDogMHhlYWQxO1xudmFyIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlX2xpc3QnKSA6IDB4ZWFkODtcbnZhciBSRUFDVF9NRU1PX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5tZW1vJykgOiAweGVhZDM7XG52YXIgUkVBQ1RfTEFaWV9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QubGF6eScpIDogMHhlYWQ0O1xudmFyIFJFQUNUX0JMT0NLX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5ibG9jaycpIDogMHhlYWQ5O1xudmFyIFJFQUNUX0ZVTkRBTUVOVEFMX1RZUEUgPSBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdyZWFjdC5mdW5kYW1lbnRhbCcpIDogMHhlYWQ1O1xudmFyIFJFQUNUX1JFU1BPTkRFUl9UWVBFID0gaGFzU3ltYm9sID8gU3ltYm9sLmZvcigncmVhY3QucmVzcG9uZGVyJykgOiAweGVhZDY7XG52YXIgUkVBQ1RfU0NPUEVfVFlQRSA9IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LnNjb3BlJykgOiAweGVhZDc7XG5cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50VHlwZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgfHwgLy8gTm90ZTogaXRzIHR5cGVvZiBtaWdodCBiZSBvdGhlciB0aGFuICdzeW1ib2wnIG9yICdudW1iZXInIGlmIGl0J3MgYSBwb2x5ZmlsbC5cbiAgdHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GVU5EQU1FTlRBTF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1JFU1BPTkRFUl9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1NDT1BFX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQkxPQ0tfVFlQRSk7XG59XG5cbmZ1bmN0aW9uIHR5cGVPZihvYmplY3QpIHtcbiAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCkge1xuICAgIHZhciAkJHR5cGVvZiA9IG9iamVjdC4kJHR5cGVvZjtcblxuICAgIHN3aXRjaCAoJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgICB2YXIgdHlwZSA9IG9iamVjdC50eXBlO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgUkVBQ1RfQVNZTkNfTU9ERV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdmFyICQkdHlwZW9mVHlwZSA9IHR5cGUgJiYgdHlwZS4kJHR5cGVvZjtcblxuICAgICAgICAgICAgc3dpdGNoICgkJHR5cGVvZlR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX1BST1ZJREVSX1RZUEU6XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkdHlwZW9mVHlwZTtcblxuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAkJHR5cGVvZjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICAgIHJldHVybiAkJHR5cGVvZjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufSAvLyBBc3luY01vZGUgaXMgZGVwcmVjYXRlZCBhbG9uZyB3aXRoIGlzQXN5bmNNb2RlXG5cbnZhciBBc3luY01vZGUgPSBSRUFDVF9BU1lOQ19NT0RFX1RZUEU7XG52YXIgQ29uY3VycmVudE1vZGUgPSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRTtcbnZhciBDb250ZXh0Q29uc3VtZXIgPSBSRUFDVF9DT05URVhUX1RZUEU7XG52YXIgQ29udGV4dFByb3ZpZGVyID0gUkVBQ1RfUFJPVklERVJfVFlQRTtcbnZhciBFbGVtZW50ID0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xudmFyIEZvcndhcmRSZWYgPSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFO1xudmFyIEZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbnZhciBMYXp5ID0gUkVBQ1RfTEFaWV9UWVBFO1xudmFyIE1lbW8gPSBSRUFDVF9NRU1PX1RZUEU7XG52YXIgUG9ydGFsID0gUkVBQ1RfUE9SVEFMX1RZUEU7XG52YXIgUHJvZmlsZXIgPSBSRUFDVF9QUk9GSUxFUl9UWVBFO1xudmFyIFN0cmljdE1vZGUgPSBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFO1xudmFyIFN1c3BlbnNlID0gUkVBQ1RfU1VTUEVOU0VfVFlQRTtcbnZhciBoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSA9IGZhbHNlOyAvLyBBc3luY01vZGUgc2hvdWxkIGJlIGRlcHJlY2F0ZWRcblxuZnVuY3Rpb24gaXNBc3luY01vZGUob2JqZWN0KSB7XG4gIHtcbiAgICBpZiAoIWhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlKSB7XG4gICAgICBoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSA9IHRydWU7IC8vIFVzaW5nIGNvbnNvbGVbJ3dhcm4nXSB0byBldmFkZSBCYWJlbCBhbmQgRVNMaW50XG5cbiAgICAgIGNvbnNvbGVbJ3dhcm4nXSgnVGhlIFJlYWN0SXMuaXNBc3luY01vZGUoKSBhbGlhcyBoYXMgYmVlbiBkZXByZWNhdGVkLCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUmVhY3QgMTcrLiBVcGRhdGUgeW91ciBjb2RlIHRvIHVzZSAnICsgJ1JlYWN0SXMuaXNDb25jdXJyZW50TW9kZSgpIGluc3RlYWQuIEl0IGhhcyB0aGUgZXhhY3Qgc2FtZSBBUEkuJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGlzQ29uY3VycmVudE1vZGUob2JqZWN0KSB8fCB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfQVNZTkNfTU9ERV9UWVBFO1xufVxuZnVuY3Rpb24gaXNDb25jdXJyZW50TW9kZShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9DT05DVVJSRU5UX01PREVfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzQ29udGV4dENvbnN1bWVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0NPTlRFWFRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzQ29udGV4dFByb3ZpZGVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BST1ZJREVSX1RZUEU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59XG5mdW5jdGlvbiBpc0ZvcndhcmRSZWYob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRnJhZ21lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzTGF6eShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9MQVpZX1RZUEU7XG59XG5mdW5jdGlvbiBpc01lbW8ob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfTUVNT19UWVBFO1xufVxuZnVuY3Rpb24gaXNQb3J0YWwob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUE9SVEFMX1RZUEU7XG59XG5mdW5jdGlvbiBpc1Byb2ZpbGVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG59XG5mdW5jdGlvbiBpc1N0cmljdE1vZGUob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3VzcGVuc2Uob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRTtcbn1cblxuZXhwb3J0cy5Bc3luY01vZGUgPSBBc3luY01vZGU7XG5leHBvcnRzLkNvbmN1cnJlbnRNb2RlID0gQ29uY3VycmVudE1vZGU7XG5leHBvcnRzLkNvbnRleHRDb25zdW1lciA9IENvbnRleHRDb25zdW1lcjtcbmV4cG9ydHMuQ29udGV4dFByb3ZpZGVyID0gQ29udGV4dFByb3ZpZGVyO1xuZXhwb3J0cy5FbGVtZW50ID0gRWxlbWVudDtcbmV4cG9ydHMuRm9yd2FyZFJlZiA9IEZvcndhcmRSZWY7XG5leHBvcnRzLkZyYWdtZW50ID0gRnJhZ21lbnQ7XG5leHBvcnRzLkxhenkgPSBMYXp5O1xuZXhwb3J0cy5NZW1vID0gTWVtbztcbmV4cG9ydHMuUG9ydGFsID0gUG9ydGFsO1xuZXhwb3J0cy5Qcm9maWxlciA9IFByb2ZpbGVyO1xuZXhwb3J0cy5TdHJpY3RNb2RlID0gU3RyaWN0TW9kZTtcbmV4cG9ydHMuU3VzcGVuc2UgPSBTdXNwZW5zZTtcbmV4cG9ydHMuaXNBc3luY01vZGUgPSBpc0FzeW5jTW9kZTtcbmV4cG9ydHMuaXNDb25jdXJyZW50TW9kZSA9IGlzQ29uY3VycmVudE1vZGU7XG5leHBvcnRzLmlzQ29udGV4dENvbnN1bWVyID0gaXNDb250ZXh0Q29uc3VtZXI7XG5leHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyID0gaXNDb250ZXh0UHJvdmlkZXI7XG5leHBvcnRzLmlzRWxlbWVudCA9IGlzRWxlbWVudDtcbmV4cG9ydHMuaXNGb3J3YXJkUmVmID0gaXNGb3J3YXJkUmVmO1xuZXhwb3J0cy5pc0ZyYWdtZW50ID0gaXNGcmFnbWVudDtcbmV4cG9ydHMuaXNMYXp5ID0gaXNMYXp5O1xuZXhwb3J0cy5pc01lbW8gPSBpc01lbW87XG5leHBvcnRzLmlzUG9ydGFsID0gaXNQb3J0YWw7XG5leHBvcnRzLmlzUHJvZmlsZXIgPSBpc1Byb2ZpbGVyO1xuZXhwb3J0cy5pc1N0cmljdE1vZGUgPSBpc1N0cmljdE1vZGU7XG5leHBvcnRzLmlzU3VzcGVuc2UgPSBpc1N1c3BlbnNlO1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGUgPSBpc1ZhbGlkRWxlbWVudFR5cGU7XG5leHBvcnRzLnR5cGVPZiA9IHR5cGVPZjtcbiAgfSkoKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzIiwiaGFzU3ltYm9sIiwiU3ltYm9sIiwiZm9yIiwiUkVBQ1RfRUxFTUVOVF9UWVBFIiwiUkVBQ1RfUE9SVEFMX1RZUEUiLCJSRUFDVF9GUkFHTUVOVF9UWVBFIiwiUkVBQ1RfU1RSSUNUX01PREVfVFlQRSIsIlJFQUNUX1BST0ZJTEVSX1RZUEUiLCJSRUFDVF9QUk9WSURFUl9UWVBFIiwiUkVBQ1RfQ09OVEVYVF9UWVBFIiwiUkVBQ1RfQVNZTkNfTU9ERV9UWVBFIiwiUkVBQ1RfQ09OQ1VSUkVOVF9NT0RFX1RZUEUiLCJSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIiwiUkVBQ1RfU1VTUEVOU0VfVFlQRSIsIlJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSIsIlJFQUNUX01FTU9fVFlQRSIsIlJFQUNUX0xBWllfVFlQRSIsIlJFQUNUX0JMT0NLX1RZUEUiLCJSRUFDVF9GVU5EQU1FTlRBTF9UWVBFIiwiUkVBQ1RfUkVTUE9OREVSX1RZUEUiLCJSRUFDVF9TQ09QRV9UWVBFIiwiaXNWYWxpZEVsZW1lbnRUeXBlIiwidHlwZSIsIiQkdHlwZW9mIiwidHlwZU9mIiwib2JqZWN0IiwiJCR0eXBlb2ZUeXBlIiwidW5kZWZpbmVkIiwiQXN5bmNNb2RlIiwiQ29uY3VycmVudE1vZGUiLCJDb250ZXh0Q29uc3VtZXIiLCJDb250ZXh0UHJvdmlkZXIiLCJFbGVtZW50IiwiRm9yd2FyZFJlZiIsIkZyYWdtZW50IiwiTGF6eSIsIk1lbW8iLCJQb3J0YWwiLCJQcm9maWxlciIsIlN0cmljdE1vZGUiLCJTdXNwZW5zZSIsImhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlIiwiaXNBc3luY01vZGUiLCJjb25zb2xlIiwiaXNDb25jdXJyZW50TW9kZSIsImlzQ29udGV4dENvbnN1bWVyIiwiaXNDb250ZXh0UHJvdmlkZXIiLCJpc0VsZW1lbnQiLCJpc0ZvcndhcmRSZWYiLCJpc0ZyYWdtZW50IiwiaXNMYXp5IiwiaXNNZW1vIiwiaXNQb3J0YWwiLCJpc1Byb2ZpbGVyIiwiaXNTdHJpY3RNb2RlIiwiaXNTdXNwZW5zZSIsImV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/hoist-non-react-statics/node_modules/react-is/index.js":
/*!*****************************************************************************!*\
!*** ./node_modules/hoist-non-react-statics/node_modules/react-is/index.js ***!
\*****************************************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"(app-pages-browser)/./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFFQSxJQUFJQSxLQUF5QixFQUFjLEVBRTFDLE1BQU07SUFDTEMseUxBQXlCO0FBQzNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanM/YzZjZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcXVpcmUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/hoist-non-react-statics/node_modules/react-is/index.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/memoize-one/dist/memoize-one.esm.js":
/*!**********************************************************!*\
!*** ./node_modules/memoize-one/dist/memoize-one.esm.js ***!
\**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ memoizeOne; }\n/* harmony export */ });\nvar safeIsNaN = Number.isNaN || function ponyfill(value) {\n return typeof value === \"number\" && value !== value;\n};\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for(var i = 0; i < newInputs.length; i++){\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = areInputsEqual;\n }\n var cache = null;\n function memoized() {\n var newArgs = [];\n for(var _i = 0; _i < arguments.length; _i++){\n newArgs[_i] = arguments[_i];\n }\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n var lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult: lastResult,\n lastArgs: newArgs,\n lastThis: this\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9tZW1vaXplLW9uZS9kaXN0L21lbW9pemUtb25lLmVzbS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBSUEsWUFBWUMsT0FBT0MsS0FBSyxJQUN4QixTQUFTQyxTQUFTQyxLQUFLO0lBQ25CLE9BQU8sT0FBT0EsVUFBVSxZQUFZQSxVQUFVQTtBQUNsRDtBQUNKLFNBQVNDLFFBQVFDLEtBQUssRUFBRUMsTUFBTTtJQUMxQixJQUFJRCxVQUFVQyxRQUFRO1FBQ2xCLE9BQU87SUFDWDtJQUNBLElBQUlQLFVBQVVNLFVBQVVOLFVBQVVPLFNBQVM7UUFDdkMsT0FBTztJQUNYO0lBQ0EsT0FBTztBQUNYO0FBQ0EsU0FBU0MsZUFBZUMsU0FBUyxFQUFFQyxVQUFVO0lBQ3pDLElBQUlELFVBQVVFLE1BQU0sS0FBS0QsV0FBV0MsTUFBTSxFQUFFO1FBQ3hDLE9BQU87SUFDWDtJQUNBLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJSCxVQUFVRSxNQUFNLEVBQUVDLElBQUs7UUFDdkMsSUFBSSxDQUFDUCxRQUFRSSxTQUFTLENBQUNHLEVBQUUsRUFBRUYsVUFBVSxDQUFDRSxFQUFFLEdBQUc7WUFDdkMsT0FBTztRQUNYO0lBQ0o7SUFDQSxPQUFPO0FBQ1g7QUFFQSxTQUFTQyxXQUFXQyxRQUFRLEVBQUVULE9BQU87SUFDakMsSUFBSUEsWUFBWSxLQUFLLEdBQUc7UUFBRUEsVUFBVUc7SUFBZ0I7SUFDcEQsSUFBSU8sUUFBUTtJQUNaLFNBQVNDO1FBQ0wsSUFBSUMsVUFBVSxFQUFFO1FBQ2hCLElBQUssSUFBSUMsS0FBSyxHQUFHQSxLQUFLQyxVQUFVUixNQUFNLEVBQUVPLEtBQU07WUFDMUNELE9BQU8sQ0FBQ0MsR0FBRyxHQUFHQyxTQUFTLENBQUNELEdBQUc7UUFDL0I7UUFDQSxJQUFJSCxTQUFTQSxNQUFNSyxRQUFRLEtBQUssSUFBSSxJQUFJZixRQUFRWSxTQUFTRixNQUFNTSxRQUFRLEdBQUc7WUFDdEUsT0FBT04sTUFBTU8sVUFBVTtRQUMzQjtRQUNBLElBQUlBLGFBQWFSLFNBQVNTLEtBQUssQ0FBQyxJQUFJLEVBQUVOO1FBQ3RDRixRQUFRO1lBQ0pPLFlBQVlBO1lBQ1pELFVBQVVKO1lBQ1ZHLFVBQVUsSUFBSTtRQUNsQjtRQUNBLE9BQU9FO0lBQ1g7SUFDQU4sU0FBU1EsS0FBSyxHQUFHLFNBQVNBO1FBQ3RCVCxRQUFRO0lBQ1o7SUFDQSxPQUFPQztBQUNYO0FBRWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9tZW1vaXplLW9uZS9kaXN0L21lbW9pemUtb25lLmVzbS5qcz8xZjIxIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBzYWZlSXNOYU4gPSBOdW1iZXIuaXNOYU4gfHxcbiAgICBmdW5jdGlvbiBwb255ZmlsbCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPT0gdmFsdWU7XG4gICAgfTtcbmZ1bmN0aW9uIGlzRXF1YWwoZmlyc3QsIHNlY29uZCkge1xuICAgIGlmIChmaXJzdCA9PT0gc2Vjb25kKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoc2FmZUlzTmFOKGZpcnN0KSAmJiBzYWZlSXNOYU4oc2Vjb25kKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gYXJlSW5wdXRzRXF1YWwobmV3SW5wdXRzLCBsYXN0SW5wdXRzKSB7XG4gICAgaWYgKG5ld0lucHV0cy5sZW5ndGggIT09IGxhc3RJbnB1dHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdJbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFpc0VxdWFsKG5ld0lucHV0c1tpXSwgbGFzdElucHV0c1tpXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gbWVtb2l6ZU9uZShyZXN1bHRGbiwgaXNFcXVhbCkge1xuICAgIGlmIChpc0VxdWFsID09PSB2b2lkIDApIHsgaXNFcXVhbCA9IGFyZUlucHV0c0VxdWFsOyB9XG4gICAgdmFyIGNhY2hlID0gbnVsbDtcbiAgICBmdW5jdGlvbiBtZW1vaXplZCgpIHtcbiAgICAgICAgdmFyIG5ld0FyZ3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIG5ld0FyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FjaGUgJiYgY2FjaGUubGFzdFRoaXMgPT09IHRoaXMgJiYgaXNFcXVhbChuZXdBcmdzLCBjYWNoZS5sYXN0QXJncykpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZS5sYXN0UmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBsYXN0UmVzdWx0ID0gcmVzdWx0Rm4uYXBwbHkodGhpcywgbmV3QXJncyk7XG4gICAgICAgIGNhY2hlID0ge1xuICAgICAgICAgICAgbGFzdFJlc3VsdDogbGFzdFJlc3VsdCxcbiAgICAgICAgICAgIGxhc3RBcmdzOiBuZXdBcmdzLFxuICAgICAgICAgICAgbGFzdFRoaXM6IHRoaXMsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBsYXN0UmVzdWx0O1xuICAgIH1cbiAgICBtZW1vaXplZC5jbGVhciA9IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgICBjYWNoZSA9IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gbWVtb2l6ZWQ7XG59XG5cbmV4cG9ydCB7IG1lbW9pemVPbmUgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbInNhZmVJc05hTiIsIk51bWJlciIsImlzTmFOIiwicG9ueWZpbGwiLCJ2YWx1ZSIsImlzRXF1YWwiLCJmaXJzdCIsInNlY29uZCIsImFyZUlucHV0c0VxdWFsIiwibmV3SW5wdXRzIiwibGFzdElucHV0cyIsImxlbmd0aCIsImkiLCJtZW1vaXplT25lIiwicmVzdWx0Rm4iLCJjYWNoZSIsIm1lbW9pemVkIiwibmV3QXJncyIsIl9pIiwiYXJndW1lbnRzIiwibGFzdFRoaXMiLCJsYXN0QXJncyIsImxhc3RSZXN1bHQiLCJhcHBseSIsImNsZWFyIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/memoize-one/dist/memoize-one.esm.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/raf-schd/dist/raf-schd.esm.js":
/*!****************************************************!*\
!*** ./node_modules/raf-schd/dist/raf-schd.esm.js ***!
\****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\nvar rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n var wrapperFn = function wrapperFn() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n lastArgs = args;\n if (frameId) {\n return;\n }\n frameId = requestAnimationFrame(function() {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n wrapperFn.cancel = function() {\n if (!frameId) {\n return;\n }\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n return wrapperFn;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (rafSchd);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yYWYtc2NoZC9kaXN0L3JhZi1zY2hkLmVzbS5qcyIsIm1hcHBpbmdzIjoiO0FBQUEsSUFBSUEsVUFBVSxTQUFTQSxRQUFRQyxFQUFFO0lBQy9CLElBQUlDLFdBQVcsRUFBRTtJQUNqQixJQUFJQyxVQUFVO0lBRWQsSUFBSUMsWUFBWSxTQUFTQTtRQUN2QixJQUFLLElBQUlDLE9BQU9DLFVBQVVDLE1BQU0sRUFBRUMsT0FBTyxJQUFJQyxNQUFNSixPQUFPSyxPQUFPLEdBQUdBLE9BQU9MLE1BQU1LLE9BQVE7WUFDdkZGLElBQUksQ0FBQ0UsS0FBSyxHQUFHSixTQUFTLENBQUNJLEtBQUs7UUFDOUI7UUFFQVIsV0FBV007UUFFWCxJQUFJTCxTQUFTO1lBQ1g7UUFDRjtRQUVBQSxVQUFVUSxzQkFBc0I7WUFDOUJSLFVBQVU7WUFDVkYsR0FBR1csS0FBSyxDQUFDLEtBQUssR0FBR1Y7UUFDbkI7SUFDRjtJQUVBRSxVQUFVUyxNQUFNLEdBQUc7UUFDakIsSUFBSSxDQUFDVixTQUFTO1lBQ1o7UUFDRjtRQUVBVyxxQkFBcUJYO1FBQ3JCQSxVQUFVO0lBQ1o7SUFFQSxPQUFPQztBQUNUO0FBRUEsK0RBQWVKLE9BQU9BLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JhZi1zY2hkL2Rpc3QvcmFmLXNjaGQuZXNtLmpzPzhhY2UiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIHJhZlNjaGQgPSBmdW5jdGlvbiByYWZTY2hkKGZuKSB7XG4gIHZhciBsYXN0QXJncyA9IFtdO1xuICB2YXIgZnJhbWVJZCA9IG51bGw7XG5cbiAgdmFyIHdyYXBwZXJGbiA9IGZ1bmN0aW9uIHdyYXBwZXJGbigpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgbGFzdEFyZ3MgPSBhcmdzO1xuXG4gICAgaWYgKGZyYW1lSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIGZyYW1lSWQgPSBudWxsO1xuICAgICAgZm4uYXBwbHkodm9pZCAwLCBsYXN0QXJncyk7XG4gICAgfSk7XG4gIH07XG5cbiAgd3JhcHBlckZuLmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWZyYW1lSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcbiAgICBmcmFtZUlkID0gbnVsbDtcbiAgfTtcblxuICByZXR1cm4gd3JhcHBlckZuO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcmFmU2NoZDtcbiJdLCJuYW1lcyI6WyJyYWZTY2hkIiwiZm4iLCJsYXN0QXJncyIsImZyYW1lSWQiLCJ3cmFwcGVyRm4iLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImFwcGx5IiwiY2FuY2VsIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/raf-schd/dist/raf-schd.esm.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-is/cjs/react-is.development.js":
/*!***********************************************************!*\
!*** ./node_modules/react-is/cjs/react-is.development.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ \nif (true) {\n (function() {\n \"use strict\";\n // ATTENTION\n // When adding new symbols to this file,\n // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n // The Symbol used to tag the ReactElement-like types.\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\n var REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\n var REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n var REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\");\n var REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n var REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\");\n var REACT_CONTEXT_TYPE = Symbol.for(\"react.context\");\n var REACT_SERVER_CONTEXT_TYPE = Symbol.for(\"react.server_context\");\n var REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\n var REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\n var REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\n var REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n var REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\n var REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\n // -----------------------------------------------------------------------------\n var enableScopeAPI = false; // Experimental Create Event Handle API.\n var enableCacheElement = false;\n var enableTransitionTracing = false; // No known bugs, but needs performance testing\n var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n // stuff. Intended to enable React core members to more easily debug scheduling\n // issues in DEV builds.\n var enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n var REACT_MODULE_REFERENCE;\n {\n REACT_MODULE_REFERENCE = Symbol.for(\"react.module.reference\");\n }\n function isValidElementType(type) {\n if (typeof type === \"string\" || typeof type === \"function\") {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) {\n return true;\n }\n if (typeof type === \"object\" && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n return false;\n }\n function typeOf(object) {\n if (typeof object === \"object\" && object !== null) {\n var $$typeof = object.$$typeof;\n switch($$typeof){\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n switch(type){\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n switch($$typeofType){\n case REACT_SERVER_CONTEXT_TYPE:\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n return undefined;\n }\n var ContextConsumer = REACT_CONTEXT_TYPE;\n var ContextProvider = REACT_PROVIDER_TYPE;\n var Element = REACT_ELEMENT_TYPE;\n var ForwardRef = REACT_FORWARD_REF_TYPE;\n var Fragment = REACT_FRAGMENT_TYPE;\n var Lazy = REACT_LAZY_TYPE;\n var Memo = REACT_MEMO_TYPE;\n var Portal = REACT_PORTAL_TYPE;\n var Profiler = REACT_PROFILER_TYPE;\n var StrictMode = REACT_STRICT_MODE_TYPE;\n var Suspense = REACT_SUSPENSE_TYPE;\n var SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n var hasWarnedAboutDeprecatedIsAsyncMode = false;\n var hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n function isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n console[\"warn\"](\"The ReactIs.isAsyncMode() alias has been deprecated, \" + \"and will be removed in React 18+.\");\n }\n }\n return false;\n }\n function isConcurrentMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n console[\"warn\"](\"The ReactIs.isConcurrentMode() alias has been deprecated, \" + \"and will be removed in React 18+.\");\n }\n }\n return false;\n }\n function isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n }\n function isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n }\n function isElement(object) {\n return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }\n function isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n }\n function isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n }\n function isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n }\n function isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n }\n function isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n }\n function isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n }\n function isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n }\n function isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n }\n function isSuspenseList(object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n }\n exports.ContextConsumer = ContextConsumer;\n exports.ContextProvider = ContextProvider;\n exports.Element = Element;\n exports.ForwardRef = ForwardRef;\n exports.Fragment = Fragment;\n exports.Lazy = Lazy;\n exports.Memo = Memo;\n exports.Portal = Portal;\n exports.Profiler = Profiler;\n exports.StrictMode = StrictMode;\n exports.Suspense = Suspense;\n exports.SuspenseList = SuspenseList;\n exports.isAsyncMode = isAsyncMode;\n exports.isConcurrentMode = isConcurrentMode;\n exports.isContextConsumer = isContextConsumer;\n exports.isContextProvider = isContextProvider;\n exports.isElement = isElement;\n exports.isForwardRef = isForwardRef;\n exports.isFragment = isFragment;\n exports.isLazy = isLazy;\n exports.isMemo = isMemo;\n exports.isPortal = isPortal;\n exports.isProfiler = isProfiler;\n exports.isStrictMode = isStrictMode;\n exports.isSuspense = isSuspense;\n exports.isSuspenseList = isSuspenseList;\n exports.isValidElementType = isValidElementType;\n exports.typeOf = typeOf;\n })();\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0NBUUMsR0FFRDtBQUVBLElBQUlBLElBQXFDLEVBQUU7SUFDeEM7UUFDSDtRQUVBLFlBQVk7UUFDWix3Q0FBd0M7UUFDeEMsa0ZBQWtGO1FBQ2xGLHNEQUFzRDtRQUN0RCxJQUFJQyxxQkFBcUJDLE9BQU9DLEdBQUcsQ0FBQztRQUNwQyxJQUFJQyxvQkFBb0JGLE9BQU9DLEdBQUcsQ0FBQztRQUNuQyxJQUFJRSxzQkFBc0JILE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJRyx5QkFBeUJKLE9BQU9DLEdBQUcsQ0FBQztRQUN4QyxJQUFJSSxzQkFBc0JMLE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJSyxzQkFBc0JOLE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJTSxxQkFBcUJQLE9BQU9DLEdBQUcsQ0FBQztRQUNwQyxJQUFJTyw0QkFBNEJSLE9BQU9DLEdBQUcsQ0FBQztRQUMzQyxJQUFJUSx5QkFBeUJULE9BQU9DLEdBQUcsQ0FBQztRQUN4QyxJQUFJUyxzQkFBc0JWLE9BQU9DLEdBQUcsQ0FBQztRQUNyQyxJQUFJVSwyQkFBMkJYLE9BQU9DLEdBQUcsQ0FBQztRQUMxQyxJQUFJVyxrQkFBa0JaLE9BQU9DLEdBQUcsQ0FBQztRQUNqQyxJQUFJWSxrQkFBa0JiLE9BQU9DLEdBQUcsQ0FBQztRQUNqQyxJQUFJYSx1QkFBdUJkLE9BQU9DLEdBQUcsQ0FBQztRQUV0QyxnRkFBZ0Y7UUFFaEYsSUFBSWMsaUJBQWlCLE9BQU8sd0NBQXdDO1FBQ3BFLElBQUlDLHFCQUFxQjtRQUN6QixJQUFJQywwQkFBMEIsT0FBTywrQ0FBK0M7UUFFcEYsSUFBSUMscUJBQXFCLE9BQU8sc0RBQXNEO1FBQ3RGLCtFQUErRTtRQUMvRSx3QkFBd0I7UUFFeEIsSUFBSUMscUJBQXFCLE9BQU8sNkNBQTZDO1FBRTdF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LG9CQUFvQixHQUFHVDtRQUN2QlMsa0JBQWtCLEdBQUdSO1FBQ3JCUSxjQUFjLEdBQUdQO1FBQ2pCTyxjQUFjLEdBQUdOO1FBQ2pCTSxnQkFBZ0IsR0FBR0w7UUFDbkJLLGtCQUFrQixHQUFHSjtRQUNyQkksb0JBQW9CLEdBQUdIO1FBQ3ZCRyxrQkFBa0IsR0FBR0Y7UUFDckJFLHNCQUFzQixHQUFHRDtRQUN6QkMsMEJBQTBCLEdBQUdyQztRQUM3QnFDLGNBQWMsR0FBR2hDO0lBQ2Y7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzPzQ5NmEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgKGZ1bmN0aW9uKCkge1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBBVFRFTlRJT05cbi8vIFdoZW4gYWRkaW5nIG5ldyBzeW1ib2xzIHRvIHRoaXMgZmlsZSxcbi8vIFBsZWFzZSBjb25zaWRlciBhbHNvIGFkZGluZyB0byAncmVhY3QtZGV2dG9vbHMtc2hhcmVkL3NyYy9iYWNrZW5kL1JlYWN0U3ltYm9scydcbi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudC1saWtlIHR5cGVzLlxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKTtcbnZhciBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnBvcnRhbCcpO1xudmFyIFJFQUNUX0ZSQUdNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5mcmFnbWVudCcpO1xudmFyIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdHJpY3RfbW9kZScpO1xudmFyIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm9maWxlcicpO1xudmFyIFJFQUNUX1BST1ZJREVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm92aWRlcicpO1xudmFyIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNvbnRleHQnKTtcbnZhciBSRUFDVF9TRVJWRVJfQ09OVEVYVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc2VydmVyX2NvbnRleHQnKTtcbnZhciBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZm9yd2FyZF9yZWYnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2UnKTtcbnZhciBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZV9saXN0Jyk7XG52YXIgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcigncmVhY3QubWVtbycpO1xudmFyIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmxhenknKTtcbnZhciBSRUFDVF9PRkZTQ1JFRU5fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm9mZnNjcmVlbicpO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG52YXIgZW5hYmxlU2NvcGVBUEkgPSBmYWxzZTsgLy8gRXhwZXJpbWVudGFsIENyZWF0ZSBFdmVudCBIYW5kbGUgQVBJLlxudmFyIGVuYWJsZUNhY2hlRWxlbWVudCA9IGZhbHNlO1xudmFyIGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nID0gZmFsc2U7IC8vIE5vIGtub3duIGJ1Z3MsIGJ1dCBuZWVkcyBwZXJmb3JtYW5jZSB0ZXN0aW5nXG5cbnZhciBlbmFibGVMZWdhY3lIaWRkZW4gPSBmYWxzZTsgLy8gRW5hYmxlcyB1bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjayBmZWF0dXJlIGluIEZpYmVyXG4vLyBzdHVmZi4gSW50ZW5kZWQgdG8gZW5hYmxlIFJlYWN0IGNvcmUgbWVtYmVycyB0byBtb3JlIGVhc2lseSBkZWJ1ZyBzY2hlZHVsaW5nXG4vLyBpc3N1ZXMgaW4gREVWIGJ1aWxkcy5cblxudmFyIGVuYWJsZURlYnVnVHJhY2luZyA9IGZhbHNlOyAvLyBUcmFjayB3aGljaCBGaWJlcihzKSBzY2hlZHVsZSByZW5kZXIgd29yay5cblxudmFyIFJFQUNUX01PRFVMRV9SRUZFUkVOQ0U7XG5cbntcbiAgUkVBQ1RfTU9EVUxFX1JFRkVSRU5DRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm1vZHVsZS5yZWZlcmVuY2UnKTtcbn1cblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIE5vdGU6IHR5cGVvZiBtaWdodCBiZSBvdGhlciB0aGFuICdzeW1ib2wnIG9yICdudW1iZXInIChlLmcuIGlmIGl0J3MgYSBwb2x5ZmlsbCkuXG5cblxuICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFIHx8IGVuYWJsZURlYnVnVHJhY2luZyAgfHwgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fCBlbmFibGVMZWdhY3lIaWRkZW4gIHx8IHR5cGUgPT09IFJFQUNUX09GRlNDUkVFTl9UWVBFIHx8IGVuYWJsZVNjb3BlQVBJICB8fCBlbmFibGVDYWNoZUVsZW1lbnQgIHx8IGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nICkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0JyAmJiB0eXBlICE9PSBudWxsKSB7XG4gICAgaWYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9NRU1PX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfUFJPVklERVJfVFlQRSB8fCB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DT05URVhUX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSB8fCAvLyBUaGlzIG5lZWRzIHRvIGluY2x1ZGUgYWxsIHBvc3NpYmxlIG1vZHVsZSByZWZlcmVuY2Ugb2JqZWN0XG4gICAgLy8gdHlwZXMgc3VwcG9ydGVkIGJ5IGFueSBGbGlnaHQgY29uZmlndXJhdGlvbiBhbnl3aGVyZSBzaW5jZVxuICAgIC8vIHdlIGRvbid0IGtub3cgd2hpY2ggRmxpZ2h0IGJ1aWxkIHRoaXMgd2lsbCBlbmQgdXAgYmVpbmcgdXNlZFxuICAgIC8vIHdpdGguXG4gICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTU9EVUxFX1JFRkVSRU5DRSB8fCB0eXBlLmdldE1vZHVsZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gdHlwZU9mKG9iamVjdCkge1xuICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsKSB7XG4gICAgdmFyICQkdHlwZW9mID0gb2JqZWN0LiQkdHlwZW9mO1xuXG4gICAgc3dpdGNoICgkJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgIHZhciB0eXBlID0gb2JqZWN0LnR5cGU7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdmFyICQkdHlwZW9mVHlwZSA9IHR5cGUgJiYgdHlwZS4kJHR5cGVvZjtcblxuICAgICAgICAgICAgc3dpdGNoICgkJHR5cGVvZlR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9TRVJWRVJfQ09OVEVYVF9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICAgIGNhc2UgUkVBQ1RfUFJPVklERVJfVFlQRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJCR0eXBlb2ZUeXBlO1xuXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgcmV0dXJuICQkdHlwZW9mO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG52YXIgQ29udGV4dENvbnN1bWVyID0gUkVBQ1RfQ09OVEVYVF9UWVBFO1xudmFyIENvbnRleHRQcm92aWRlciA9IFJFQUNUX1BST1ZJREVSX1RZUEU7XG52YXIgRWxlbWVudCA9IFJFQUNUX0VMRU1FTlRfVFlQRTtcbnZhciBGb3J3YXJkUmVmID0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTtcbnZhciBGcmFnbWVudCA9IFJFQUNUX0ZSQUdNRU5UX1RZUEU7XG52YXIgTGF6eSA9IFJFQUNUX0xBWllfVFlQRTtcbnZhciBNZW1vID0gUkVBQ1RfTUVNT19UWVBFO1xudmFyIFBvcnRhbCA9IFJFQUNUX1BPUlRBTF9UWVBFO1xudmFyIFByb2ZpbGVyID0gUkVBQ1RfUFJPRklMRVJfVFlQRTtcbnZhciBTdHJpY3RNb2RlID0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbnZhciBTdXNwZW5zZSA9IFJFQUNUX1NVU1BFTlNFX1RZUEU7XG52YXIgU3VzcGVuc2VMaXN0ID0gUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFO1xudmFyIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlID0gZmFsc2U7XG52YXIgaGFzV2FybmVkQWJvdXREZXByZWNhdGVkSXNDb25jdXJyZW50TW9kZSA9IGZhbHNlOyAvLyBBc3luY01vZGUgc2hvdWxkIGJlIGRlcHJlY2F0ZWRcblxuZnVuY3Rpb24gaXNBc3luY01vZGUob2JqZWN0KSB7XG4gIHtcbiAgICBpZiAoIWhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQXN5bmNNb2RlKSB7XG4gICAgICBoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSA9IHRydWU7IC8vIFVzaW5nIGNvbnNvbGVbJ3dhcm4nXSB0byBldmFkZSBCYWJlbCBhbmQgRVNMaW50XG5cbiAgICAgIGNvbnNvbGVbJ3dhcm4nXSgnVGhlIFJlYWN0SXMuaXNBc3luY01vZGUoKSBhbGlhcyBoYXMgYmVlbiBkZXByZWNhdGVkLCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUmVhY3QgMTgrLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzQ29uY3VycmVudE1vZGUob2JqZWN0KSB7XG4gIHtcbiAgICBpZiAoIWhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQ29uY3VycmVudE1vZGUpIHtcbiAgICAgIGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQ29uY3VycmVudE1vZGUgPSB0cnVlOyAvLyBVc2luZyBjb25zb2xlWyd3YXJuJ10gdG8gZXZhZGUgQmFiZWwgYW5kIEVTTGludFxuXG4gICAgICBjb25zb2xlWyd3YXJuJ10oJ1RoZSBSZWFjdElzLmlzQ29uY3VycmVudE1vZGUoKSBhbGlhcyBoYXMgYmVlbiBkZXByZWNhdGVkLCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUmVhY3QgMTgrLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGlzQ29udGV4dENvbnN1bWVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX0NPTlRFWFRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzQ29udGV4dFByb3ZpZGVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BST1ZJREVSX1RZUEU7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XG59XG5mdW5jdGlvbiBpc0ZvcndhcmRSZWYob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzRnJhZ21lbnQob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzTGF6eShvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVPZihvYmplY3QpID09PSBSRUFDVF9MQVpZX1RZUEU7XG59XG5mdW5jdGlvbiBpc01lbW8ob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfTUVNT19UWVBFO1xufVxuZnVuY3Rpb24gaXNQb3J0YWwob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfUE9SVEFMX1RZUEU7XG59XG5mdW5jdGlvbiBpc1Byb2ZpbGVyKG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG59XG5mdW5jdGlvbiBpc1N0cmljdE1vZGUob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3VzcGVuc2Uob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlT2Yob2JqZWN0KSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRTtcbn1cbmZ1bmN0aW9uIGlzU3VzcGVuc2VMaXN0KG9iamVjdCkge1xuICByZXR1cm4gdHlwZU9mKG9iamVjdCkgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTtcbn1cblxuZXhwb3J0cy5Db250ZXh0Q29uc3VtZXIgPSBDb250ZXh0Q29uc3VtZXI7XG5leHBvcnRzLkNvbnRleHRQcm92aWRlciA9IENvbnRleHRQcm92aWRlcjtcbmV4cG9ydHMuRWxlbWVudCA9IEVsZW1lbnQ7XG5leHBvcnRzLkZvcndhcmRSZWYgPSBGb3J3YXJkUmVmO1xuZXhwb3J0cy5GcmFnbWVudCA9IEZyYWdtZW50O1xuZXhwb3J0cy5MYXp5ID0gTGF6eTtcbmV4cG9ydHMuTWVtbyA9IE1lbW87XG5leHBvcnRzLlBvcnRhbCA9IFBvcnRhbDtcbmV4cG9ydHMuUHJvZmlsZXIgPSBQcm9maWxlcjtcbmV4cG9ydHMuU3RyaWN0TW9kZSA9IFN0cmljdE1vZGU7XG5leHBvcnRzLlN1c3BlbnNlID0gU3VzcGVuc2U7XG5leHBvcnRzLlN1c3BlbnNlTGlzdCA9IFN1c3BlbnNlTGlzdDtcbmV4cG9ydHMuaXNBc3luY01vZGUgPSBpc0FzeW5jTW9kZTtcbmV4cG9ydHMuaXNDb25jdXJyZW50TW9kZSA9IGlzQ29uY3VycmVudE1vZGU7XG5leHBvcnRzLmlzQ29udGV4dENvbnN1bWVyID0gaXNDb250ZXh0Q29uc3VtZXI7XG5leHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyID0gaXNDb250ZXh0UHJvdmlkZXI7XG5leHBvcnRzLmlzRWxlbWVudCA9IGlzRWxlbWVudDtcbmV4cG9ydHMuaXNGb3J3YXJkUmVmID0gaXNGb3J3YXJkUmVmO1xuZXhwb3J0cy5pc0ZyYWdtZW50ID0gaXNGcmFnbWVudDtcbmV4cG9ydHMuaXNMYXp5ID0gaXNMYXp5O1xuZXhwb3J0cy5pc01lbW8gPSBpc01lbW87XG5leHBvcnRzLmlzUG9ydGFsID0gaXNQb3J0YWw7XG5leHBvcnRzLmlzUHJvZmlsZXIgPSBpc1Byb2ZpbGVyO1xuZXhwb3J0cy5pc1N0cmljdE1vZGUgPSBpc1N0cmljdE1vZGU7XG5leHBvcnRzLmlzU3VzcGVuc2UgPSBpc1N1c3BlbnNlO1xuZXhwb3J0cy5pc1N1c3BlbnNlTGlzdCA9IGlzU3VzcGVuc2VMaXN0O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGUgPSBpc1ZhbGlkRWxlbWVudFR5cGU7XG5leHBvcnRzLnR5cGVPZiA9IHR5cGVPZjtcbiAgfSkoKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9jZXNzIiwiUkVBQ1RfRUxFTUVOVF9UWVBFIiwiU3ltYm9sIiwiZm9yIiwiUkVBQ1RfUE9SVEFMX1RZUEUiLCJSRUFDVF9GUkFHTUVOVF9UWVBFIiwiUkVBQ1RfU1RSSUNUX01PREVfVFlQRSIsIlJFQUNUX1BST0ZJTEVSX1RZUEUiLCJSRUFDVF9QUk9WSURFUl9UWVBFIiwiUkVBQ1RfQ09OVEVYVF9UWVBFIiwiUkVBQ1RfU0VSVkVSX0NPTlRFWFRfVFlQRSIsIlJFQUNUX0ZPUldBUkRfUkVGX1RZUEUiLCJSRUFDVF9TVVNQRU5TRV9UWVBFIiwiUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFIiwiUkVBQ1RfTUVNT19UWVBFIiwiUkVBQ1RfTEFaWV9UWVBFIiwiUkVBQ1RfT0ZGU0NSRUVOX1RZUEUiLCJlbmFibGVTY29wZUFQSSIsImVuYWJsZUNhY2hlRWxlbWVudCIsImVuYWJsZVRyYW5zaXRpb25UcmFjaW5nIiwiZW5hYmxlTGVnYWN5SGlkZGVuIiwiZW5hYmxlRGVidWdUcmFjaW5nIiwiUkVBQ1RfTU9EVUxFX1JFRkVSRU5DRSIsImlzVmFsaWRFbGVtZW50VHlwZSIsInR5cGUiLCIkJHR5cGVvZiIsImdldE1vZHVsZUlkIiwidW5kZWZpbmVkIiwidHlwZU9mIiwib2JqZWN0IiwiJCR0eXBlb2ZUeXBlIiwiQ29udGV4dENvbnN1bWVyIiwiQ29udGV4dFByb3ZpZGVyIiwiRWxlbWVudCIsIkZvcndhcmRSZWYiLCJGcmFnbWVudCIsIkxhenkiLCJNZW1vIiwiUG9ydGFsIiwiUHJvZmlsZXIiLCJTdHJpY3RNb2RlIiwiU3VzcGVuc2UiLCJTdXNwZW5zZUxpc3QiLCJoYXNXYXJuZWRBYm91dERlcHJlY2F0ZWRJc0FzeW5jTW9kZSIsImhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZElzQ29uY3VycmVudE1vZGUiLCJpc0FzeW5jTW9kZSIsImNvbnNvbGUiLCJpc0NvbmN1cnJlbnRNb2RlIiwiaXNDb250ZXh0Q29uc3VtZXIiLCJpc0NvbnRleHRQcm92aWRlciIsImlzRWxlbWVudCIsImlzRm9yd2FyZFJlZiIsImlzRnJhZ21lbnQiLCJpc0xhenkiLCJpc01lbW8iLCJpc1BvcnRhbCIsImlzUHJvZmlsZXIiLCJpc1N0cmljdE1vZGUiLCJpc1N1c3BlbnNlIiwiaXNTdXNwZW5zZUxpc3QiLCJleHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-is/cjs/react-is.development.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-is/index.js":
/*!****************************************!*\
!*** ./node_modules/react-is/index.js ***!
\****************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ \"(app-pages-browser)/./node_modules/react-is/cjs/react-is.development.js\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUVBLElBQUlBLEtBQXlCLEVBQWMsRUFFMUMsTUFBTTtJQUNMQyxvSkFBeUI7QUFDM0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzP2IzMTMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicHJvY2VzcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXF1aXJlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-is/index.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/components/Context.js":
/*!***********************************************************!*\
!*** ./node_modules/react-redux/es/components/Context.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReactReduxContext: function() { return /* binding */ ReactReduxContext; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nconst ContextKey = Symbol.for(\"react-redux-context\");\nconst gT = typeof globalThis !== \"undefined\" ? globalThis : /* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */ {};\nfunction getContext() {\n var _gT$ContextKey;\n if (!react__WEBPACK_IMPORTED_MODULE_0__.createContext) return {};\n const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n let realContext = contextMap.get(react__WEBPACK_IMPORTED_MODULE_0__.createContext);\n if (!realContext) {\n realContext = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);\n if (true) {\n realContext.displayName = \"ReactRedux\";\n }\n contextMap.set(react__WEBPACK_IMPORTED_MODULE_0__.createContext, realContext);\n }\n return realContext;\n}\nconst ReactReduxContext = /*#__PURE__*/ getContext();\n/* harmony default export */ __webpack_exports__[\"default\"] = (ReactReduxContext);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb21wb25lbnRzL0NvbnRleHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQStCO0FBQy9CLE1BQU1DLGFBQWFDLE9BQU9DLEdBQUcsQ0FBRTtBQUMvQixNQUFNQyxLQUFLLE9BQU9DLGVBQWUsY0FBY0EsYUFDL0Msd0ZBQXdGLEdBQ3hGLENBQUM7QUFFRCxTQUFTQztJQUNQLElBQUlDO0lBRUosSUFBSSxDQUFDUCxnREFBbUIsRUFBRSxPQUFPLENBQUM7SUFDbEMsTUFBTVMsYUFBYSxDQUFDRixpQkFBaUJILEVBQUUsQ0FBQ0gsV0FBVyxLQUFLLE9BQU9NLGlCQUFpQkgsRUFBRSxDQUFDSCxXQUFXLEdBQUcsSUFBSVM7SUFDckcsSUFBSUMsY0FBY0YsV0FBV0csR0FBRyxDQUFDWixnREFBbUI7SUFFcEQsSUFBSSxDQUFDVyxhQUFhO1FBQ2hCQSw0QkFBY1gsZ0RBQW1CLENBQUM7UUFFbEMsSUFBSWEsSUFBeUIsRUFBYztZQUN6Q0YsWUFBWUcsV0FBVyxHQUFHO1FBQzVCO1FBRUFMLFdBQVdNLEdBQUcsQ0FBQ2YsZ0RBQW1CLEVBQUVXO0lBQ3RDO0lBRUEsT0FBT0E7QUFDVDtBQUVPLE1BQU1LLG9CQUFvQixXQUFXLEdBQUVWLGFBQWE7QUFDM0QsK0RBQWVVLGlCQUFpQkEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29tcG9uZW50cy9Db250ZXh0LmpzPzRiZTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgQ29udGV4dEtleSA9IFN5bWJvbC5mb3IoYHJlYWN0LXJlZHV4LWNvbnRleHRgKTtcbmNvbnN0IGdUID0gdHlwZW9mIGdsb2JhbFRoaXMgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxUaGlzIDpcbi8qIGZhbGwgYmFjayB0byBhIHBlci1tb2R1bGUgc2NvcGUgKHByZS04LjEgYmVoYXZpb3VyKSBpZiBgZ2xvYmFsVGhpc2AgaXMgbm90IGF2YWlsYWJsZSAqL1xue307XG5cbmZ1bmN0aW9uIGdldENvbnRleHQoKSB7XG4gIHZhciBfZ1QkQ29udGV4dEtleTtcblxuICBpZiAoIVJlYWN0LmNyZWF0ZUNvbnRleHQpIHJldHVybiB7fTtcbiAgY29uc3QgY29udGV4dE1hcCA9IChfZ1QkQ29udGV4dEtleSA9IGdUW0NvbnRleHRLZXldKSAhPSBudWxsID8gX2dUJENvbnRleHRLZXkgOiBnVFtDb250ZXh0S2V5XSA9IG5ldyBNYXAoKTtcbiAgbGV0IHJlYWxDb250ZXh0ID0gY29udGV4dE1hcC5nZXQoUmVhY3QuY3JlYXRlQ29udGV4dCk7XG5cbiAgaWYgKCFyZWFsQ29udGV4dCkge1xuICAgIHJlYWxDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICByZWFsQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdSZWFjdFJlZHV4JztcbiAgICB9XG5cbiAgICBjb250ZXh0TWFwLnNldChSZWFjdC5jcmVhdGVDb250ZXh0LCByZWFsQ29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcmVhbENvbnRleHQ7XG59XG5cbmV4cG9ydCBjb25zdCBSZWFjdFJlZHV4Q29udGV4dCA9IC8qI19fUFVSRV9fKi9nZXRDb250ZXh0KCk7XG5leHBvcnQgZGVmYXVsdCBSZWFjdFJlZHV4Q29udGV4dDsiXSwibmFtZXMiOlsiUmVhY3QiLCJDb250ZXh0S2V5IiwiU3ltYm9sIiwiZm9yIiwiZ1QiLCJnbG9iYWxUaGlzIiwiZ2V0Q29udGV4dCIsIl9nVCRDb250ZXh0S2V5IiwiY3JlYXRlQ29udGV4dCIsImNvbnRleHRNYXAiLCJNYXAiLCJyZWFsQ29udGV4dCIsImdldCIsInByb2Nlc3MiLCJkaXNwbGF5TmFtZSIsInNldCIsIlJlYWN0UmVkdXhDb250ZXh0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/components/Context.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/components/Provider.js":
/*!************************************************************!*\
!*** ./node_modules/react-redux/es/components/Provider.js ***!
\************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Context */ \"(app-pages-browser)/./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/Subscription */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/Subscription.js\");\n/* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js\");\nvar _s = $RefreshSig$();\n\n\n\n\nfunction Provider(param) {\n let { store, context, children, serverState, stabilityCheck = \"once\", noopCheck = \"once\" } = param;\n _s();\n const contextValue = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>{\n const subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_2__.createSubscription)(store);\n return {\n store,\n subscription,\n getServerState: serverState ? ()=>serverState : undefined,\n stabilityCheck,\n noopCheck\n };\n }, [\n store,\n serverState,\n stabilityCheck,\n noopCheck\n ]);\n const previousState = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>store.getState(), [\n store\n ]);\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect)(()=>{\n const { subscription } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n return ()=>{\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [\n contextValue,\n previousState\n ]);\n const Context = context || _Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n_s(Provider, \"UYZUOdaFWZnoeXRb2Yd5sJGEKkk=\", false, function() {\n return [\n _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_3__.useIsomorphicLayoutEffect\n ];\n});\n_c = Provider;\n/* harmony default export */ __webpack_exports__[\"default\"] = (Provider);\nvar _c;\n$RefreshReg$(_c, \"Provider\");\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb21wb25lbnRzL1Byb3ZpZGVyLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0I7QUFDZTtBQUNhO0FBQ29CO0FBRS9FLFNBQVNJLFNBQVMsS0FPakI7UUFQaUIsRUFDaEJDLEtBQUssRUFDTEMsT0FBTyxFQUNQQyxRQUFRLEVBQ1JDLFdBQVcsRUFDWEMsaUJBQWlCLE1BQU0sRUFDdkJDLFlBQVksTUFBTSxFQUNuQixHQVBpQjs7SUFRaEIsTUFBTUMsZUFBZVgsMENBQWEsQ0FBQztRQUNqQyxNQUFNYSxlQUFlWCx1RUFBa0JBLENBQUNHO1FBQ3hDLE9BQU87WUFDTEE7WUFDQVE7WUFDQUMsZ0JBQWdCTixjQUFjLElBQU1BLGNBQWNPO1lBQ2xETjtZQUNBQztRQUNGO0lBQ0YsR0FBRztRQUFDTDtRQUFPRztRQUFhQztRQUFnQkM7S0FBVTtJQUNsRCxNQUFNTSxnQkFBZ0JoQiwwQ0FBYSxDQUFDLElBQU1LLE1BQU1ZLFFBQVEsSUFBSTtRQUFDWjtLQUFNO0lBQ25FRiwyRkFBeUJBLENBQUM7UUFDeEIsTUFBTSxFQUNKVSxZQUFZLEVBQ2IsR0FBR0Y7UUFDSkUsYUFBYUssYUFBYSxHQUFHTCxhQUFhTSxnQkFBZ0I7UUFDMUROLGFBQWFPLFlBQVk7UUFFekIsSUFBSUosa0JBQWtCWCxNQUFNWSxRQUFRLElBQUk7WUFDdENKLGFBQWFNLGdCQUFnQjtRQUMvQjtRQUVBLE9BQU87WUFDTE4sYUFBYVEsY0FBYztZQUMzQlIsYUFBYUssYUFBYSxHQUFHSDtRQUMvQjtJQUNGLEdBQUc7UUFBQ0o7UUFBY0s7S0FBYztJQUNoQyxNQUFNTSxVQUFVaEIsV0FBV0wsdURBQWlCQSxFQUFFLDZIQUE2SDtJQUUzSyxPQUFPLFdBQVcsR0FBRUQsZ0RBQW1CLENBQUNzQixRQUFRbEIsUUFBUSxFQUFFO1FBQ3hEb0IsT0FBT2I7SUFDVCxHQUFHSjtBQUNMO0dBeENTSDs7UUFtQlBELHVGQUF5QkE7OztLQW5CbEJDO0FBMENULCtEQUFlQSxRQUFRQSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb21wb25lbnRzL1Byb3ZpZGVyLmpzP2RiYjUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVhY3RSZWR1eENvbnRleHQgfSBmcm9tICcuL0NvbnRleHQnO1xuaW1wb3J0IHsgY3JlYXRlU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi4vdXRpbHMvU3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgfSBmcm9tICcuLi91dGlscy91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0JztcblxuZnVuY3Rpb24gUHJvdmlkZXIoe1xuICBzdG9yZSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW4sXG4gIHNlcnZlclN0YXRlLFxuICBzdGFiaWxpdHlDaGVjayA9ICdvbmNlJyxcbiAgbm9vcENoZWNrID0gJ29uY2UnXG59KSB7XG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IGNyZWF0ZVN1YnNjcmlwdGlvbihzdG9yZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0b3JlLFxuICAgICAgc3Vic2NyaXB0aW9uLFxuICAgICAgZ2V0U2VydmVyU3RhdGU6IHNlcnZlclN0YXRlID8gKCkgPT4gc2VydmVyU3RhdGUgOiB1bmRlZmluZWQsXG4gICAgICBzdGFiaWxpdHlDaGVjayxcbiAgICAgIG5vb3BDaGVja1xuICAgIH07XG4gIH0sIFtzdG9yZSwgc2VydmVyU3RhdGUsIHN0YWJpbGl0eUNoZWNrLCBub29wQ2hlY2tdKTtcbiAgY29uc3QgcHJldmlvdXNTdGF0ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gc3RvcmUuZ2V0U3RhdGUoKSwgW3N0b3JlXSk7XG4gIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHN1YnNjcmlwdGlvblxuICAgIH0gPSBjb250ZXh0VmFsdWU7XG4gICAgc3Vic2NyaXB0aW9uLm9uU3RhdGVDaGFuZ2UgPSBzdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3VicztcbiAgICBzdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7XG5cbiAgICBpZiAocHJldmlvdXNTdGF0ZSAhPT0gc3RvcmUuZ2V0U3RhdGUoKSkge1xuICAgICAgc3Vic2NyaXB0aW9uLm5vdGlmeU5lc3RlZFN1YnMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uLnRyeVVuc3Vic2NyaWJlKCk7XG4gICAgICBzdWJzY3JpcHRpb24ub25TdGF0ZUNoYW5nZSA9IHVuZGVmaW5lZDtcbiAgICB9O1xuICB9LCBbY29udGV4dFZhbHVlLCBwcmV2aW91c1N0YXRlXSk7XG4gIGNvbnN0IENvbnRleHQgPSBjb250ZXh0IHx8IFJlYWN0UmVkdXhDb250ZXh0OyAvLyBAdHMtaWdub3JlICdBbnlBY3Rpb24nIGlzIGFzc2lnbmFibGUgdG8gdGhlIGNvbnN0cmFpbnQgb2YgdHlwZSAnQScsIGJ1dCAnQScgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNvbnRleHRWYWx1ZVxuICB9LCBjaGlsZHJlbik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFByb3ZpZGVyOyJdLCJuYW1lcyI6WyJSZWFjdCIsIlJlYWN0UmVkdXhDb250ZXh0IiwiY3JlYXRlU3Vic2NyaXB0aW9uIiwidXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCIsIlByb3ZpZGVyIiwic3RvcmUiLCJjb250ZXh0IiwiY2hpbGRyZW4iLCJzZXJ2ZXJTdGF0ZSIsInN0YWJpbGl0eUNoZWNrIiwibm9vcENoZWNrIiwiY29udGV4dFZhbHVlIiwidXNlTWVtbyIsInN1YnNjcmlwdGlvbiIsImdldFNlcnZlclN0YXRlIiwidW5kZWZpbmVkIiwicHJldmlvdXNTdGF0ZSIsImdldFN0YXRlIiwib25TdGF0ZUNoYW5nZSIsIm5vdGlmeU5lc3RlZFN1YnMiLCJ0cnlTdWJzY3JpYmUiLCJ0cnlVbnN1YnNjcmliZSIsIkNvbnRleHQiLCJjcmVhdGVFbGVtZW50IiwidmFsdWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/components/Provider.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/components/connect.js":
/*!***********************************************************!*\
!*** ./node_modules/react-redux/es/components/connect.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initializeConnect: function() { return /* binding */ initializeConnect; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! hoist-non-react-statics */ \"(app-pages-browser)/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\");\n/* harmony import */ var hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-is */ \"(app-pages-browser)/./node_modules/react-is/index.js\");\n/* harmony import */ var _connect_selectorFactory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../connect/selectorFactory */ \"(app-pages-browser)/./node_modules/react-redux/es/connect/selectorFactory.js\");\n/* harmony import */ var _connect_mapDispatchToProps__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../connect/mapDispatchToProps */ \"(app-pages-browser)/./node_modules/react-redux/es/connect/mapDispatchToProps.js\");\n/* harmony import */ var _connect_mapStateToProps__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../connect/mapStateToProps */ \"(app-pages-browser)/./node_modules/react-redux/es/connect/mapStateToProps.js\");\n/* harmony import */ var _connect_mergeProps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../connect/mergeProps */ \"(app-pages-browser)/./node_modules/react-redux/es/connect/mergeProps.js\");\n/* harmony import */ var _utils_Subscription__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/Subscription */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/Subscription.js\");\n/* harmony import */ var _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/useIsomorphicLayoutEffect */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js\");\n/* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/shallowEqual */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/shallowEqual.js\");\n/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/warning */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/warning.js\");\n/* harmony import */ var _Context__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Context */ \"(app-pages-browser)/./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/useSyncExternalStore */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/useSyncExternalStore.js\");\nvar _s = $RefreshSig$();\n\n\nconst _excluded = [\n \"reactReduxForwardedRef\"\n];\n/* eslint-disable valid-jsdoc, @typescript-eslint/no-unused-vars */ \n\n\n\n\n\n\n\n\n\n\n\n\nlet useSyncExternalStore = _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_14__.notInitialized;\nconst initializeConnect = (fn)=>{\n useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\nconst EMPTY_ARRAY = [\n null,\n 0\n];\nconst NO_SUBSCRIPTION_ARRAY = [\n null,\n null\n]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\nconst stringifyComponent = (Comp)=>{\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n// and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n _s();\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(()=>effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n_s(useIsomorphicLayoutEffectWithArgs, \"Vd+jpwighRca2oU8HoLqd+zm4Bo=\", false, function() {\n return [\n _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect\n ];\n});\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, additionalSubscribeListener) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return ()=>{}; // Capture values for checking if and when this component unmounts\n let didUnsubscribe = false;\n let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n const checkForUpdates = ()=>{\n if (didUnsubscribe || !isMounted.current) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n const latestStoreState = store.getState();\n let newChildProps, error;\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n // Trigger the React `useSyncExternalStore` subscriber\n additionalSubscribeListener();\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n checkForUpdates();\n const unsubscribeWrapper = ()=>{\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\nconst initStateUpdates = ()=>EMPTY_ARRAY;\nfunction strictEqual(a, b) {\n return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */ let hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */ function connect(mapStateToProps, mapDispatchToProps, mergeProps) {\n let { // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure, areStatesEqual = strictEqual, areOwnPropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__[\"default\"], areStatePropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__[\"default\"], areMergedPropsEqual = _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_11__[\"default\"], // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false, // the context consumer to use\n context = _Context__WEBPACK_IMPORTED_MODULE_13__.ReactReduxContext } = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};\n if (true) {\n if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n (0,_utils_warning__WEBPACK_IMPORTED_MODULE_12__[\"default\"])('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n }\n }\n const Context = context;\n const initMapStateToProps = (0,_connect_mapStateToProps__WEBPACK_IMPORTED_MODULE_7__.mapStateToPropsFactory)(mapStateToProps);\n const initMapDispatchToProps = (0,_connect_mapDispatchToProps__WEBPACK_IMPORTED_MODULE_6__.mapDispatchToPropsFactory)(mapDispatchToProps);\n const initMergeProps = (0,_connect_mergeProps__WEBPACK_IMPORTED_MODULE_8__.mergePropsFactory)(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n const wrapWithConnect = (WrappedComponent)=>{\n var _s = $RefreshSig$();\n if ( true && !(0,react_is__WEBPACK_IMPORTED_MODULE_4__.isValidElementType)(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by connect. Instead received \".concat(stringifyComponent(WrappedComponent)));\n }\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n const displayName = \"Connect(\".concat(wrappedComponentName, \")\");\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n // @ts-ignore\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n function ConnectFunction(props) {\n _s();\n const [propsContext, reactReduxForwardedRef, wrapperProps] = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(()=>{\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n const { reactReduxForwardedRef } = props, wrapperProps = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(props, _excluded);\n return [\n props.context,\n reactReduxForwardedRef,\n wrapperProps\n ];\n }, [\n props\n ]);\n const ContextToUse = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(()=>{\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && // @ts-ignore\n (0,react_is__WEBPACK_IMPORTED_MODULE_4__.isContextConsumer)(/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_3__.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [\n propsContext,\n Context\n ]); // Retrieve the store and ancestor subscription via context, if available\n const contextValue = react__WEBPACK_IMPORTED_MODULE_3__.useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n if ( true && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error('Could not find \"store\" in the context of ' + '\"'.concat(displayName, '\". Either wrap the root component in a , ') + \"or pass a custom React context provider to and the corresponding \" + \"React context consumer to \".concat(displayName, \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(()=>{\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return (0,_connect_selectorFactory__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(store.dispatch, selectorFactoryOptions);\n }, [\n store\n ]);\n const [subscription, notifyNestedSubs] = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(()=>{\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n const subscription = (0,_utils_Subscription__WEBPACK_IMPORTED_MODULE_9__.createSubscription)(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [\n subscription,\n notifyNestedSubs\n ];\n }, [\n store,\n didStoreComeFromProps,\n contextValue\n ]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n const overriddenContextValue = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(()=>{\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, contextValue, {\n subscription\n });\n }, [\n didStoreComeFromProps,\n contextValue,\n subscription\n ]); // Set up refs to coordinate values between the subscription effect and the render logic\n const lastChildProps = react__WEBPACK_IMPORTED_MODULE_3__.useRef();\n const lastWrapperProps = react__WEBPACK_IMPORTED_MODULE_3__.useRef(wrapperProps);\n const childPropsFromStoreUpdate = react__WEBPACK_IMPORTED_MODULE_3__.useRef();\n const renderIsScheduled = react__WEBPACK_IMPORTED_MODULE_3__.useRef(false);\n const isProcessingDispatch = react__WEBPACK_IMPORTED_MODULE_3__.useRef(false);\n const isMounted = react__WEBPACK_IMPORTED_MODULE_3__.useRef(false);\n const latestSubscriptionCallbackError = react__WEBPACK_IMPORTED_MODULE_3__.useRef();\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(()=>{\n isMounted.current = true;\n return ()=>{\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(()=>{\n const selector = ()=>{\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n return childPropsSelector(store.getState(), wrapperProps);\n };\n return selector;\n }, [\n store,\n wrapperProps\n ]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n const subscribeForReact = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(()=>{\n const subscribe = (reactListener)=>{\n if (!subscription) {\n return ()=>{};\n }\n return subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n };\n return subscribe;\n }, [\n subscription\n ]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [\n lastWrapperProps,\n lastChildProps,\n renderIsScheduled,\n wrapperProps,\n childPropsFromStoreUpdate,\n notifyNestedSubs\n ]);\n let actualChildProps;\n try {\n actualChildProps = useSyncExternalStore(subscribeForReact, // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector, getServerState ? ()=>childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += \"\\nThe error may be correlated with this previous error:\\n\".concat(latestSubscriptionCallbackError.current.stack, \"\\n\\n\");\n }\n throw err;\n }\n (0,_utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect)(()=>{\n latestSubscriptionCallbackError.current = undefined;\n childPropsFromStoreUpdate.current = undefined;\n lastChildProps.current = actualChildProps;\n }); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n const renderedWrappedComponent = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(()=>{\n return(/*#__PURE__*/ // @ts-ignore\n react__WEBPACK_IMPORTED_MODULE_3__.createElement(WrappedComponent, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, actualChildProps, {\n ref: reactReduxForwardedRef\n })));\n }, [\n reactReduxForwardedRef,\n WrappedComponent,\n actualChildProps\n ]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n const renderedChild = react__WEBPACK_IMPORTED_MODULE_3__.useMemo(()=>{\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_3__.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n return renderedWrappedComponent;\n }, [\n ContextToUse,\n renderedWrappedComponent,\n overriddenContextValue\n ]);\n return renderedChild;\n }\n _s(ConnectFunction, \"YlsbgChiRX6N9qJQvI85/COlsOk=\", false, function() {\n return [\n _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect,\n useIsomorphicLayoutEffectWithArgs,\n _utils_useIsomorphicLayoutEffect__WEBPACK_IMPORTED_MODULE_10__.useIsomorphicLayoutEffect\n ];\n });\n const _Connect = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_3__.memo(ConnectFunction);\n // Add a hacky cast to get the right output type\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n if (forwardRef) {\n const _forwarded = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_3__.forwardRef(function forwardConnectRef(props, ref) {\n // @ts-ignore\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_3__.createElement(Connect, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(forwarded, WrappedComponent);\n }\n return hoist_non_react_statics__WEBPACK_IMPORTED_MODULE_2___default()(Connect, WrappedComponent);\n };\n return wrapWithConnect;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (connect);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb21wb25lbnRzL2Nvbm5lY3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUEwRDtBQUMwQztBQUNwRyxNQUFNRSxZQUFZO0lBQUM7Q0FBeUI7QUFFNUMsaUVBQWlFLEdBQ2Q7QUFDcEI7QUFDa0M7QUFDRDtBQUNVO0FBQ047QUFDVjtBQUNDO0FBQ29CO0FBQzlCO0FBQ1Y7QUFDTztBQUNpQjtBQUMvRCxJQUFJZSx1QkFBdUJELHdFQUFjQTtBQUNsQyxNQUFNRSxvQkFBb0JDLENBQUFBO0lBQy9CRix1QkFBdUJFO0FBQ3pCLEVBQUUsQ0FBQyw4REFBOEQ7QUFFakUsTUFBTUMsY0FBYztJQUFDO0lBQU07Q0FBRTtBQUM3QixNQUFNQyx3QkFBd0I7SUFBQztJQUFNO0NBQUssRUFBRSw0RUFBNEU7QUFDeEgsa0NBQWtDO0FBRWxDLE1BQU1DLHFCQUFxQkMsQ0FBQUE7SUFDekIsSUFBSTtRQUNGLE9BQU9DLEtBQUtDLFNBQVMsQ0FBQ0Y7SUFDeEIsRUFBRSxPQUFPRyxLQUFLO1FBQ1osT0FBT0MsT0FBT0o7SUFDaEI7QUFDRjtBQUVBLGtFQUFrRTtBQUNsRSwwRUFBMEU7QUFDMUUsd0VBQXdFO0FBQ3hFLDZCQUE2QjtBQUM3QixTQUFTSyxrQ0FBa0NDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxZQUFZOztJQUM3RW5CLDRGQUF5QkEsQ0FBQyxJQUFNaUIsY0FBY0MsYUFBYUM7QUFDN0QsRUFBRSxxRkFBcUY7R0FGOUVIOztRQUNQaEIsd0ZBQXlCQTs7O0FBSTNCLFNBQVNvQixvQkFBb0JDLGdCQUFnQixFQUFFQyxjQUFjLEVBQUVDLGlCQUFpQixFQUFFQyxZQUFZLEVBQzlGQyx5QkFBeUIsRUFBRUMsZ0JBQWdCO0lBQ3pDLHFGQUFxRjtJQUNyRkwsaUJBQWlCTSxPQUFPLEdBQUdIO0lBQzNCRCxrQkFBa0JJLE9BQU8sR0FBRyxPQUFPLG9HQUFvRztJQUV2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Z0JBQzFCO1lBQ0Y7WUFFQSxNQUFNUyxZQUFZRjtZQUNsQkUsVUFBVXhDLFdBQVcsR0FBR0E7WUFDeEJ3QyxVQUFVM0MsZ0JBQWdCLEdBQUdBO1lBQzdCLE9BQU9oRiw4REFBWUEsQ0FBQzJILFdBQVczQztRQUNqQztRQUVBLE9BQU9oRiw4REFBWUEsQ0FBQ3dILFNBQVN4QztJQUMvQjtJQUVBLE9BQU9EO0FBQ1Q7QUFFQSwrREFBZWxCLE9BQU9BLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2NvbXBvbmVudHMvY29ubmVjdC5qcz84NWE4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJyZWFjdFJlZHV4Rm9yd2FyZGVkUmVmXCJdO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5pbXBvcnQgaG9pc3RTdGF0aWNzIGZyb20gJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGlzVmFsaWRFbGVtZW50VHlwZSwgaXNDb250ZXh0Q29uc3VtZXIgfSBmcm9tICdyZWFjdC1pcyc7XG5pbXBvcnQgZGVmYXVsdFNlbGVjdG9yRmFjdG9yeSBmcm9tICcuLi9jb25uZWN0L3NlbGVjdG9yRmFjdG9yeSc7XG5pbXBvcnQgeyBtYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3J5IH0gZnJvbSAnLi4vY29ubmVjdC9tYXBEaXNwYXRjaFRvUHJvcHMnO1xuaW1wb3J0IHsgbWFwU3RhdGVUb1Byb3BzRmFjdG9yeSB9IGZyb20gJy4uL2Nvbm5lY3QvbWFwU3RhdGVUb1Byb3BzJztcbmltcG9ydCB7IG1lcmdlUHJvcHNGYWN0b3J5IH0gZnJvbSAnLi4vY29ubmVjdC9tZXJnZVByb3BzJztcbmltcG9ydCB7IGNyZWF0ZVN1YnNjcmlwdGlvbiB9IGZyb20gJy4uL3V0aWxzL1N1YnNjcmlwdGlvbic7XG5pbXBvcnQgeyB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IH0gZnJvbSAnLi4vdXRpbHMvdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCc7XG5pbXBvcnQgc2hhbGxvd0VxdWFsIGZyb20gJy4uL3V0aWxzL3NoYWxsb3dFcXVhbCc7XG5pbXBvcnQgd2FybmluZyBmcm9tICcuLi91dGlscy93YXJuaW5nJztcbmltcG9ydCB7IFJlYWN0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi9Db250ZXh0JztcbmltcG9ydCB7IG5vdEluaXRpYWxpemVkIH0gZnJvbSAnLi4vdXRpbHMvdXNlU3luY0V4dGVybmFsU3RvcmUnO1xubGV0IHVzZVN5bmNFeHRlcm5hbFN0b3JlID0gbm90SW5pdGlhbGl6ZWQ7XG5leHBvcnQgY29uc3QgaW5pdGlhbGl6ZUNvbm5lY3QgPSBmbiA9PiB7XG4gIHVzZVN5bmNFeHRlcm5hbFN0b3JlID0gZm47XG59OyAvLyBEZWZpbmUgc29tZSBjb25zdGFudCBhcnJheXMganVzdCB0byBhdm9pZCByZS1jcmVhdGluZyB0aGVzZVxuXG5jb25zdCBFTVBUWV9BUlJBWSA9IFtudWxsLCAwXTtcbmNvbnN0IE5PX1NVQlNDUklQVElPTl9BUlJBWSA9IFtudWxsLCBudWxsXTsgLy8gQXR0ZW1wdHMgdG8gc3RyaW5naWZ5IHdoYXRldmVyIG5vdC1yZWFsbHktYS1jb21wb25lbnQgdmFsdWUgd2Ugd2VyZSBnaXZlblxuLy8gZm9yIGxvZ2dpbmcgaW4gYW4gZXJyb3IgbWVzc2FnZVxuXG5jb25zdCBzdHJpbmdpZnlDb21wb25lbnQgPSBDb21wID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQ29tcCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBTdHJpbmcoQ29tcCk7XG4gIH1cbn07XG5cbi8vIFRoaXMgaXMgXCJqdXN0XCIgYSBgdXNlTGF5b3V0RWZmZWN0YCwgYnV0IHdpdGggdHdvIG1vZGlmaWNhdGlvbnM6XG4vLyAtIHdlIG5lZWQgdG8gZmFsbCBiYWNrIHRvIGB1c2VFZmZlY3RgIGluIFNTUiB0byBhdm9pZCBhbm5veWluZyB3YXJuaW5nc1xuLy8gLSB3ZSBleHRyYWN0IHRoaXMgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBhdm9pZCBjbG9zaW5nIG92ZXIgdmFsdWVzXG4vLyAgIGFuZCBjYXVzaW5nIG1lbW9yeSBsZWFrc1xuZnVuY3Rpb24gdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdFdpdGhBcmdzKGVmZmVjdEZ1bmMsIGVmZmVjdEFyZ3MsIGRlcGVuZGVuY2llcykge1xuICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IGVmZmVjdEZ1bmMoLi4uZWZmZWN0QXJncyksIGRlcGVuZGVuY2llcyk7XG59IC8vIEVmZmVjdCBjYWxsYmFjaywgZXh0cmFjdGVkOiBhc3NpZ24gdGhlIGxhdGVzdCBwcm9wcyB2YWx1ZXMgdG8gcmVmcyBmb3IgbGF0ZXIgdXNhZ2VcblxuXG5mdW5jdGlvbiBjYXB0dXJlV3JhcHBlclByb3BzKGxhc3RXcmFwcGVyUHJvcHMsIGxhc3RDaGlsZFByb3BzLCByZW5kZXJJc1NjaGVkdWxlZCwgd3JhcHBlclByb3BzLCAvLyBhY3R1YWxDaGlsZFByb3BzOiB1bmtub3duLFxuY2hpbGRQcm9wc0Zyb21TdG9yZVVwZGF0ZSwgbm90aWZ5TmVzdGVkU3Vicykge1xuICAvLyBXZSB3YW50IHRvIGNhcHR1cmUgdGhlIHdyYXBwZXIgcHJvcHMgYW5kIGNoaWxkIHByb3BzIHdlIHVzZWQgZm9yIGxhdGVyIGNvbXBhcmlzb25zXG4gIGxhc3RXcmFwcGVyUHJvcHMuY3VycmVudCA9IHdyYXBwZXJQcm9wcztcbiAgcmVuZGVySXNTY2hlZHVsZWQuY3VycmVudCA9IGZhbHNlOyAvLyBJZiB0aGUgcmVuZGVyIHdhcyBmcm9tIGEgc3RvcmUgdXBkYXRlLCBjbGVhciBvdXQgdGhhdCByZWZlcmVuY2UgYW5kIGNhc2NhZGUgdGhlIHN1YnNjcmliZXIgdXBkYXRlXG5cbiAgaWYgKGNoaWxkUHJvcHNGcm9tU3RvcmVVcGRhdGUuY3VycmVudCkge1xuICAgIGNoaWxkUHJvcHNGcm9tU3RvcmVVcGRhdGUuY3VycmVudCA9IG51bGw7XG4gICAgbm90aWZ5TmVzdGVkU3VicygpO1xuICB9XG59IC8vIEVmZmVjdCBjYWxsYmFjaywgZXh0cmFjdGVkOiBzdWJzY3JpYmUgdG8gdGhlIFJlZHV4IHN0b3JlIG9yIG5lYXJlc3QgY29ubmVjdGVkIGFuY2VzdG9yLFxuLy8gY2hlY2sgZm9yIHVwZGF0ZXMgYWZ0ZXIgZGlzcGF0Y2hlZCBhY3Rpb25zLCBhbmQgdHJpZ2dlciByZS1yZW5kZXJzLlxuXG5cbmZ1bmN0aW9uIHN1YnNjcmliZVVwZGF0ZXMoc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzLCBzdG9yZSwgc3Vic2NyaXB0aW9uLCBjaGlsZFByb3BzU2VsZWN0b3IsIGxhc3RXcmFwcGVyUHJvcHMsIGxhc3RDaGlsZFByb3BzLCByZW5kZXJJc1NjaGVkdWxlZCwgaXNNb3VudGVkLCBjaGlsZFByb3BzRnJvbVN0b3JlVXBkYXRlLCBub3RpZnlOZXN0ZWRTdWJzLCAvLyBmb3JjZUNvbXBvbmVudFVwZGF0ZURpc3BhdGNoOiBSZWFjdC5EaXNwYXRjaDxhbnk+LFxuYWRkaXRpb25hbFN1YnNjcmliZUxpc3RlbmVyKSB7XG4gIC8vIElmIHdlJ3JlIG5vdCBzdWJzY3JpYmVkIHRvIHRoZSBzdG9yZSwgbm90aGluZyB0byBkbyBoZXJlXG4gIGlmICghc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzKSByZXR1cm4gKCkgPT4ge307IC8vIENhcHR1cmUgdmFsdWVzIGZvciBjaGVja2luZyBpZiBhbmQgd2hlbiB0aGlzIGNvbXBvbmVudCB1bm1vdW50c1xuXG4gIGxldCBkaWRVbnN1YnNjcmliZSA9IGZhbHNlO1xuICBsZXQgbGFzdFRocm93bkVycm9yID0gbnVsbDsgLy8gV2UnbGwgcnVuIHRoaXMgY2FsbGJhY2sgZXZlcnkgdGltZSBhIHN0b3JlIHN1YnNjcmlwdGlvbiB1cGRhdGUgcHJvcGFnYXRlcyB0byB0aGlzIGNvbXBvbmVudFxuXG4gIGNvbnN0IGNoZWNrRm9yVXBkYXRlcyA9ICgpID0+IHtcbiAgICBpZiAoZGlkVW5zdWJzY3JpYmUgfHwgIWlzTW91bnRlZC5jdXJyZW50KSB7XG4gICAgICAvLyBEb24ndCBydW4gc3RhbGUgbGlzdGVuZXJzLlxuICAgICAgLy8gUmVkdXggZG9lc24ndCBndWFyYW50ZWUgdW5zdWJzY3JpcHRpb25zIGhhcHBlbiB1bnRpbCBuZXh0IGRpc3BhdGNoLlxuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gVE9ETyBXZSdyZSBjdXJyZW50bHkgY2FsbGluZyBnZXRTdGF0ZSBvdXJzZWx2ZXMgaGVyZSwgcmF0aGVyIHRoYW4gbGV0dGluZyBgdVNFU2AgZG8gaXRcblxuXG4gICAgY29uc3QgbGF0ZXN0U3RvcmVTdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgbGV0IG5ld0NoaWxkUHJvcHMsIGVycm9yO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEFjdHVhbGx5IHJ1biB0aGUgc2VsZWN0b3Igd2l0aCB0aGUgbW9zdCByZWNlbnQgc3RvcmUgc3RhdGUgYW5kIHdyYXBwZXIgcHJvcHNcbiAgICAgIC8vIHRvIGRldGVybWluZSB3aGF0IHRoZSBjaGlsZCBwcm9wcyBzaG91bGQgYmVcbiAgICAgIG5ld0NoaWxkUHJvcHMgPSBjaGlsZFByb3BzU2VsZWN0b3IobGF0ZXN0U3RvcmVTdGF0ZSwgbGFzdFdyYXBwZXJQcm9wcy5jdXJyZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJvciA9IGU7XG4gICAgICBsYXN0VGhyb3duRXJyb3IgPSBlO1xuICAgIH1cblxuICAgIGlmICghZXJyb3IpIHtcbiAgICAgIGxhc3RUaHJvd25FcnJvciA9IG51bGw7XG4gICAgfSAvLyBJZiB0aGUgY2hpbGQgcHJvcHMgaGF2ZW4ndCBjaGFuZ2VkLCBub3RoaW5nIHRvIGRvIGhlcmUgLSBjYXNjYWRlIHRoZSBzdWJzY3JpcHRpb24gdXBkYXRlXG5cblxuICAgIGlmIChuZXdDaGlsZFByb3BzID09PSBsYXN0Q2hpbGRQcm9wcy5jdXJyZW50KSB7XG4gICAgICBpZiAoIXJlbmRlcklzU2NoZWR1bGVkLmN1cnJlbnQpIHtcbiAgICAgICAgbm90aWZ5TmVzdGVkU3VicygpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTYXZlIHJlZmVyZW5jZXMgdG8gdGhlIG5ldyBjaGlsZCBwcm9wcy4gIE5vdGUgdGhhdCB3ZSB0cmFjayB0aGUgXCJjaGlsZCBwcm9wcyBmcm9tIHN0b3JlIHVwZGF0ZVwiXG4gICAgICAvLyBhcyBhIHJlZiBpbnN0ZWFkIG9mIGEgdXNlU3RhdGUvdXNlUmVkdWNlciBiZWNhdXNlIHdlIG5lZWQgYSB3YXkgdG8gZGV0ZXJtaW5lIGlmIHRoYXQgdmFsdWUgaGFzXG4gICAgICAvLyBiZWVuIHByb2Nlc3NlZC4gIElmIHRoaXMgd2VudCBpbnRvIHVzZVN0YXRlL3VzZVJlZHVjZXIsIHdlIGNvdWxkbid0IGNsZWFyIG91dCB0aGUgdmFsdWUgd2l0aG91dFxuICAgICAgLy8gZm9yY2luZyBhbm90aGVyIHJlLXJlbmRlciwgd2hpY2ggd2UgZG9uJ3Qgd2FudC5cbiAgICAgIGxhc3RDaGlsZFByb3BzLmN1cnJlbnQgPSBuZXdDaGlsZFByb3BzO1xuICAgICAgY2hpbGRQcm9wc0Zyb21TdG9yZVVwZGF0ZS5jdXJyZW50ID0gbmV3Q2hpbGRQcm9wcztcbiAgICAgIHJlbmRlcklzU2NoZWR1bGVkLmN1cnJlbnQgPSB0cnVlOyAvLyBUT0RPIFRoaXMgaXMgaGFja3kgYW5kIG5vdCBob3cgYHVTRVNgIGlzIG1lYW50IHRvIGJlIHVzZWRcbiAgICAgIC8vIFRyaWdnZXIgdGhlIFJlYWN0IGB1c2VTeW5jRXh0ZXJuYWxTdG9yZWAgc3Vic2NyaWJlclxuXG4gICAgICBhZGRpdGlvbmFsU3Vic2NyaWJlTGlzdGVuZXIoKTtcbiAgICB9XG4gIH07IC8vIEFjdHVhbGx5IHN1YnNjcmliZSB0byB0aGUgbmVhcmVzdCBjb25uZWN0ZWQgYW5jZXN0b3IgKG9yIHN0b3JlKVxuXG5cbiAgc3Vic2NyaXB0aW9uLm9uU3RhdGVDaGFuZ2UgPSBjaGVja0ZvclVwZGF0ZXM7XG4gIHN1YnNjcmlwdGlvbi50cnlTdWJzY3JpYmUoKTsgLy8gUHVsbCBkYXRhIGZyb20gdGhlIHN0b3JlIGFmdGVyIGZpcnN0IHJlbmRlciBpbiBjYXNlIHRoZSBzdG9yZSBoYXNcbiAgLy8gY2hhbmdlZCBzaW5jZSB3ZSBiZWdhbi5cblxuICBjaGVja0ZvclVwZGF0ZXMoKTtcblxuICBjb25zdCB1bnN1YnNjcmliZVdyYXBwZXIgPSAoKSA9PiB7XG4gICAgZGlkVW5zdWJzY3JpYmUgPSB0cnVlO1xuICAgIHN1YnNjcmlwdGlvbi50cnlVbnN1YnNjcmliZSgpO1xuICAgIHN1YnNjcmlwdGlvbi5vblN0YXRlQ2hhbmdlID0gbnVsbDtcblxuICAgIGlmIChsYXN0VGhyb3duRXJyb3IpIHtcbiAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3ZSBjYXVnaHQgYW4gZXJyb3IgZHVlIHRvIGEgYmFkIG1hcFN0YXRlIGZ1bmN0aW9uLCBidXQgdGhlXG4gICAgICAvLyBwYXJlbnQgcmUtcmVuZGVyZWQgd2l0aG91dCB0aGlzIGNvbXBvbmVudCBhbmQgd2UncmUgYWJvdXQgdG8gdW5tb3VudC5cbiAgICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBhcyBsb25nIGFzIHdlIGRvIHRvcC1kb3duIHN1YnNjcmlwdGlvbnMgY29ycmVjdGx5LCBidXRcbiAgICAgIC8vIGlmIHdlIGV2ZXIgZG8gdGhvc2Ugd3JvbmcsIHRoaXMgdGhyb3cgd2lsbCBzdXJmYWNlIHRoZSBlcnJvciBpbiBvdXIgdGVzdHMuXG4gICAgICAvLyBJbiB0aGF0IGNhc2UsIHRocm93IHRoZSBlcnJvciBmcm9tIGhlcmUgc28gaXQgZG9lc24ndCBnZXQgbG9zdC5cbiAgICAgIHRocm93IGxhc3RUaHJvd25FcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHVuc3Vic2NyaWJlV3JhcHBlcjtcbn0gLy8gUmVkdWNlciBpbml0aWFsIHN0YXRlIGNyZWF0aW9uIGZvciBvdXIgdXBkYXRlIHJlZHVjZXJcblxuXG5jb25zdCBpbml0U3RhdGVVcGRhdGVzID0gKCkgPT4gRU1QVFlfQVJSQVk7XG5cbmZ1bmN0aW9uIHN0cmljdEVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIGEgPT09IGI7XG59XG4vKipcclxuICogSW5mZXJzIHRoZSB0eXBlIG9mIHByb3BzIHRoYXQgYSBjb25uZWN0b3Igd2lsbCBpbmplY3QgaW50byBhIGNvbXBvbmVudC5cclxuICovXG5cblxubGV0IGhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZFB1cmVPcHRpb24gPSBmYWxzZTtcbi8qKlxyXG4gKiBDb25uZWN0cyBhIFJlYWN0IGNvbXBvbmVudCB0byBhIFJlZHV4IHN0b3JlLlxyXG4gKlxyXG4gKiAtIFdpdGhvdXQgYXJndW1lbnRzLCBqdXN0IHdyYXBzIHRoZSBjb21wb25lbnQsIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGJlaGF2aW9yIC8gcHJvcHNcclxuICpcclxuICogLSBJZiAyIHBhcmFtcyBhcmUgcGFzc2VkICgzcmQgcGFyYW0sIG1lcmdlUHJvcHMsIGlzIHNraXBwZWQpLCBkZWZhdWx0IGJlaGF2aW9yXHJcbiAqIGlzIHRvIG92ZXJyaWRlIG93blByb3BzIChhcyBzdGF0ZWQgaW4gdGhlIGRvY3MpLCBzbyB3aGF0IHJlbWFpbnMgaXMgZXZlcnl0aGluZyB0aGF0J3NcclxuICogbm90IGEgc3RhdGUgb3IgZGlzcGF0Y2ggcHJvcFxyXG4gKlxyXG4gKiAtIFdoZW4gM3JkIHBhcmFtIGlzIHBhc3NlZCwgd2UgZG9uJ3Qga25vdyBpZiBvd25Qcm9wcyBwcm9wYWdhdGUgYW5kIHdoZXRoZXIgdGhleVxyXG4gKiBzaG91bGQgYmUgdmFsaWQgY29tcG9uZW50IHByb3BzLCBiZWNhdXNlIGl0IGRlcGVuZHMgb24gbWVyZ2VQcm9wcyBpbXBsZW1lbnRhdGlvbi5cclxuICogQXMgc3VjaCwgaXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byBleHRlbmQgb3duUHJvcHMgaW50ZXJmYWNlIGZyb20gc3RhdGUgb3JcclxuICogZGlzcGF0Y2ggcHJvcHMgb3IgYm90aCB3aGVuIGFwcGxpY2FibGVcclxuICpcclxuICogQHBhcmFtIG1hcFN0YXRlVG9Qcm9wcyBBIGZ1bmN0aW9uIHRoYXQgZXh0cmFjdHMgdmFsdWVzIGZyb20gc3RhdGVcclxuICogQHBhcmFtIG1hcERpc3BhdGNoVG9Qcm9wcyBTZXR1cCBmb3IgZGlzcGF0Y2hpbmcgYWN0aW9uc1xyXG4gKiBAcGFyYW0gbWVyZ2VQcm9wcyBPcHRpb25hbCBjYWxsYmFjayB0byBtZXJnZSBzdGF0ZSBhbmQgZGlzcGF0Y2ggcHJvcHMgdG9nZXRoZXJcclxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIGNvbm5lY3Rpb25cclxuICpcclxuICovXG5cbmZ1bmN0aW9uIGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIHtcbiAgLy8gVGhlIGBwdXJlYCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZCwgc28gVFMgZG9lc24ndCBsaWtlIHVzIGRlc3RydWN0dXJpbmcgdGhpcyB0byBjaGVjayBpdHMgZXhpc3RlbmNlLlxuICAvLyBAdHMtaWdub3JlXG4gIHB1cmUsXG4gIGFyZVN0YXRlc0VxdWFsID0gc3RyaWN0RXF1YWwsXG4gIGFyZU93blByb3BzRXF1YWwgPSBzaGFsbG93RXF1YWwsXG4gIGFyZVN0YXRlUHJvcHNFcXVhbCA9IHNoYWxsb3dFcXVhbCxcbiAgYXJlTWVyZ2VkUHJvcHNFcXVhbCA9IHNoYWxsb3dFcXVhbCxcbiAgLy8gdXNlIFJlYWN0J3MgZm9yd2FyZFJlZiB0byBleHBvc2UgYSByZWYgb2YgdGhlIHdyYXBwZWQgY29tcG9uZW50XG4gIGZvcndhcmRSZWYgPSBmYWxzZSxcbiAgLy8gdGhlIGNvbnRleHQgY29uc3VtZXIgdG8gdXNlXG4gIGNvbnRleHQgPSBSZWFjdFJlZHV4Q29udGV4dFxufSA9IHt9KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHB1cmUgIT09IHVuZGVmaW5lZCAmJiAhaGFzV2FybmVkQWJvdXREZXByZWNhdGVkUHVyZU9wdGlvbikge1xuICAgICAgaGFzV2FybmVkQWJvdXREZXByZWNhdGVkUHVyZU9wdGlvbiA9IHRydWU7XG4gICAgICB3YXJuaW5nKCdUaGUgYHB1cmVgIG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkLiBgY29ubmVjdGAgaXMgbm93IGFsd2F5cyBhIFwicHVyZS9tZW1vaXplZFwiIGNvbXBvbmVudCcpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IENvbnRleHQgPSBjb250ZXh0O1xuICBjb25zdCBpbml0TWFwU3RhdGVUb1Byb3BzID0gbWFwU3RhdGVUb1Byb3BzRmFjdG9yeShtYXBTdGF0ZVRvUHJvcHMpO1xuICBjb25zdCBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzID0gbWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yeShtYXBEaXNwYXRjaFRvUHJvcHMpO1xuICBjb25zdCBpbml0TWVyZ2VQcm9wcyA9IG1lcmdlUHJvcHNGYWN0b3J5KG1lcmdlUHJvcHMpO1xuICBjb25zdCBzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMgPSBCb29sZWFuKG1hcFN0YXRlVG9Qcm9wcyk7XG5cbiAgY29uc3Qgd3JhcFdpdGhDb25uZWN0ID0gV3JhcHBlZENvbXBvbmVudCA9PiB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWlzVmFsaWRFbGVtZW50VHlwZShXcmFwcGVkQ29tcG9uZW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwYXNzIGEgY29tcG9uZW50IHRvIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBjb25uZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICR7c3RyaW5naWZ5Q29tcG9uZW50KFdyYXBwZWRDb21wb25lbnQpfWApO1xuICAgIH1cblxuICAgIGNvbnN0IHdyYXBwZWRDb21wb25lbnROYW1lID0gV3JhcHBlZENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBXcmFwcGVkQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG4gICAgY29uc3QgZGlzcGxheU5hbWUgPSBgQ29ubmVjdCgke3dyYXBwZWRDb21wb25lbnROYW1lfSlgO1xuICAgIGNvbnN0IHNlbGVjdG9yRmFjdG9yeU9wdGlvbnMgPSB7XG4gICAgICBzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMsXG4gICAgICBkaXNwbGF5TmFtZSxcbiAgICAgIHdyYXBwZWRDb21wb25lbnROYW1lLFxuICAgICAgV3JhcHBlZENvbXBvbmVudCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGluaXRNYXBTdGF0ZVRvUHJvcHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzLFxuICAgICAgaW5pdE1lcmdlUHJvcHMsXG4gICAgICBhcmVTdGF0ZXNFcXVhbCxcbiAgICAgIGFyZVN0YXRlUHJvcHNFcXVhbCxcbiAgICAgIGFyZU93blByb3BzRXF1YWwsXG4gICAgICBhcmVNZXJnZWRQcm9wc0VxdWFsXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIENvbm5lY3RGdW5jdGlvbihwcm9wcykge1xuICAgICAgY29uc3QgW3Byb3BzQ29udGV4dCwgcmVhY3RSZWR1eEZvcndhcmRlZFJlZiwgd3JhcHBlclByb3BzXSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBEaXN0aW5ndWlzaCBiZXR3ZWVuIGFjdHVhbCBcImRhdGFcIiBwcm9wcyB0aGF0IHdlcmUgcGFzc2VkIHRvIHRoZSB3cmFwcGVyIGNvbXBvbmVudCxcbiAgICAgICAgLy8gYW5kIHZhbHVlcyBuZWVkZWQgdG8gY29udHJvbCBiZWhhdmlvciAoZm9yd2FyZGVkIHJlZnMsIGFsdGVybmF0ZSBjb250ZXh0IGluc3RhbmNlcykuXG4gICAgICAgIC8vIFRvIG1haW50YWluIHRoZSB3cmFwcGVyUHJvcHMgb2JqZWN0IHJlZmVyZW5jZSwgbWVtb2l6ZSB0aGlzIGRlc3RydWN0dXJpbmcuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICByZWFjdFJlZHV4Rm9yd2FyZGVkUmVmXG4gICAgICAgIH0gPSBwcm9wcyxcbiAgICAgICAgICAgICAgd3JhcHBlclByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgICAgICAgcmV0dXJuIFtwcm9wcy5jb250ZXh0LCByZWFjdFJlZHV4Rm9yd2FyZGVkUmVmLCB3cmFwcGVyUHJvcHNdO1xuICAgICAgfSwgW3Byb3BzXSk7XG4gICAgICBjb25zdCBDb250ZXh0VG9Vc2UgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgLy8gVXNlcnMgbWF5IG9wdGlvbmFsbHkgcGFzcyBpbiBhIGN1c3RvbSBjb250ZXh0IGluc3RhbmNlIHRvIHVzZSBpbnN0ZWFkIG9mIG91ciBSZWFjdFJlZHV4Q29udGV4dC5cbiAgICAgICAgLy8gTWVtb2l6ZSB0aGUgY2hlY2sgdGhhdCBkZXRlcm1pbmVzIHdoaWNoIGNvbnRleHQgaW5zdGFuY2Ugd2Ugc2hvdWxkIHVzZS5cbiAgICAgICAgcmV0dXJuIHByb3BzQ29udGV4dCAmJiBwcm9wc0NvbnRleHQuQ29uc3VtZXIgJiYgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpc0NvbnRleHRDb25zdW1lciggLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQocHJvcHNDb250ZXh0LkNvbnN1bWVyLCBudWxsKSkgPyBwcm9wc0NvbnRleHQgOiBDb250ZXh0O1xuICAgICAgfSwgW3Byb3BzQ29udGV4dCwgQ29udGV4dF0pOyAvLyBSZXRyaWV2ZSB0aGUgc3RvcmUgYW5kIGFuY2VzdG9yIHN1YnNjcmlwdGlvbiB2aWEgY29udGV4dCwgaWYgYXZhaWxhYmxlXG5cbiAgICAgIGNvbnN0IGNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZUNvbnRleHQoQ29udGV4dFRvVXNlKTsgLy8gVGhlIHN0b3JlIF9tdXN0XyBleGlzdCBhcyBlaXRoZXIgYSBwcm9wIG9yIGluIGNvbnRleHQuXG4gICAgICAvLyBXZSdsbCBjaGVjayB0byBzZWUgaWYgaXQgX2xvb2tzXyBsaWtlIGEgUmVkdXggc3RvcmUgZmlyc3QuXG4gICAgICAvLyBUaGlzIGFsbG93cyB1cyB0byBwYXNzIHRocm91Z2ggYSBgc3RvcmVgIHByb3AgdGhhdCBpcyBqdXN0IGEgcGxhaW4gdmFsdWUuXG5cbiAgICAgIGNvbnN0IGRpZFN0b3JlQ29tZUZyb21Qcm9wcyA9IEJvb2xlYW4ocHJvcHMuc3RvcmUpICYmIEJvb2xlYW4ocHJvcHMuc3RvcmUuZ2V0U3RhdGUpICYmIEJvb2xlYW4ocHJvcHMuc3RvcmUuZGlzcGF0Y2gpO1xuICAgICAgY29uc3QgZGlkU3RvcmVDb21lRnJvbUNvbnRleHQgPSBCb29sZWFuKGNvbnRleHRWYWx1ZSkgJiYgQm9vbGVhbihjb250ZXh0VmFsdWUuc3RvcmUpO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhZGlkU3RvcmVDb21lRnJvbVByb3BzICYmICFkaWRTdG9yZUNvbWVGcm9tQ29udGV4dCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIFwic3RvcmVcIiBpbiB0aGUgY29udGV4dCBvZiBgICsgYFwiJHtkaXNwbGF5TmFtZX1cIi4gRWl0aGVyIHdyYXAgdGhlIHJvb3QgY29tcG9uZW50IGluIGEgPFByb3ZpZGVyPiwgYCArIGBvciBwYXNzIGEgY3VzdG9tIFJlYWN0IGNvbnRleHQgcHJvdmlkZXIgdG8gPFByb3ZpZGVyPiBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYCArIGBSZWFjdCBjb250ZXh0IGNvbnN1bWVyIHRvICR7ZGlzcGxheU5hbWV9IGluIGNvbm5lY3Qgb3B0aW9ucy5gKTtcbiAgICAgIH0gLy8gQmFzZWQgb24gdGhlIHByZXZpb3VzIGNoZWNrLCBvbmUgb2YgdGhlc2UgbXVzdCBiZSB0cnVlXG5cblxuICAgICAgY29uc3Qgc3RvcmUgPSBkaWRTdG9yZUNvbWVGcm9tUHJvcHMgPyBwcm9wcy5zdG9yZSA6IGNvbnRleHRWYWx1ZS5zdG9yZTtcbiAgICAgIGNvbnN0IGdldFNlcnZlclN0YXRlID0gZGlkU3RvcmVDb21lRnJvbUNvbnRleHQgPyBjb250ZXh0VmFsdWUuZ2V0U2VydmVyU3RhdGUgOiBzdG9yZS5nZXRTdGF0ZTtcbiAgICAgIGNvbnN0IGNoaWxkUHJvcHNTZWxlY3RvciA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBUaGUgY2hpbGQgcHJvcHMgc2VsZWN0b3IgbmVlZHMgdGhlIHN0b3JlIHJlZmVyZW5jZSBhcyBhbiBpbnB1dC5cbiAgICAgICAgLy8gUmUtY3JlYXRlIHRoaXMgc2VsZWN0b3Igd2hlbmV2ZXIgdGhlIHN0b3JlIGNoYW5nZXMuXG4gICAgICAgIHJldHVybiBkZWZhdWx0U2VsZWN0b3JGYWN0b3J5KHN0b3JlLmRpc3BhdGNoLCBzZWxlY3RvckZhY3RvcnlPcHRpb25zKTtcbiAgICAgIH0sIFtzdG9yZV0pO1xuICAgICAgY29uc3QgW3N1YnNjcmlwdGlvbiwgbm90aWZ5TmVzdGVkU3Vic10gPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKCFzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMpIHJldHVybiBOT19TVUJTQ1JJUFRJT05fQVJSQVk7IC8vIFRoaXMgU3Vic2NyaXB0aW9uJ3Mgc291cmNlIHNob3VsZCBtYXRjaCB3aGVyZSBzdG9yZSBjYW1lIGZyb206IHByb3BzIHZzLiBjb250ZXh0LiBBIGNvbXBvbmVudFxuICAgICAgICAvLyBjb25uZWN0ZWQgdG8gdGhlIHN0b3JlIHZpYSBwcm9wcyBzaG91bGRuJ3QgdXNlIHN1YnNjcmlwdGlvbiBmcm9tIGNvbnRleHQsIG9yIHZpY2UgdmVyc2EuXG5cbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gY3JlYXRlU3Vic2NyaXB0aW9uKHN0b3JlLCBkaWRTdG9yZUNvbWVGcm9tUHJvcHMgPyB1bmRlZmluZWQgOiBjb250ZXh0VmFsdWUuc3Vic2NyaXB0aW9uKTsgLy8gYG5vdGlmeU5lc3RlZFN1YnNgIGlzIGR1cGxpY2F0ZWQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBjb21wb25lbnQgaXMgdW5tb3VudGVkIGluXG4gICAgICAgIC8vIHRoZSBtaWRkbGUgb2YgdGhlIG5vdGlmaWNhdGlvbiBsb29wLCB3aGVyZSBgc3Vic2NyaXB0aW9uYCB3aWxsIHRoZW4gYmUgbnVsbC4gVGhpcyBjYW5cbiAgICAgICAgLy8gcHJvYmFibHkgYmUgYXZvaWRlZCBpZiBTdWJzY3JpcHRpb24ncyBsaXN0ZW5lcnMgbG9naWMgaXMgY2hhbmdlZCB0byBub3QgY2FsbCBsaXN0ZW5lcnNcbiAgICAgICAgLy8gdGhhdCBoYXZlIGJlZW4gdW5zdWJzY3JpYmVkIGluIHRoZSAgbWlkZGxlIG9mIHRoZSBub3RpZmljYXRpb24gbG9vcC5cblxuICAgICAgICBjb25zdCBub3RpZnlOZXN0ZWRTdWJzID0gc3Vic2NyaXB0aW9uLm5vdGlmeU5lc3RlZFN1YnMuYmluZChzdWJzY3JpcHRpb24pO1xuICAgICAgICByZXR1cm4gW3N1YnNjcmlwdGlvbiwgbm90aWZ5TmVzdGVkU3Vic107XG4gICAgICB9LCBbc3RvcmUsIGRpZFN0b3JlQ29tZUZyb21Qcm9wcywgY29udGV4dFZhbHVlXSk7IC8vIERldGVybWluZSB3aGF0IHtzdG9yZSwgc3Vic2NyaXB0aW9ufSB2YWx1ZSBzaG91bGQgYmUgcHV0IGludG8gbmVzdGVkIGNvbnRleHQsIGlmIG5lY2Vzc2FyeSxcbiAgICAgIC8vIGFuZCBtZW1vaXplIHRoYXQgdmFsdWUgdG8gYXZvaWQgdW5uZWNlc3NhcnkgY29udGV4dCB1cGRhdGVzLlxuXG4gICAgICBjb25zdCBvdmVycmlkZGVuQ29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChkaWRTdG9yZUNvbWVGcm9tUHJvcHMpIHtcbiAgICAgICAgICAvLyBUaGlzIGNvbXBvbmVudCBpcyBkaXJlY3RseSBzdWJzY3JpYmVkIHRvIGEgc3RvcmUgZnJvbSBwcm9wcy5cbiAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IGRlc2NlbmRhbnRzIHJlYWRpbmcgZnJvbSB0aGlzIHN0b3JlIC0gcGFzcyBkb3duIHdoYXRldmVyXG4gICAgICAgICAgLy8gdGhlIGV4aXN0aW5nIGNvbnRleHQgdmFsdWUgaXMgZnJvbSB0aGUgbmVhcmVzdCBjb25uZWN0ZWQgYW5jZXN0b3IuXG4gICAgICAgICAgcmV0dXJuIGNvbnRleHRWYWx1ZTtcbiAgICAgICAgfSAvLyBPdGhlcndpc2UsIHB1dCB0aGlzIGNvbXBvbmVudCdzIHN1YnNjcmlwdGlvbiBpbnN0YW5jZSBpbnRvIGNvbnRleHQsIHNvIHRoYXRcbiAgICAgICAgLy8gY29ubmVjdGVkIGRlc2NlbmRhbnRzIHdvbid0IHVwZGF0ZSB1bnRpbCBhZnRlciB0aGlzIGNvbXBvbmVudCBpcyBkb25lXG5cblxuICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGNvbnRleHRWYWx1ZSwge1xuICAgICAgICAgIHN1YnNjcmlwdGlvblxuICAgICAgICB9KTtcbiAgICAgIH0sIFtkaWRTdG9yZUNvbWVGcm9tUHJvcHMsIGNvbnRleHRWYWx1ZSwgc3Vic2NyaXB0aW9uXSk7IC8vIFNldCB1cCByZWZzIHRvIGNvb3JkaW5hdGUgdmFsdWVzIGJldHdlZW4gdGhlIHN1YnNjcmlwdGlvbiBlZmZlY3QgYW5kIHRoZSByZW5kZXIgbG9naWNcblxuICAgICAgY29uc3QgbGFzdENoaWxkUHJvcHMgPSBSZWFjdC51c2VSZWYoKTtcbiAgICAgIGNvbnN0IGxhc3RXcmFwcGVyUHJvcHMgPSBSZWFjdC51c2VSZWYod3JhcHBlclByb3BzKTtcbiAgICAgIGNvbnN0IGNoaWxkUHJvcHNGcm9tU3RvcmVVcGRhdGUgPSBSZWFjdC51c2VSZWYoKTtcbiAgICAgIGNvbnN0IHJlbmRlcklzU2NoZWR1bGVkID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICAgIGNvbnN0IGlzUHJvY2Vzc2luZ0Rpc3BhdGNoID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICAgIGNvbnN0IGlzTW91bnRlZCA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gICAgICBjb25zdCBsYXRlc3RTdWJzY3JpcHRpb25DYWxsYmFja0Vycm9yID0gUmVhY3QudXNlUmVmKCk7XG4gICAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgaXNNb3VudGVkLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIGlzTW91bnRlZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH07XG4gICAgICB9LCBbXSk7XG4gICAgICBjb25zdCBhY3R1YWxDaGlsZFByb3BzU2VsZWN0b3IgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSAoKSA9PiB7XG4gICAgICAgICAgLy8gVHJpY2t5IGxvZ2ljIGhlcmU6XG4gICAgICAgICAgLy8gLSBUaGlzIHJlbmRlciBtYXkgaGF2ZSBiZWVuIHRyaWdnZXJlZCBieSBhIFJlZHV4IHN0b3JlIHVwZGF0ZSB0aGF0IHByb2R1Y2VkIG5ldyBjaGlsZCBwcm9wc1xuICAgICAgICAgIC8vIC0gSG93ZXZlciwgd2UgbWF5IGhhdmUgZ290dGVuIG5ldyB3cmFwcGVyIHByb3BzIGFmdGVyIHRoYXRcbiAgICAgICAgICAvLyBJZiB3ZSBoYXZlIG5ldyBjaGlsZCBwcm9wcywgYW5kIHRoZSBzYW1lIHdyYXBwZXIgcHJvcHMsIHdlIGtub3cgd2Ugc2hvdWxkIHVzZSB0aGUgbmV3IGNoaWxkIHByb3BzIGFzLWlzLlxuICAgICAgICAgIC8vIEJ1dCwgaWYgd2UgaGF2ZSBuZXcgd3JhcHBlciBwcm9wcywgdGhvc2UgbWlnaHQgY2hhbmdlIHRoZSBjaGlsZCBwcm9wcywgc28gd2UgaGF2ZSB0byByZWNhbGN1bGF0ZSB0aGluZ3MuXG4gICAgICAgICAgLy8gU28sIHdlJ2xsIHVzZSB0aGUgY2hpbGQgcHJvcHMgZnJvbSBzdG9yZSB1cGRhdGUgb25seSBpZiB0aGUgd3JhcHBlciBwcm9wcyBhcmUgdGhlIHNhbWUgYXMgbGFzdCB0aW1lLlxuICAgICAgICAgIGlmIChjaGlsZFByb3BzRnJvbVN0b3JlVXBkYXRlLmN1cnJlbnQgJiYgd3JhcHBlclByb3BzID09PSBsYXN0V3JhcHBlclByb3BzLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBjaGlsZFByb3BzRnJvbVN0b3JlVXBkYXRlLmN1cnJlbnQ7XG4gICAgICAgICAgfSAvLyBUT0RPIFdlJ3JlIHJlYWRpbmcgdGhlIHN0b3JlIGRpcmVjdGx5IGluIHJlbmRlcigpIGhlcmUuIEJhZCBpZGVhP1xuICAgICAgICAgIC8vIFRoaXMgd2lsbCBsaWtlbHkgY2F1c2UgQmFkIFRoaW5ncyAoVE0pIHRvIGhhcHBlbiBpbiBDb25jdXJyZW50IE1vZGUuXG4gICAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvIHRoaXMgYmVjYXVzZSBvbiByZW5kZXJzIF9ub3RfIGNhdXNlZCBieSBzdG9yZSB1cGRhdGVzLCB3ZSBuZWVkIHRoZSBsYXRlc3Qgc3RvcmUgc3RhdGVcbiAgICAgICAgICAvLyB0byBkZXRlcm1pbmUgd2hhdCB0aGUgY2hpbGQgcHJvcHMgc2hvdWxkIGJlLlxuXG5cbiAgICAgICAgICByZXR1cm4gY2hpbGRQcm9wc1NlbGVjdG9yKHN0b3JlLmdldFN0YXRlKCksIHdyYXBwZXJQcm9wcyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yO1xuICAgICAgfSwgW3N0b3JlLCB3cmFwcGVyUHJvcHNdKTsgLy8gV2UgbmVlZCB0aGlzIHRvIGV4ZWN1dGUgc3luY2hyb25vdXNseSBldmVyeSB0aW1lIHdlIHJlLXJlbmRlci4gSG93ZXZlciwgUmVhY3Qgd2FybnNcbiAgICAgIC8vIGFib3V0IHVzZUxheW91dEVmZmVjdCBpbiBTU1IsIHNvIHdlIHRyeSB0byBkZXRlY3QgZW52aXJvbm1lbnQgYW5kIGZhbGwgYmFjayB0b1xuICAgICAgLy8ganVzdCB1c2VFZmZlY3QgaW5zdGVhZCB0byBhdm9pZCB0aGUgd2FybmluZywgc2luY2UgbmVpdGhlciB3aWxsIHJ1biBhbnl3YXkuXG5cbiAgICAgIGNvbnN0IHN1YnNjcmliZUZvclJlYWN0ID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmliZSA9IHJlYWN0TGlzdGVuZXIgPT4ge1xuICAgICAgICAgIGlmICghc3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN1YnNjcmliZVVwZGF0ZXMoc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzLCBzdG9yZSwgc3Vic2NyaXB0aW9uLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgY2hpbGRQcm9wc1NlbGVjdG9yLCBsYXN0V3JhcHBlclByb3BzLCBsYXN0Q2hpbGRQcm9wcywgcmVuZGVySXNTY2hlZHVsZWQsIGlzTW91bnRlZCwgY2hpbGRQcm9wc0Zyb21TdG9yZVVwZGF0ZSwgbm90aWZ5TmVzdGVkU3VicywgcmVhY3RMaXN0ZW5lcik7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHN1YnNjcmliZTtcbiAgICAgIH0sIFtzdWJzY3JpcHRpb25dKTtcbiAgICAgIHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3RXaXRoQXJncyhjYXB0dXJlV3JhcHBlclByb3BzLCBbbGFzdFdyYXBwZXJQcm9wcywgbGFzdENoaWxkUHJvcHMsIHJlbmRlcklzU2NoZWR1bGVkLCB3cmFwcGVyUHJvcHMsIGNoaWxkUHJvcHNGcm9tU3RvcmVVcGRhdGUsIG5vdGlmeU5lc3RlZFN1YnNdKTtcbiAgICAgIGxldCBhY3R1YWxDaGlsZFByb3BzO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhY3R1YWxDaGlsZFByb3BzID0gdXNlU3luY0V4dGVybmFsU3RvcmUoIC8vIFRPRE8gV2UncmUgcGFzc2luZyB0aHJvdWdoIGEgYmlnIHdyYXBwZXIgdGhhdCBkb2VzIGEgYnVuY2ggb2YgZXh0cmEgc2lkZSBlZmZlY3RzIGJlc2lkZXMgc3Vic2NyaWJpbmdcbiAgICAgICAgc3Vic2NyaWJlRm9yUmVhY3QsIC8vIFRPRE8gVGhpcyBpcyBpbmNyZWRpYmx5IGhhY2t5LiBXZSd2ZSBhbHJlYWR5IHByb2Nlc3NlZCB0aGUgc3RvcmUgdXBkYXRlIGFuZCBjYWxjdWxhdGVkIG5ldyBjaGlsZCBwcm9wcyxcbiAgICAgICAgLy8gVE9ETyBhbmQgd2UncmUganVzdCBwYXNzaW5nIHRoYXQgdGhyb3VnaCBzbyBpdCB0cmlnZ2VycyBhIHJlLXJlbmRlciBmb3IgdXMgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBgdVNFU2AuXG4gICAgICAgIGFjdHVhbENoaWxkUHJvcHNTZWxlY3RvciwgZ2V0U2VydmVyU3RhdGUgPyAoKSA9PiBjaGlsZFByb3BzU2VsZWN0b3IoZ2V0U2VydmVyU3RhdGUoKSwgd3JhcHBlclByb3BzKSA6IGFjdHVhbENoaWxkUHJvcHNTZWxlY3Rvcik7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKGxhdGVzdFN1YnNjcmlwdGlvbkNhbGxiYWNrRXJyb3IuY3VycmVudCkge1xuICAgICAgICAgIDtcbiAgICAgICAgICBlcnIubWVzc2FnZSArPSBgXFxuVGhlIGVycm9yIG1heSBiZSBjb3JyZWxhdGVkIHdpdGggdGhpcyBwcmV2aW91cyBlcnJvcjpcXG4ke2xhdGVzdFN1YnNjcmlwdGlvbkNhbGxiYWNrRXJyb3IuY3VycmVudC5zdGFja31cXG5cXG5gO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICB1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGF0ZXN0U3Vic2NyaXB0aW9uQ2FsbGJhY2tFcnJvci5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICBjaGlsZFByb3BzRnJvbVN0b3JlVXBkYXRlLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGxhc3RDaGlsZFByb3BzLmN1cnJlbnQgPSBhY3R1YWxDaGlsZFByb3BzO1xuICAgICAgfSk7IC8vIE5vdyB0aGF0IGFsbCB0aGF0J3MgZG9uZSwgd2UgY2FuIGZpbmFsbHkgdHJ5IHRvIGFjdHVhbGx5IHJlbmRlciB0aGUgY2hpbGQgY29tcG9uZW50LlxuICAgICAgLy8gV2UgbWVtb2l6ZSB0aGUgZWxlbWVudHMgZm9yIHRoZSByZW5kZXJlZCBjaGlsZCBjb21wb25lbnQgYXMgYW4gb3B0aW1pemF0aW9uLlxuXG4gICAgICBjb25zdCByZW5kZXJlZFdyYXBwZWRDb21wb25lbnQgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvKiNfX1BVUkVfXyovXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCwgX2V4dGVuZHMoe30sIGFjdHVhbENoaWxkUHJvcHMsIHtcbiAgICAgICAgICAgIHJlZjogcmVhY3RSZWR1eEZvcndhcmRlZFJlZlxuICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgICAgfSwgW3JlYWN0UmVkdXhGb3J3YXJkZWRSZWYsIFdyYXBwZWRDb21wb25lbnQsIGFjdHVhbENoaWxkUHJvcHNdKTsgLy8gSWYgUmVhY3Qgc2VlcyB0aGUgZXhhY3Qgc2FtZSBlbGVtZW50IHJlZmVyZW5jZSBhcyBsYXN0IHRpbWUsIGl0IGJhaWxzIG91dCBvZiByZS1yZW5kZXJpbmdcbiAgICAgIC8vIHRoYXQgY2hpbGQsIHNhbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gUmVhY3QubWVtbygpIG9yIHJldHVybmVkIGZhbHNlIGZyb20gc2hvdWxkQ29tcG9uZW50VXBkYXRlLlxuXG4gICAgICBjb25zdCByZW5kZXJlZENoaWxkID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMpIHtcbiAgICAgICAgICAvLyBJZiB0aGlzIGNvbXBvbmVudCBpcyBzdWJzY3JpYmVkIHRvIHN0b3JlIHVwZGF0ZXMsIHdlIG5lZWQgdG8gcGFzcyBpdHMgb3duXG4gICAgICAgICAgLy8gc3Vic2NyaXB0aW9uIGluc3RhbmNlIGRvd24gdG8gb3VyIGRlc2NlbmRhbnRzLiBUaGF0IG1lYW5zIHJlbmRlcmluZyB0aGUgc2FtZVxuICAgICAgICAgIC8vIENvbnRleHQgaW5zdGFuY2UsIGFuZCBwdXR0aW5nIGEgZGlmZmVyZW50IHZhbHVlIGludG8gdGhlIGNvbnRleHQuXG4gICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KENvbnRleHRUb1VzZS5Qcm92aWRlciwge1xuICAgICAgICAgICAgdmFsdWU6IG92ZXJyaWRkZW5Db250ZXh0VmFsdWVcbiAgICAgICAgICB9LCByZW5kZXJlZFdyYXBwZWRDb21wb25lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlbmRlcmVkV3JhcHBlZENvbXBvbmVudDtcbiAgICAgIH0sIFtDb250ZXh0VG9Vc2UsIHJlbmRlcmVkV3JhcHBlZENvbXBvbmVudCwgb3ZlcnJpZGRlbkNvbnRleHRWYWx1ZV0pO1xuICAgICAgcmV0dXJuIHJlbmRlcmVkQ2hpbGQ7XG4gICAgfVxuXG4gICAgY29uc3QgX0Nvbm5lY3QgPSBSZWFjdC5tZW1vKENvbm5lY3RGdW5jdGlvbik7XG5cbiAgICAvLyBBZGQgYSBoYWNreSBjYXN0IHRvIGdldCB0aGUgcmlnaHQgb3V0cHV0IHR5cGVcbiAgICBjb25zdCBDb25uZWN0ID0gX0Nvbm5lY3Q7XG4gICAgQ29ubmVjdC5XcmFwcGVkQ29tcG9uZW50ID0gV3JhcHBlZENvbXBvbmVudDtcbiAgICBDb25uZWN0LmRpc3BsYXlOYW1lID0gQ29ubmVjdEZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XG5cbiAgICBpZiAoZm9yd2FyZFJlZikge1xuICAgICAgY29uc3QgX2ZvcndhcmRlZCA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gZm9yd2FyZENvbm5lY3RSZWYocHJvcHMsIHJlZikge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb25uZWN0LCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgICByZWFjdFJlZHV4Rm9yd2FyZGVkUmVmOiByZWZcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGZvcndhcmRlZCA9IF9mb3J3YXJkZWQ7XG4gICAgICBmb3J3YXJkZWQuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgICAgIGZvcndhcmRlZC5XcmFwcGVkQ29tcG9uZW50ID0gV3JhcHBlZENvbXBvbmVudDtcbiAgICAgIHJldHVybiBob2lzdFN0YXRpY3MoZm9yd2FyZGVkLCBXcmFwcGVkQ29tcG9uZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaG9pc3RTdGF0aWNzKENvbm5lY3QsIFdyYXBwZWRDb21wb25lbnQpO1xuICB9O1xuXG4gIHJldHVybiB3cmFwV2l0aENvbm5lY3Q7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3Q7Il0sIm5hbWVzIjpbIl9leHRlbmRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJfZXhjbHVkZWQiLCJob2lzdFN0YXRpY3MiLCJSZWFjdCIsImlzVmFsaWRFbGVtZW50VHlwZSIsImlzQ29udGV4dENvbnN1bWVyIiwiZGVmYXVsdFNlbGVjdG9yRmFjdG9yeSIsIm1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcnkiLCJtYXBTdGF0ZVRvUHJvcHNGYWN0b3J5IiwibWVyZ2VQcm9wc0ZhY3RvcnkiLCJjcmVhdGVTdWJzY3JpcHRpb24iLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0Iiwic2hhbGxvd0VxdWFsIiwid2FybmluZyIsIlJlYWN0UmVkdXhDb250ZXh0Iiwibm90SW5pdGlhbGl6ZWQiLCJ1c2VTeW5jRXh0ZXJuYWxTdG9yZSIsImluaXRpYWxpemVDb25uZWN0IiwiZm4iLCJFTVBUWV9BUlJBWSIsIk5PX1NVQlNDUklQVElPTl9BUlJBWSIsInN0cmluZ2lmeUNvbXBvbmVudCIsIkNvbXAiLCJKU09OIiwic3RyaW5naWZ5IiwiZXJyIiwiU3RyaW5nIiwidXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdFdpdGhBcmdzIiwiZWZmZWN0RnVuYyIsImVmZmVjdEFyZ3MiLCJkZXBlbmRlbmNpZXMiLCJjYXB0dXJlV3JhcHBlclByb3BzIiwibGFzdFdyYXBwZXJQcm9wcyIsImxhc3RDaGlsZFByb3BzIiwicmVuZGVySXNTY2hlZHVsZWQiLCJ3cmFwcGVyUHJvcHMiLCJjaGlsZFByb3BzRnJvbVN0b3JlVXBkYXRlIiwibm90aWZ5TmVzdGVkU3VicyIsImN1cnJlbnQiLCJzdWJzY3JpYmVVcGRhdGVzIiwic2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzIiwic3RvcmUiLCJzdWJzY3JpcHRpb24iLCJjaGlsZFByb3BzU2VsZWN0b3IiLCJpc01vdW50ZWQiLCJhZGRpdGlvbmFsU3Vic2NyaWJlTGlzdGVuZXIiLCJkaWRVbnN1YnNjcmliZSIsImxhc3RUaHJvd25FcnJvciIsImNoZWNrRm9yVXBkYXRlcyIsImxhdGVzdFN0b3JlU3RhdGUiLCJnZXRTdGF0ZSIsIm5ld0NoaWxkUHJvcHMiLCJlcnJvciIsImUiLCJvblN0YXRlQ2hhbmdlIiwidHJ5U3Vic2NyaWJlIiwidW5zdWJzY3JpYmVXcmFwcGVyIiwidHJ5VW5zdWJzY3JpYmUiLCJpbml0U3RhdGVVcGRhdGVzIiwic3RyaWN0RXF1YWwiLCJhIiwiYiIsImhhc1dhcm5lZEFib3V0RGVwcmVjYXRlZFB1cmVPcHRpb24iLCJjb25uZWN0IiwibWFwU3RhdGVUb1Byb3BzIiwibWFwRGlzcGF0Y2hUb1Byb3BzIiwibWVyZ2VQcm9wcyIsInB1cmUiLCJhcmVTdGF0ZXNFcXVhbCIsImFyZU93blByb3BzRXF1YWwiLCJhcmVTdGF0ZVByb3BzRXF1YWwiLCJhcmVNZXJnZWRQcm9wc0VxdWFsIiwiZm9yd2FyZFJlZiIsImNvbnRleHQiLCJwcm9jZXNzIiwidW5kZWZpbmVkIiwiQ29udGV4dCIsImluaXRNYXBTdGF0ZVRvUHJvcHMiLCJpbml0TWFwRGlzcGF0Y2hUb1Byb3BzIiwiaW5pdE1lcmdlUHJvcHMiLCJCb29sZWFuIiwid3JhcFdpdGhDb25uZWN0IiwiV3JhcHBlZENvbXBvbmVudCIsIkVycm9yIiwid3JhcHBlZENvbXBvbmVudE5hbWUiLCJkaXNwbGF5TmFtZSIsIm5hbWUiLCJzZWxlY3RvckZhY3RvcnlPcHRpb25zIiwiQ29ubmVjdEZ1bmN0aW9uIiwicHJvcHMiLCJwcm9wc0NvbnRleHQiLCJyZWFjdFJlZHV4Rm9yd2FyZGVkUmVmIiwidXNlTWVtbyIsIkNvbnRleHRUb1VzZSIsIkNvbnN1bWVyIiwiY3JlYXRlRWxlbWVudCIsImNvbnRleHRWYWx1ZSIsInVzZUNvbnRleHQiLCJkaWRTdG9yZUNvbWVGcm9tUHJvcHMiLCJkaXNwYXRjaCIsImRpZFN0b3JlQ29tZUZyb21Db250ZXh0IiwiZ2V0U2VydmVyU3RhdGUiLCJiaW5kIiwib3ZlcnJpZGRlbkNvbnRleHRWYWx1ZSIsInVzZVJlZiIsImlzUHJvY2Vzc2luZ0Rpc3BhdGNoIiwibGF0ZXN0U3Vic2NyaXB0aW9uQ2FsbGJhY2tFcnJvciIsImFjdHVhbENoaWxkUHJvcHNTZWxlY3RvciIsInNlbGVjdG9yIiwic3Vic2NyaWJlRm9yUmVhY3QiLCJzdWJzY3JpYmUiLCJyZWFjdExpc3RlbmVyIiwiYWN0dWFsQ2hpbGRQcm9wcyIsIm1lc3NhZ2UiLCJzdGFjayIsInJlbmRlcmVkV3JhcHBlZENvbXBvbmVudCIsInJlZiIsInJlbmRlcmVkQ2hpbGQiLCJQcm92aWRlciIsInZhbHVlIiwiX0Nvbm5lY3QiLCJtZW1vIiwiQ29ubmVjdCIsIl9mb3J3YXJkZWQiLCJmb3J3YXJkQ29ubmVjdFJlZiIsImZvcndhcmRlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/components/connect.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/connect/invalidArgFactory.js":
/*!******************************************************************!*\
!*** ./node_modules/react-redux/es/connect/invalidArgFactory.js ***!
\******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createInvalidArgFactory: function() { return /* binding */ createInvalidArgFactory; }\n/* harmony export */ });\nfunction createInvalidArgFactory(arg, name) {\n return (dispatch, options)=>{\n throw new Error(\"Invalid value of type \".concat(typeof arg, \" for \").concat(name, \" argument when connecting component \").concat(options.wrappedComponentName, \".\"));\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L2ludmFsaWRBcmdGYWN0b3J5LmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxTQUFTQSx3QkFBd0JDLEdBQUcsRUFBRUMsSUFBSTtJQUMvQyxPQUFPLENBQUNDLFVBQVVDO1FBQ2hCLE1BQU0sSUFBSUMsTUFBTSx5QkFBMkNILE9BQWxCLE9BQU9ELEtBQUksU0FBa0RHLE9BQTNDRixNQUFLLHdDQUFtRSxPQUE3QkUsUUFBUUUsb0JBQW9CLEVBQUM7SUFDckk7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29ubmVjdC9pbnZhbGlkQXJnRmFjdG9yeS5qcz80NDM2Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkQXJnRmFjdG9yeShhcmcsIG5hbWUpIHtcbiAgcmV0dXJuIChkaXNwYXRjaCwgb3B0aW9ucykgPT4ge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB2YWx1ZSBvZiB0eXBlICR7dHlwZW9mIGFyZ30gZm9yICR7bmFtZX0gYXJndW1lbnQgd2hlbiBjb25uZWN0aW5nIGNvbXBvbmVudCAke29wdGlvbnMud3JhcHBlZENvbXBvbmVudE5hbWV9LmApO1xuICB9O1xufSJdLCJuYW1lcyI6WyJjcmVhdGVJbnZhbGlkQXJnRmFjdG9yeSIsImFyZyIsIm5hbWUiLCJkaXNwYXRjaCIsIm9wdGlvbnMiLCJFcnJvciIsIndyYXBwZWRDb21wb25lbnROYW1lIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/connect/invalidArgFactory.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/connect/mapDispatchToProps.js":
/*!*******************************************************************!*\
!*** ./node_modules/react-redux/es/connect/mapDispatchToProps.js ***!
\*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mapDispatchToPropsFactory: function() { return /* binding */ mapDispatchToPropsFactory; }\n/* harmony export */ });\n/* harmony import */ var _utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/bindActionCreators */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/bindActionCreators.js\");\n/* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./wrapMapToProps */ \"(app-pages-browser)/./node_modules/react-redux/es/connect/wrapMapToProps.js\");\n/* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./invalidArgFactory */ \"(app-pages-browser)/./node_modules/react-redux/es/connect/invalidArgFactory.js\");\n\n\n\nfunction mapDispatchToPropsFactory(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === \"object\" ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)((dispatch)=>(0,_utils_bindActionCreators__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(mapDispatchToProps, dispatch)) : !mapDispatchToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsConstant)((dispatch)=>({\n dispatch\n })) : typeof mapDispatchToProps === \"function\" ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_1__.wrapMapToPropsFunc)(mapDispatchToProps, \"mapDispatchToProps\") : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__.createInvalidArgFactory)(mapDispatchToProps, \"mapDispatchToProps\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L21hcERpc3BhdGNoVG9Qcm9wcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTZEO0FBQ2lCO0FBQ2hCO0FBQ3ZELFNBQVNJLDBCQUEwQkMsa0JBQWtCO0lBQzFELE9BQU9BLHNCQUFzQixPQUFPQSx1QkFBdUIsV0FBV0osdUVBQXNCQSxDQUFDSyxDQUFBQSxXQUM3Rk4scUVBQWtCQSxDQUFDSyxvQkFBb0JDLGFBQWEsQ0FBQ0QscUJBQXFCSix1RUFBc0JBLENBQUNLLENBQUFBLFdBQWE7WUFDNUdBO1FBQ0YsTUFBTSxPQUFPRCx1QkFBdUIsYUFDcENILG1FQUFrQkEsQ0FBQ0csb0JBQW9CLHdCQUF3QkYsMkVBQXVCQSxDQUFDRSxvQkFBb0I7QUFDN0ciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5lY3QvbWFwRGlzcGF0Y2hUb1Byb3BzLmpzPzJiMmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJpbmRBY3Rpb25DcmVhdG9ycyBmcm9tICcuLi91dGlscy9iaW5kQWN0aW9uQ3JlYXRvcnMnO1xuaW1wb3J0IHsgd3JhcE1hcFRvUHJvcHNDb25zdGFudCwgd3JhcE1hcFRvUHJvcHNGdW5jIH0gZnJvbSAnLi93cmFwTWFwVG9Qcm9wcyc7XG5pbXBvcnQgeyBjcmVhdGVJbnZhbGlkQXJnRmFjdG9yeSB9IGZyb20gJy4vaW52YWxpZEFyZ0ZhY3RvcnknO1xuZXhwb3J0IGZ1bmN0aW9uIG1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcnkobWFwRGlzcGF0Y2hUb1Byb3BzKSB7XG4gIHJldHVybiBtYXBEaXNwYXRjaFRvUHJvcHMgJiYgdHlwZW9mIG1hcERpc3BhdGNoVG9Qcm9wcyA9PT0gJ29iamVjdCcgPyB3cmFwTWFwVG9Qcm9wc0NvbnN0YW50KGRpc3BhdGNoID0+IC8vIEB0cy1pZ25vcmVcbiAgYmluZEFjdGlvbkNyZWF0b3JzKG1hcERpc3BhdGNoVG9Qcm9wcywgZGlzcGF0Y2gpKSA6ICFtYXBEaXNwYXRjaFRvUHJvcHMgPyB3cmFwTWFwVG9Qcm9wc0NvbnN0YW50KGRpc3BhdGNoID0+ICh7XG4gICAgZGlzcGF0Y2hcbiAgfSkpIDogdHlwZW9mIG1hcERpc3BhdGNoVG9Qcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/IC8vIEB0cy1pZ25vcmVcbiAgd3JhcE1hcFRvUHJvcHNGdW5jKG1hcERpc3BhdGNoVG9Qcm9wcywgJ21hcERpc3BhdGNoVG9Qcm9wcycpIDogY3JlYXRlSW52YWxpZEFyZ0ZhY3RvcnkobWFwRGlzcGF0Y2hUb1Byb3BzLCAnbWFwRGlzcGF0Y2hUb1Byb3BzJyk7XG59Il0sIm5hbWVzIjpbImJpbmRBY3Rpb25DcmVhdG9ycyIsIndyYXBNYXBUb1Byb3BzQ29uc3RhbnQiLCJ3cmFwTWFwVG9Qcm9wc0Z1bmMiLCJjcmVhdGVJbnZhbGlkQXJnRmFjdG9yeSIsIm1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcnkiLCJtYXBEaXNwYXRjaFRvUHJvcHMiLCJkaXNwYXRjaCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/connect/mapDispatchToProps.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/connect/mapStateToProps.js":
/*!****************************************************************!*\
!*** ./node_modules/react-redux/es/connect/mapStateToProps.js ***!
\****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mapStateToPropsFactory: function() { return /* binding */ mapStateToPropsFactory; }\n/* harmony export */ });\n/* harmony import */ var _wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wrapMapToProps */ \"(app-pages-browser)/./node_modules/react-redux/es/connect/wrapMapToProps.js\");\n/* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./invalidArgFactory */ \"(app-pages-browser)/./node_modules/react-redux/es/connect/invalidArgFactory.js\");\n\n\nfunction mapStateToPropsFactory(mapStateToProps) {\n return !mapStateToProps ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsConstant)(()=>({})) : typeof mapStateToProps === \"function\" ? (0,_wrapMapToProps__WEBPACK_IMPORTED_MODULE_0__.wrapMapToPropsFunc)(mapStateToProps, \"mapStateToProps\") : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_1__.createInvalidArgFactory)(mapStateToProps, \"mapStateToProps\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L21hcFN0YXRlVG9Qcm9wcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBOEU7QUFDaEI7QUFDdkQsU0FBU0csdUJBQXVCQyxlQUFlO0lBQ3BELE9BQU8sQ0FBQ0Esa0JBQWtCSix1RUFBc0JBLENBQUMsSUFBTyxFQUFDLE1BQU0sT0FBT0ksb0JBQW9CLGFBQzFGSCxtRUFBa0JBLENBQUNHLGlCQUFpQixxQkFBcUJGLDJFQUF1QkEsQ0FBQ0UsaUJBQWlCO0FBQ3BHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L21hcFN0YXRlVG9Qcm9wcy5qcz9iZWYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQsIHdyYXBNYXBUb1Byb3BzRnVuYyB9IGZyb20gJy4vd3JhcE1hcFRvUHJvcHMnO1xuaW1wb3J0IHsgY3JlYXRlSW52YWxpZEFyZ0ZhY3RvcnkgfSBmcm9tICcuL2ludmFsaWRBcmdGYWN0b3J5JztcbmV4cG9ydCBmdW5jdGlvbiBtYXBTdGF0ZVRvUHJvcHNGYWN0b3J5KG1hcFN0YXRlVG9Qcm9wcykge1xuICByZXR1cm4gIW1hcFN0YXRlVG9Qcm9wcyA/IHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQoKCkgPT4gKHt9KSkgOiB0eXBlb2YgbWFwU3RhdGVUb1Byb3BzID09PSAnZnVuY3Rpb24nID8gLy8gQHRzLWlnbm9yZVxuICB3cmFwTWFwVG9Qcm9wc0Z1bmMobWFwU3RhdGVUb1Byb3BzLCAnbWFwU3RhdGVUb1Byb3BzJykgOiBjcmVhdGVJbnZhbGlkQXJnRmFjdG9yeShtYXBTdGF0ZVRvUHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnKTtcbn0iXSwibmFtZXMiOlsid3JhcE1hcFRvUHJvcHNDb25zdGFudCIsIndyYXBNYXBUb1Byb3BzRnVuYyIsImNyZWF0ZUludmFsaWRBcmdGYWN0b3J5IiwibWFwU3RhdGVUb1Byb3BzRmFjdG9yeSIsIm1hcFN0YXRlVG9Qcm9wcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/connect/mapStateToProps.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/connect/mergeProps.js":
/*!***********************************************************!*\
!*** ./node_modules/react-redux/es/connect/mergeProps.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ defaultMergeProps: function() { return /* binding */ defaultMergeProps; },\n/* harmony export */ mergePropsFactory: function() { return /* binding */ mergePropsFactory; },\n/* harmony export */ wrapMergePropsFunc: function() { return /* binding */ wrapMergePropsFunc; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/verifyPlainObject */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/verifyPlainObject.js\");\n/* harmony import */ var _invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./invalidArgFactory */ \"(app-pages-browser)/./node_modules/react-redux/es/connect/invalidArgFactory.js\");\n\n\n\nfunction defaultMergeProps(stateProps, dispatchProps, ownProps) {\n // @ts-ignore\n return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, ownProps, stateProps, dispatchProps);\n}\nfunction wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, param) {\n let { displayName, areMergedPropsEqual } = param;\n let hasRunOnce = false;\n let mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n if (hasRunOnce) {\n if (!areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(mergedProps, displayName, \"mergeProps\");\n }\n return mergedProps;\n };\n };\n}\nfunction mergePropsFactory(mergeProps) {\n return !mergeProps ? ()=>defaultMergeProps : typeof mergeProps === \"function\" ? wrapMergePropsFunc(mergeProps) : (0,_invalidArgFactory__WEBPACK_IMPORTED_MODULE_2__.createInvalidArgFactory)(mergeProps, \"mergeProps\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L21lcmdlUHJvcHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQTBEO0FBQ0M7QUFDRztBQUN2RCxTQUFTRyxrQkFBa0JDLFVBQVUsRUFBRUMsYUFBYSxFQUFFQyxRQUFRO0lBQ25FLGFBQWE7SUFDYixPQUFPTiw4RUFBUUEsQ0FBQyxDQUFDLEdBQUdNLFVBQVVGLFlBQVlDO0FBQzVDO0FBQ08sU0FBU0UsbUJBQW1CQyxVQUFVO0lBQzNDLE9BQU8sU0FBU0Msb0JBQW9CQyxRQUFRLEVBQUUsS0FHN0M7WUFINkMsRUFDNUNDLFdBQVcsRUFDWEMsbUJBQW1CLEVBQ3BCLEdBSDZDO1FBSTVDLElBQUlDLGFBQWE7UUFDakIsSUFBSUM7UUFDSixPQUFPLFNBQVNDLGdCQUFnQlgsVUFBVSxFQUFFQyxhQUFhLEVBQUVDLFFBQVE7WUFDakUsTUFBTVUsa0JBQWtCUixXQUFXSixZQUFZQyxlQUFlQztZQUU5RCxJQUFJTyxZQUFZO2dCQUNkLElBQUksQ0FBQ0Qsb0JBQW9CSSxpQkFBaUJGLGNBQWNBLGNBQWNFO1lBQ3hFLE9BQU87Z0JBQ0xILGFBQWE7Z0JBQ2JDLGNBQWNFO2dCQUNkLElBQUlDLElBQXlCLEVBQWNoQixvRUFBaUJBLENBQUNhLGFBQWFILGFBQWE7WUFDekY7WUFFQSxPQUFPRztRQUNUO0lBQ0Y7QUFDRjtBQUNPLFNBQVNJLGtCQUFrQlYsVUFBVTtJQUMxQyxPQUFPLENBQUNBLGFBQWEsSUFBTUwsb0JBQW9CLE9BQU9LLGVBQWUsYUFBYUQsbUJBQW1CQyxjQUFjTiwyRUFBdUJBLENBQUNNLFlBQVk7QUFDekoiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5lY3QvbWVyZ2VQcm9wcy5qcz9hNzFhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHZlcmlmeVBsYWluT2JqZWN0IGZyb20gJy4uL3V0aWxzL3ZlcmlmeVBsYWluT2JqZWN0JztcbmltcG9ydCB7IGNyZWF0ZUludmFsaWRBcmdGYWN0b3J5IH0gZnJvbSAnLi9pbnZhbGlkQXJnRmFjdG9yeSc7XG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdE1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpIHtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gX2V4dGVuZHMoe30sIG93blByb3BzLCBzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykge1xuICByZXR1cm4gZnVuY3Rpb24gaW5pdE1lcmdlUHJvcHNQcm94eShkaXNwYXRjaCwge1xuICAgIGRpc3BsYXlOYW1lLFxuICAgIGFyZU1lcmdlZFByb3BzRXF1YWxcbiAgfSkge1xuICAgIGxldCBoYXNSdW5PbmNlID0gZmFsc2U7XG4gICAgbGV0IG1lcmdlZFByb3BzO1xuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZVByb3BzUHJveHkoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpIHtcbiAgICAgIGNvbnN0IG5leHRNZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXG4gICAgICBpZiAoaGFzUnVuT25jZSkge1xuICAgICAgICBpZiAoIWFyZU1lcmdlZFByb3BzRXF1YWwobmV4dE1lcmdlZFByb3BzLCBtZXJnZWRQcm9wcykpIG1lcmdlZFByb3BzID0gbmV4dE1lcmdlZFByb3BzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFzUnVuT25jZSA9IHRydWU7XG4gICAgICAgIG1lcmdlZFByb3BzID0gbmV4dE1lcmdlZFByb3BzO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgdmVyaWZ5UGxhaW5PYmplY3QobWVyZ2VkUHJvcHMsIGRpc3BsYXlOYW1lLCAnbWVyZ2VQcm9wcycpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gICAgfTtcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZVByb3BzRmFjdG9yeShtZXJnZVByb3BzKSB7XG4gIHJldHVybiAhbWVyZ2VQcm9wcyA/ICgpID0+IGRlZmF1bHRNZXJnZVByb3BzIDogdHlwZW9mIG1lcmdlUHJvcHMgPT09ICdmdW5jdGlvbicgPyB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykgOiBjcmVhdGVJbnZhbGlkQXJnRmFjdG9yeShtZXJnZVByb3BzLCAnbWVyZ2VQcm9wcycpO1xufSJdLCJuYW1lcyI6WyJfZXh0ZW5kcyIsInZlcmlmeVBsYWluT2JqZWN0IiwiY3JlYXRlSW52YWxpZEFyZ0ZhY3RvcnkiLCJkZWZhdWx0TWVyZ2VQcm9wcyIsInN0YXRlUHJvcHMiLCJkaXNwYXRjaFByb3BzIiwib3duUHJvcHMiLCJ3cmFwTWVyZ2VQcm9wc0Z1bmMiLCJtZXJnZVByb3BzIiwiaW5pdE1lcmdlUHJvcHNQcm94eSIsImRpc3BhdGNoIiwiZGlzcGxheU5hbWUiLCJhcmVNZXJnZWRQcm9wc0VxdWFsIiwiaGFzUnVuT25jZSIsIm1lcmdlZFByb3BzIiwibWVyZ2VQcm9wc1Byb3h5IiwibmV4dE1lcmdlZFByb3BzIiwicHJvY2VzcyIsIm1lcmdlUHJvcHNGYWN0b3J5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/connect/mergeProps.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/connect/selectorFactory.js":
/*!****************************************************************!*\
!*** ./node_modules/react-redux/es/connect/selectorFactory.js ***!
\****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ finalPropsSelectorFactory; },\n/* harmony export */ pureFinalPropsSelectorFactory: function() { return /* binding */ pureFinalPropsSelectorFactory; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ \"(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\");\n/* harmony import */ var _verifySubselectors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./verifySubselectors */ \"(app-pages-browser)/./node_modules/react-redux/es/connect/verifySubselectors.js\");\n\nconst _excluded = [\n \"initMapStateToProps\",\n \"initMapDispatchToProps\",\n \"initMergeProps\"\n];\n\nfunction pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, param) {\n let { areStatesEqual, areOwnPropsEqual, areStatePropsEqual } = param;\n let hasRunAtLeastOnce = false;\n let state;\n let ownProps;\n let stateProps;\n let dispatchProps;\n let mergedProps;\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleNewState() {\n const nextStateProps = mapStateToProps(state, ownProps);\n const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleSubsequentCalls(nextState, nextOwnProps) {\n const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n const stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\n// TODO: Add more comments\n// The selector returned by selectorFactory will memoize its results,\n// allowing connect's shouldComponentUpdate to return false if final\n// props have not changed.\nfunction finalPropsSelectorFactory(dispatch, _ref) {\n let { initMapStateToProps, initMapDispatchToProps, initMergeProps } = _ref, options = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, _excluded);\n const mapStateToProps = initMapStateToProps(dispatch, options);\n const mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n const mergeProps = initMergeProps(dispatch, options);\n if (true) {\n (0,_verifySubselectors__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(mapStateToProps, mapDispatchToProps, mergeProps);\n }\n return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L3NlbGVjdG9yRmFjdG9yeS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQW9HO0FBQ3BHLE1BQU1DLFlBQVk7SUFBQztJQUF1QjtJQUEwQjtDQUFpQjtBQUMvQjtBQUMvQyxTQUFTRSw4QkFBOEJDLGVBQWUsRUFBRUMsa0JBQWtCLEVBQUVDLFVBQVUsRUFBRUMsUUFBUSxFQUFFLEtBSXhHO1FBSndHLEVBQ3ZHQyxjQUFjLEVBQ2RDLGdCQUFnQixFQUNoQkMsa0JBQWtCLEVBQ25CLEdBSndHO0lBS3ZHLElBQUlDLG9CQUFvQjtJQUN4QixJQUFJQztJQUNKLElBQUlDO0lBQ0osSUFBSUM7SUFDSixJQUFJQztJQUNKLElBQUlDO0lBRUosU0FBU0MsZ0JBQWdCQyxVQUFVLEVBQUVDLGFBQWE7UUFDaERQLFFBQVFNO1FBQ1JMLFdBQVdNO1FBQ1hMLGFBQWFWLGdCQUFnQlEsT0FBT0M7UUFDcENFLGdCQUFnQlYsbUJBQW1CRSxVQUFVTTtRQUM3Q0csY0FBY1YsV0FBV1EsWUFBWUMsZUFBZUY7UUFDcERGLG9CQUFvQjtRQUNwQixPQUFPSztJQUNUO0lBRUEsU0FBU0k7UUFDUE4sYUFBYVYsZ0JBQWdCUSxPQUFPQztRQUNwQyxJQUFJUixtQkFBbUJnQixpQkFBaUIsRUFBRU4sZ0JBQWdCVixtQkFBbUJFLFVBQVVNO1FBQ3ZGRyxjQUFjVixXQUFXUSxZQUFZQyxlQUFlRjtRQUNwRCxPQUFPRztJQUNUO0lBRUEsU0FBU007UUFDUCxJQUFJbEIsZ0JBQWdCaUIsaUJBQWlCLEVBQUVQLGFBQWFWLGdCQUFnQlEsT0FBT0M7UUFDM0UsSUFBSVIsbUJBQW1CZ0IsaUJBQWlCLEVBQUVOLGdCQUFnQlYsbUJBQW1CRSxVQUFVTTtRQUN2RkcsY0FBY1YsV0FBV1EsWUFBWUMsZUFBZUY7UUFDcEQsT0FBT0c7SUFDVDtJQUVBLFNBQVNPO1FBQ1AsTUFBTUMsaUJBQWlCcEIsZ0JBQWdCUSxPQUFPQztRQUM5QyxNQUFNWSxvQkFBb0IsQ0FBQ2YsbUJBQW1CYyxnQkFBZ0JWO1FBQzlEQSxhQUFhVTtRQUNiLElBQUlDLG1CQUFtQlQsY0FBY1YsV0FBV1EsWUFBWUMsZUFBZUY7UUFDM0UsT0FBT0c7SUFDVDtJQUVBLFNBQVNVLHNCQUFzQkMsU0FBUyxFQUFFQyxZQUFZO1FBQ3BELE1BQU1DLGVBQWUsQ0FBQ3BCLGlCQUFpQm1CLGNBQWNmO1FBQ3JELE1BQU1pQixlQUFlLENBQUN0QixlQUFlbUIsV0FBV2YsT0FBT2dCLGNBQWNmO1FBQ3JFRCxRQUFRZTtRQUNSZCxXQUFXZTtRQUNYLElBQUlDLGdCQUFnQkMsY0FBYyxPQUFPVjtRQUN6QyxJQUFJUyxjQUFjLE9BQU9QO1FBQ3pCLElBQUlRLGNBQWMsT0FBT1A7UUFDekIsT0FBT1A7SUFDVDtJQUVBLE9BQU8sU0FBU2UsdUJBQXVCSixTQUFTLEVBQUVDLFlBQVk7UUFDNUQsT0FBT2pCLG9CQUFvQmUsc0JBQXNCQyxXQUFXQyxnQkFBZ0JYLGdCQUFnQlUsV0FBV0M7SUFDekc7QUFDRjtBQUNBLDBCQUEwQjtBQUMxQixxRUFBcUU7QUFDckUsb0VBQW9FO0FBQ3BFLDBCQUEwQjtBQUNYLFNBQVNJLDBCQUEwQnpCLFFBQVEsRUFBRTBCLElBQUk7SUFDOUQsSUFBSSxFQUNGQyxtQkFBbUIsRUFDbkJDLHNCQUFzQixFQUN0QkMsY0FBYyxFQUNmLEdBQUdILE1BQ0FJLFVBQVVyQyxtR0FBNkJBLENBQUNpQyxNQUFNaEM7SUFFbEQsTUFBTUcsa0JBQWtCOEIsb0JBQW9CM0IsVUFBVThCO0lBQ3RELE1BQU1oQyxxQkFBcUI4Qix1QkFBdUI1QixVQUFVOEI7SUFDNUQsTUFBTS9CLGFBQWE4QixlQUFlN0IsVUFBVThCO0lBRTVDLElBQUlDLElBQXlCLEVBQWM7UUFDekNwQywrREFBa0JBLENBQUNFLGlCQUFpQkMsb0JBQW9CQztJQUMxRDtJQUVBLE9BQU9ILDhCQUE4QkMsaUJBQWlCQyxvQkFBb0JDLFlBQVlDLFVBQVU4QjtBQUNsRyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvY29ubmVjdC9zZWxlY3RvckZhY3RvcnkuanM/N2M3YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImluaXRNYXBTdGF0ZVRvUHJvcHNcIiwgXCJpbml0TWFwRGlzcGF0Y2hUb1Byb3BzXCIsIFwiaW5pdE1lcmdlUHJvcHNcIl07XG5pbXBvcnQgdmVyaWZ5U3Vic2VsZWN0b3JzIGZyb20gJy4vdmVyaWZ5U3Vic2VsZWN0b3JzJztcbmV4cG9ydCBmdW5jdGlvbiBwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywgZGlzcGF0Y2gsIHtcbiAgYXJlU3RhdGVzRXF1YWwsXG4gIGFyZU93blByb3BzRXF1YWwsXG4gIGFyZVN0YXRlUHJvcHNFcXVhbFxufSkge1xuICBsZXQgaGFzUnVuQXRMZWFzdE9uY2UgPSBmYWxzZTtcbiAgbGV0IHN0YXRlO1xuICBsZXQgb3duUHJvcHM7XG4gIGxldCBzdGF0ZVByb3BzO1xuICBsZXQgZGlzcGF0Y2hQcm9wcztcbiAgbGV0IG1lcmdlZFByb3BzO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZUZpcnN0Q2FsbChmaXJzdFN0YXRlLCBmaXJzdE93blByb3BzKSB7XG4gICAgc3RhdGUgPSBmaXJzdFN0YXRlO1xuICAgIG93blByb3BzID0gZmlyc3RPd25Qcm9wcztcbiAgICBzdGF0ZVByb3BzID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG4gICAgZGlzcGF0Y2hQcm9wcyA9IG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuICAgIG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9wcyk7XG4gICAgaGFzUnVuQXRMZWFzdE9uY2UgPSB0cnVlO1xuICAgIHJldHVybiBtZXJnZWRQcm9wcztcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU5ld1Byb3BzQW5kTmV3U3RhdGUoKSB7XG4gICAgc3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuICAgIGlmIChtYXBEaXNwYXRjaFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIGRpc3BhdGNoUHJvcHMgPSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcbiAgICBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuICAgIHJldHVybiBtZXJnZWRQcm9wcztcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZU5ld1Byb3BzKCkge1xuICAgIGlmIChtYXBTdGF0ZVRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcbiAgICBpZiAobWFwRGlzcGF0Y2hUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG4gICAgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcbiAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVOZXdTdGF0ZSgpIHtcbiAgICBjb25zdCBuZXh0U3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuICAgIGNvbnN0IHN0YXRlUHJvcHNDaGFuZ2VkID0gIWFyZVN0YXRlUHJvcHNFcXVhbChuZXh0U3RhdGVQcm9wcywgc3RhdGVQcm9wcyk7XG4gICAgc3RhdGVQcm9wcyA9IG5leHRTdGF0ZVByb3BzO1xuICAgIGlmIChzdGF0ZVByb3BzQ2hhbmdlZCkgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcbiAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIHtcbiAgICBjb25zdCBwcm9wc0NoYW5nZWQgPSAhYXJlT3duUHJvcHNFcXVhbChuZXh0T3duUHJvcHMsIG93blByb3BzKTtcbiAgICBjb25zdCBzdGF0ZUNoYW5nZWQgPSAhYXJlU3RhdGVzRXF1YWwobmV4dFN0YXRlLCBzdGF0ZSwgbmV4dE93blByb3BzLCBvd25Qcm9wcyk7XG4gICAgc3RhdGUgPSBuZXh0U3RhdGU7XG4gICAgb3duUHJvcHMgPSBuZXh0T3duUHJvcHM7XG4gICAgaWYgKHByb3BzQ2hhbmdlZCAmJiBzdGF0ZUNoYW5nZWQpIHJldHVybiBoYW5kbGVOZXdQcm9wc0FuZE5ld1N0YXRlKCk7XG4gICAgaWYgKHByb3BzQ2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1Byb3BzKCk7XG4gICAgaWYgKHN0YXRlQ2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1N0YXRlKCk7XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHB1cmVGaW5hbFByb3BzU2VsZWN0b3IobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIHtcbiAgICByZXR1cm4gaGFzUnVuQXRMZWFzdE9uY2UgPyBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIDogaGFuZGxlRmlyc3RDYWxsKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKTtcbiAgfTtcbn1cbi8vIFRPRE86IEFkZCBtb3JlIGNvbW1lbnRzXG4vLyBUaGUgc2VsZWN0b3IgcmV0dXJuZWQgYnkgc2VsZWN0b3JGYWN0b3J5IHdpbGwgbWVtb2l6ZSBpdHMgcmVzdWx0cyxcbi8vIGFsbG93aW5nIGNvbm5lY3QncyBzaG91bGRDb21wb25lbnRVcGRhdGUgdG8gcmV0dXJuIGZhbHNlIGlmIGZpbmFsXG4vLyBwcm9wcyBoYXZlIG5vdCBjaGFuZ2VkLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeShkaXNwYXRjaCwgX3JlZikge1xuICBsZXQge1xuICAgIGluaXRNYXBTdGF0ZVRvUHJvcHMsXG4gICAgaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyxcbiAgICBpbml0TWVyZ2VQcm9wc1xuICB9ID0gX3JlZixcbiAgICAgIG9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIGNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9IGluaXRNYXBTdGF0ZVRvUHJvcHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuICBjb25zdCBtYXBEaXNwYXRjaFRvUHJvcHMgPSBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvcHRpb25zKTtcbiAgY29uc3QgbWVyZ2VQcm9wcyA9IGluaXRNZXJnZVByb3BzKGRpc3BhdGNoLCBvcHRpb25zKTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZlcmlmeVN1YnNlbGVjdG9ycyhtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcyk7XG4gIH1cblxuICByZXR1cm4gcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoLCBvcHRpb25zKTtcbn0iXSwibmFtZXMiOlsiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJfZXhjbHVkZWQiLCJ2ZXJpZnlTdWJzZWxlY3RvcnMiLCJwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeSIsIm1hcFN0YXRlVG9Qcm9wcyIsIm1hcERpc3BhdGNoVG9Qcm9wcyIsIm1lcmdlUHJvcHMiLCJkaXNwYXRjaCIsImFyZVN0YXRlc0VxdWFsIiwiYXJlT3duUHJvcHNFcXVhbCIsImFyZVN0YXRlUHJvcHNFcXVhbCIsImhhc1J1bkF0TGVhc3RPbmNlIiwic3RhdGUiLCJvd25Qcm9wcyIsInN0YXRlUHJvcHMiLCJkaXNwYXRjaFByb3BzIiwibWVyZ2VkUHJvcHMiLCJoYW5kbGVGaXJzdENhbGwiLCJmaXJzdFN0YXRlIiwiZmlyc3RPd25Qcm9wcyIsImhhbmRsZU5ld1Byb3BzQW5kTmV3U3RhdGUiLCJkZXBlbmRzT25Pd25Qcm9wcyIsImhhbmRsZU5ld1Byb3BzIiwiaGFuZGxlTmV3U3RhdGUiLCJuZXh0U3RhdGVQcm9wcyIsInN0YXRlUHJvcHNDaGFuZ2VkIiwiaGFuZGxlU3Vic2VxdWVudENhbGxzIiwibmV4dFN0YXRlIiwibmV4dE93blByb3BzIiwicHJvcHNDaGFuZ2VkIiwic3RhdGVDaGFuZ2VkIiwicHVyZUZpbmFsUHJvcHNTZWxlY3RvciIsImZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkiLCJfcmVmIiwiaW5pdE1hcFN0YXRlVG9Qcm9wcyIsImluaXRNYXBEaXNwYXRjaFRvUHJvcHMiLCJpbml0TWVyZ2VQcm9wcyIsIm9wdGlvbnMiLCJwcm9jZXNzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/connect/selectorFactory.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/connect/verifySubselectors.js":
/*!*******************************************************************!*\
!*** ./node_modules/react-redux/es/connect/verifySubselectors.js ***!
\*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ verifySubselectors; }\n/* harmony export */ });\n/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/warning */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/warning.js\");\n\nfunction verify(selector, methodName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \".concat(methodName, \" in connect.\"));\n } else if (methodName === \"mapStateToProps\" || methodName === \"mapDispatchToProps\") {\n if (!Object.prototype.hasOwnProperty.call(selector, \"dependsOnOwnProps\")) {\n (0,_utils_warning__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"The selector for \".concat(methodName, \" of connect did not specify a value for dependsOnOwnProps.\"));\n }\n }\n}\nfunction verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps) {\n verify(mapStateToProps, \"mapStateToProps\");\n verify(mapDispatchToProps, \"mapDispatchToProps\");\n verify(mergeProps, \"mergeProps\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L3ZlcmlmeVN1YnNlbGVjdG9ycy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUF1QztBQUV2QyxTQUFTQyxPQUFPQyxRQUFRLEVBQUVDLFVBQVU7SUFDbEMsSUFBSSxDQUFDRCxVQUFVO1FBQ2IsTUFBTSxJQUFJRSxNQUFNLHdCQUFtQyxPQUFYRCxZQUFXO0lBQ3JELE9BQU8sSUFBSUEsZUFBZSxxQkFBcUJBLGVBQWUsc0JBQXNCO1FBQ2xGLElBQUksQ0FBQ0UsT0FBT0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ04sVUFBVSxzQkFBc0I7WUFDeEVGLDBEQUFPQSxDQUFDLG9CQUErQixPQUFYRyxZQUFXO1FBQ3pDO0lBQ0Y7QUFDRjtBQUVlLFNBQVNNLG1CQUFtQkMsZUFBZSxFQUFFQyxrQkFBa0IsRUFBRUMsVUFBVTtJQUN4RlgsT0FBT1MsaUJBQWlCO0lBQ3hCVCxPQUFPVSxvQkFBb0I7SUFDM0JWLE9BQU9XLFlBQVk7QUFDckIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5lY3QvdmVyaWZ5U3Vic2VsZWN0b3JzLmpzPzE2MzUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHdhcm5pbmcgZnJvbSAnLi4vdXRpbHMvd2FybmluZyc7XG5cbmZ1bmN0aW9uIHZlcmlmeShzZWxlY3RvciwgbWV0aG9kTmFtZSkge1xuICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIGZvciAke21ldGhvZE5hbWV9IGluIGNvbm5lY3QuYCk7XG4gIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ21hcFN0YXRlVG9Qcm9wcycgfHwgbWV0aG9kTmFtZSA9PT0gJ21hcERpc3BhdGNoVG9Qcm9wcycpIHtcbiAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzZWxlY3RvciwgJ2RlcGVuZHNPbk93blByb3BzJykpIHtcbiAgICAgIHdhcm5pbmcoYFRoZSBzZWxlY3RvciBmb3IgJHttZXRob2ROYW1lfSBvZiBjb25uZWN0IGRpZCBub3Qgc3BlY2lmeSBhIHZhbHVlIGZvciBkZXBlbmRzT25Pd25Qcm9wcy5gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5U3Vic2VsZWN0b3JzKG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzKSB7XG4gIHZlcmlmeShtYXBTdGF0ZVRvUHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnKTtcbiAgdmVyaWZ5KG1hcERpc3BhdGNoVG9Qcm9wcywgJ21hcERpc3BhdGNoVG9Qcm9wcycpO1xuICB2ZXJpZnkobWVyZ2VQcm9wcywgJ21lcmdlUHJvcHMnKTtcbn0iXSwibmFtZXMiOlsid2FybmluZyIsInZlcmlmeSIsInNlbGVjdG9yIiwibWV0aG9kTmFtZSIsIkVycm9yIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwidmVyaWZ5U3Vic2VsZWN0b3JzIiwibWFwU3RhdGVUb1Byb3BzIiwibWFwRGlzcGF0Y2hUb1Byb3BzIiwibWVyZ2VQcm9wcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/connect/verifySubselectors.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/connect/wrapMapToProps.js":
/*!***************************************************************!*\
!*** ./node_modules/react-redux/es/connect/wrapMapToProps.js ***!
\***************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getDependsOnOwnProps: function() { return /* binding */ getDependsOnOwnProps; },\n/* harmony export */ wrapMapToPropsConstant: function() { return /* binding */ wrapMapToPropsConstant; },\n/* harmony export */ wrapMapToPropsFunc: function() { return /* binding */ wrapMapToPropsFunc; }\n/* harmony export */ });\n/* harmony import */ var _utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/verifyPlainObject */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/verifyPlainObject.js\");\n\nfunction wrapMapToPropsConstant(// It seems that the dispatch argument\n// could be a dispatch function in some cases (ex: whenMapDispatchToPropsIsMissing)\n// and a state object in some others (ex: whenMapStateToPropsIsMissing)\n// eslint-disable-next-line no-unused-vars\ngetConstant) {\n return function initConstantSelector(dispatch) {\n const constant = getConstant(dispatch);\n function constantSelector() {\n return constant;\n }\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n// TODO Can this get pulled out so that we can subscribe directly to the store if we don't need ownProps?\nfunction getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\nfunction wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, param) {\n let { displayName } = param;\n const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, undefined);\n }; // allow detectFactoryAndVerify to get ownProps\n proxy.dependsOnOwnProps = true;\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n let props = proxy(stateOrDispatch, ownProps);\n if (typeof props === \"function\") {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n if (true) (0,_utils_verifyPlainObject__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, displayName, methodName);\n return props;\n };\n return proxy;\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9jb25uZWN0L3dyYXBNYXBUb1Byb3BzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBMkQ7QUFDcEQsU0FBU0MsdUJBQ2hCLHVDQUF1QztBQUN2QyxvRkFBb0Y7QUFDcEYsd0VBQXdFO0FBQ3hFLDBDQUEwQztBQUMxQ0MsV0FBVztJQUNULE9BQU8sU0FBU0MscUJBQXFCQyxRQUFRO1FBQzNDLE1BQU1DLFdBQVdILFlBQVlFO1FBRTdCLFNBQVNFO1lBQ1AsT0FBT0Q7UUFDVDtRQUVBQyxpQkFBaUJDLGlCQUFpQixHQUFHO1FBQ3JDLE9BQU9EO0lBQ1Q7QUFDRixFQUFFLGdHQUFnRztBQUNsRyxrR0FBa0c7QUFDbEcsa0VBQWtFO0FBQ2xFLEVBQUU7QUFDRiw4RkFBOEY7QUFDOUYsOEZBQThGO0FBQzlGLGtEQUFrRDtBQUNsRCx5R0FBeUc7QUFFbEcsU0FBU0UscUJBQXFCQyxVQUFVO0lBQzdDLE9BQU9BLFdBQVdGLGlCQUFpQixHQUFHRyxRQUFRRCxXQUFXRixpQkFBaUIsSUFBSUUsV0FBV0UsTUFBTSxLQUFLO0FBQ3RHLEVBQUUsOEVBQThFO0FBQ2hGLGdGQUFnRjtBQUNoRixFQUFFO0FBQ0Ysa0ZBQWtGO0FBQ2xGLGtGQUFrRjtBQUNsRixFQUFFO0FBQ0Ysb0ZBQW9GO0FBQ3BGLCtEQUErRDtBQUMvRCxFQUFFO0FBQ0Ysa0ZBQWtGO0FBQ2xGLG1GQUFtRjtBQUNuRixFQUFFO0FBRUssU0FBU0MsbUJBQW1CSCxVQUFVLEVBQUVJLFVBQVU7SUFDdkQsT0FBTyxTQUFTQyxrQkFBa0JWLFFBQVEsRUFBRSxLQUUzQztZQUYyQyxFQUMxQ1csV0FBVyxFQUNaLEdBRjJDO1FBRzFDLE1BQU1DLFFBQVEsU0FBU0MsZ0JBQWdCQyxlQUFlLEVBQUVDLFFBQVE7WUFDOUQsT0FBT0gsTUFBTVQsaUJBQWlCLEdBQUdTLE1BQU1QLFVBQVUsQ0FBQ1MsaUJBQWlCQyxZQUFZSCxNQUFNUCxVQUFVLENBQUNTLGlCQUFpQkU7UUFDbkgsR0FBRywrQ0FBK0M7UUFHbERKLE1BQU1ULGlCQUFpQixHQUFHO1FBRTFCUyxNQUFNUCxVQUFVLEdBQUcsU0FBU1ksdUJBQXVCSCxlQUFlLEVBQUVDLFFBQVE7WUFDMUVILE1BQU1QLFVBQVUsR0FBR0E7WUFDbkJPLE1BQU1ULGlCQUFpQixHQUFHQyxxQkFBcUJDO1lBQy9DLElBQUlhLFFBQVFOLE1BQU1FLGlCQUFpQkM7WUFFbkMsSUFBSSxPQUFPRyxVQUFVLFlBQVk7Z0JBQy9CTixNQUFNUCxVQUFVLEdBQUdhO2dCQUNuQk4sTUFBTVQsaUJBQWlCLEdBQUdDLHFCQUFxQmM7Z0JBQy9DQSxRQUFRTixNQUFNRSxpQkFBaUJDO1lBQ2pDO1lBRUEsSUFBSUksSUFBeUIsRUFBY3ZCLG9FQUFpQkEsQ0FBQ3NCLE9BQU9QLGFBQWFGO1lBQ2pGLE9BQU9TO1FBQ1Q7UUFFQSxPQUFPTjtJQUNUO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL2Nvbm5lY3Qvd3JhcE1hcFRvUHJvcHMuanM/YmNkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdmVyaWZ5UGxhaW5PYmplY3QgZnJvbSAnLi4vdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QnO1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQoIC8vICogTm90ZTpcbi8vICBJdCBzZWVtcyB0aGF0IHRoZSBkaXNwYXRjaCBhcmd1bWVudFxuLy8gIGNvdWxkIGJlIGEgZGlzcGF0Y2ggZnVuY3Rpb24gaW4gc29tZSBjYXNlcyAoZXg6IHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc01pc3NpbmcpXG4vLyAgYW5kIGEgc3RhdGUgb2JqZWN0IGluIHNvbWUgb3RoZXJzIChleDogd2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZylcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuZ2V0Q29uc3RhbnQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGluaXRDb25zdGFudFNlbGVjdG9yKGRpc3BhdGNoKSB7XG4gICAgY29uc3QgY29uc3RhbnQgPSBnZXRDb25zdGFudChkaXNwYXRjaCk7XG5cbiAgICBmdW5jdGlvbiBjb25zdGFudFNlbGVjdG9yKCkge1xuICAgICAgcmV0dXJuIGNvbnN0YW50O1xuICAgIH1cblxuICAgIGNvbnN0YW50U2VsZWN0b3IuZGVwZW5kc09uT3duUHJvcHMgPSBmYWxzZTtcbiAgICByZXR1cm4gY29uc3RhbnRTZWxlY3RvcjtcbiAgfTtcbn0gLy8gZGVwZW5kc09uT3duUHJvcHMgaXMgdXNlZCBieSBjcmVhdGVNYXBUb1Byb3BzUHJveHkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGFzcyBwcm9wcyBhcyBhcmdzXG4vLyB0byB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWluZyB3cmFwcGVkLiBJdCBpcyBhbHNvIHVzZWQgYnkgbWFrZVB1cmVQcm9wc1NlbGVjdG9yIHRvIGRldGVybWluZVxuLy8gd2hldGhlciBtYXBUb1Byb3BzIG5lZWRzIHRvIGJlIGludm9rZWQgd2hlbiBwcm9wcyBoYXZlIGNoYW5nZWQuXG4vL1xuLy8gQSBsZW5ndGggb2Ygb25lIHNpZ25hbHMgdGhhdCBtYXBUb1Byb3BzIGRvZXMgbm90IGRlcGVuZCBvbiBwcm9wcyBmcm9tIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuLy8gQSBsZW5ndGggb2YgemVybyBpcyBhc3N1bWVkIHRvIG1lYW4gbWFwVG9Qcm9wcyBpcyBnZXR0aW5nIGFyZ3MgdmlhIGFyZ3VtZW50cyBvciAuLi5hcmdzIGFuZFxuLy8gdGhlcmVmb3JlIG5vdCByZXBvcnRpbmcgaXRzIGxlbmd0aCBhY2N1cmF0ZWx5Li5cbi8vIFRPRE8gQ2FuIHRoaXMgZ2V0IHB1bGxlZCBvdXQgc28gdGhhdCB3ZSBjYW4gc3Vic2NyaWJlIGRpcmVjdGx5IHRvIHRoZSBzdG9yZSBpZiB3ZSBkb24ndCBuZWVkIG93blByb3BzP1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVwZW5kc09uT3duUHJvcHMobWFwVG9Qcm9wcykge1xuICByZXR1cm4gbWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcyA/IEJvb2xlYW4obWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgOiBtYXBUb1Byb3BzLmxlbmd0aCAhPT0gMTtcbn0gLy8gVXNlZCBieSB3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5jdGlvbiBhbmQgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24sXG4vLyB0aGlzIGZ1bmN0aW9uIHdyYXBzIG1hcFRvUHJvcHMgaW4gYSBwcm94eSBmdW5jdGlvbiB3aGljaCBkb2VzIHNldmVyYWwgdGhpbmdzOlxuLy9cbi8vICAqIERldGVjdHMgd2hldGhlciB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZGVwZW5kcyBvbiBwcm9wcywgd2hpY2hcbi8vICAgIGlzIHVzZWQgYnkgc2VsZWN0b3JGYWN0b3J5IHRvIGRlY2lkZSBpZiBpdCBzaG91bGQgcmVpbnZva2Ugb24gcHJvcHMgY2hhbmdlcy5cbi8vXG4vLyAgKiBPbiBmaXJzdCBjYWxsLCBoYW5kbGVzIG1hcFRvUHJvcHMgaWYgcmV0dXJucyBhbm90aGVyIGZ1bmN0aW9uLCBhbmQgdHJlYXRzIHRoYXRcbi8vICAgIG5ldyBmdW5jdGlvbiBhcyB0aGUgdHJ1ZSBtYXBUb1Byb3BzIGZvciBzdWJzZXF1ZW50IGNhbGxzLlxuLy9cbi8vICAqIE9uIGZpcnN0IGNhbGwsIHZlcmlmaWVzIHRoZSBmaXJzdCByZXN1bHQgaXMgYSBwbGFpbiBvYmplY3QsIGluIG9yZGVyIHRvIHdhcm5cbi8vICAgIHRoZSBkZXZlbG9wZXIgdGhhdCB0aGVpciBtYXBUb1Byb3BzIGZ1bmN0aW9uIGlzIG5vdCByZXR1cm5pbmcgYSB2YWxpZCByZXN1bHQuXG4vL1xuXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1hcFRvUHJvcHNGdW5jKG1hcFRvUHJvcHMsIG1ldGhvZE5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGluaXRQcm94eVNlbGVjdG9yKGRpc3BhdGNoLCB7XG4gICAgZGlzcGxheU5hbWVcbiAgfSkge1xuICAgIGNvbnN0IHByb3h5ID0gZnVuY3Rpb24gbWFwVG9Qcm9wc1Byb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpIHtcbiAgICAgIHJldHVybiBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA/IHByb3h5Lm1hcFRvUHJvcHMoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcykgOiBwcm94eS5tYXBUb1Byb3BzKHN0YXRlT3JEaXNwYXRjaCwgdW5kZWZpbmVkKTtcbiAgICB9OyAvLyBhbGxvdyBkZXRlY3RGYWN0b3J5QW5kVmVyaWZ5IHRvIGdldCBvd25Qcm9wc1xuXG5cbiAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9IHRydWU7XG5cbiAgICBwcm94eS5tYXBUb1Byb3BzID0gZnVuY3Rpb24gZGV0ZWN0RmFjdG9yeUFuZFZlcmlmeShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSB7XG4gICAgICBwcm94eS5tYXBUb1Byb3BzID0gbWFwVG9Qcm9wcztcbiAgICAgIHByb3h5LmRlcGVuZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09uT3duUHJvcHMobWFwVG9Qcm9wcyk7XG4gICAgICBsZXQgcHJvcHMgPSBwcm94eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgICAgaWYgKHR5cGVvZiBwcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwcm94eS5tYXBUb1Byb3BzID0gcHJvcHM7XG4gICAgICAgIHByb3h5LmRlcGVuZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09uT3duUHJvcHMocHJvcHMpO1xuICAgICAgICBwcm9wcyA9IHByb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgdmVyaWZ5UGxhaW5PYmplY3QocHJvcHMsIGRpc3BsYXlOYW1lLCBtZXRob2ROYW1lKTtcbiAgICAgIHJldHVybiBwcm9wcztcbiAgICB9O1xuXG4gICAgcmV0dXJuIHByb3h5O1xuICB9O1xufSJdLCJuYW1lcyI6WyJ2ZXJpZnlQbGFpbk9iamVjdCIsIndyYXBNYXBUb1Byb3BzQ29uc3RhbnQiLCJnZXRDb25zdGFudCIsImluaXRDb25zdGFudFNlbGVjdG9yIiwiZGlzcGF0Y2giLCJjb25zdGFudCIsImNvbnN0YW50U2VsZWN0b3IiLCJkZXBlbmRzT25Pd25Qcm9wcyIsImdldERlcGVuZHNPbk93blByb3BzIiwibWFwVG9Qcm9wcyIsIkJvb2xlYW4iLCJsZW5ndGgiLCJ3cmFwTWFwVG9Qcm9wc0Z1bmMiLCJtZXRob2ROYW1lIiwiaW5pdFByb3h5U2VsZWN0b3IiLCJkaXNwbGF5TmFtZSIsInByb3h5IiwibWFwVG9Qcm9wc1Byb3h5Iiwic3RhdGVPckRpc3BhdGNoIiwib3duUHJvcHMiLCJ1bmRlZmluZWQiLCJkZXRlY3RGYWN0b3J5QW5kVmVyaWZ5IiwicHJvcHMiLCJwcm9jZXNzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/connect/wrapMapToProps.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/exports.js":
/*!************************************************!*\
!*** ./node_modules/react-redux/es/exports.js ***!
\************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Provider: function() { return /* reexport safe */ _components_Provider__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; },\n/* harmony export */ ReactReduxContext: function() { return /* reexport safe */ _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext; },\n/* harmony export */ connect: function() { return /* reexport safe */ _components_connect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; },\n/* harmony export */ createDispatchHook: function() { return /* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__.createDispatchHook; },\n/* harmony export */ createSelectorHook: function() { return /* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.createSelectorHook; },\n/* harmony export */ createStoreHook: function() { return /* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__.createStoreHook; },\n/* harmony export */ shallowEqual: function() { return /* reexport safe */ _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; },\n/* harmony export */ useDispatch: function() { return /* reexport safe */ _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__.useDispatch; },\n/* harmony export */ useSelector: function() { return /* reexport safe */ _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.useSelector; },\n/* harmony export */ useStore: function() { return /* reexport safe */ _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__.useStore; }\n/* harmony export */ });\n/* harmony import */ var _components_Provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/Provider */ \"(app-pages-browser)/./node_modules/react-redux/es/components/Provider.js\");\n/* harmony import */ var _components_connect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/connect */ \"(app-pages-browser)/./node_modules/react-redux/es/components/connect.js\");\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Context */ \"(app-pages-browser)/./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _hooks_useDispatch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks/useDispatch */ \"(app-pages-browser)/./node_modules/react-redux/es/hooks/useDispatch.js\");\n/* harmony import */ var _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useSelector */ \"(app-pages-browser)/./node_modules/react-redux/es/hooks/useSelector.js\");\n/* harmony import */ var _hooks_useStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/useStore */ \"(app-pages-browser)/./node_modules/react-redux/es/hooks/useStore.js\");\n/* harmony import */ var _utils_shallowEqual__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/shallowEqual */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/shallowEqual.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./types */ \"(app-pages-browser)/./node_modules/react-redux/es/types.js\");\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9leHBvcnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUE2QztBQUNGO0FBQ2M7QUFDYTtBQUNBO0FBQ1Q7QUFDYjtBQUN4QjtBQUNtSSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvZXhwb3J0cy5qcz8xYmJlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm92aWRlciBmcm9tICcuL2NvbXBvbmVudHMvUHJvdmlkZXInO1xuaW1wb3J0IGNvbm5lY3QgZnJvbSAnLi9jb21wb25lbnRzL2Nvbm5lY3QnO1xuaW1wb3J0IHsgUmVhY3RSZWR1eENvbnRleHQgfSBmcm9tICcuL2NvbXBvbmVudHMvQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgY3JlYXRlRGlzcGF0Y2hIb29rIH0gZnJvbSAnLi9ob29rcy91c2VEaXNwYXRjaCc7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciwgY3JlYXRlU2VsZWN0b3JIb29rIH0gZnJvbSAnLi9ob29rcy91c2VTZWxlY3Rvcic7XG5pbXBvcnQgeyB1c2VTdG9yZSwgY3JlYXRlU3RvcmVIb29rIH0gZnJvbSAnLi9ob29rcy91c2VTdG9yZSc7XG5pbXBvcnQgc2hhbGxvd0VxdWFsIGZyb20gJy4vdXRpbHMvc2hhbGxvd0VxdWFsJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHsgUHJvdmlkZXIsIFJlYWN0UmVkdXhDb250ZXh0LCBjb25uZWN0LCB1c2VEaXNwYXRjaCwgY3JlYXRlRGlzcGF0Y2hIb29rLCB1c2VTZWxlY3RvciwgY3JlYXRlU2VsZWN0b3JIb29rLCB1c2VTdG9yZSwgY3JlYXRlU3RvcmVIb29rLCBzaGFsbG93RXF1YWwgfTsiXSwibmFtZXMiOlsiUHJvdmlkZXIiLCJjb25uZWN0IiwiUmVhY3RSZWR1eENvbnRleHQiLCJ1c2VEaXNwYXRjaCIsImNyZWF0ZURpc3BhdGNoSG9vayIsInVzZVNlbGVjdG9yIiwiY3JlYXRlU2VsZWN0b3JIb29rIiwidXNlU3RvcmUiLCJjcmVhdGVTdG9yZUhvb2siLCJzaGFsbG93RXF1YWwiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/exports.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/hooks/useDispatch.js":
/*!**********************************************************!*\
!*** ./node_modules/react-redux/es/hooks/useDispatch.js ***!
\**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createDispatchHook: function() { return /* binding */ createDispatchHook; },\n/* harmony export */ useDispatch: function() { return /* binding */ useDispatch; }\n/* harmony export */ });\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Context */ \"(app-pages-browser)/./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _useStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useStore */ \"(app-pages-browser)/./node_modules/react-redux/es/hooks/useStore.js\");\n\n\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */ function createDispatchHook() {\n let context = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext;\n var _s = $RefreshSig$();\n const useStore = context === _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext ? _useStore__WEBPACK_IMPORTED_MODULE_1__.useStore : (0,_useStore__WEBPACK_IMPORTED_MODULE_1__.createStoreHook)(context);\n return _s(function useDispatch() {\n _s();\n const store = useStore(); // @ts-ignore\n return store.dispatch;\n }, \"lacCqcEtsbxX3PAG/fPlTuRiPg0=\", false, function() {\n return [\n useStore\n ];\n });\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */ const useDispatch = /*#__PURE__*/ createDispatchHook();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9ob29rcy91c2VEaXNwYXRjaC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTBEO0FBQ2dCO0FBQzFFOzs7OztDQUtDLEdBRU0sU0FBU0k7UUFBbUJDLFVBQUFBLGlFQUFVTCxrRUFBaUJBOztJQUM1RCxNQUFNQyxXQUNOSSxZQUFZTCxrRUFBaUJBLEdBQUdFLCtDQUFlQSxHQUFHQywwREFBZUEsQ0FBQ0U7SUFDbEUsVUFBTyxTQUFTQzs7UUFDZCxNQUFNQyxRQUFRTixZQUFZLGFBQWE7UUFFdkMsT0FBT00sTUFBTUMsUUFBUTtJQUN2Qjs7WUFIZ0JQOzs7QUFJbEI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkMsR0FFTSxNQUFNSyxjQUFjLFdBQVcsR0FBRUYscUJBQXFCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9ob29rcy91c2VEaXNwYXRjaC5qcz82NDI3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWN0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50cy9Db250ZXh0JztcbmltcG9ydCB7IHVzZVN0b3JlIGFzIHVzZURlZmF1bHRTdG9yZSwgY3JlYXRlU3RvcmVIb29rIH0gZnJvbSAnLi91c2VTdG9yZSc7XG4vKipcclxuICogSG9vayBmYWN0b3J5LCB3aGljaCBjcmVhdGVzIGEgYHVzZURpc3BhdGNoYCBob29rIGJvdW5kIHRvIGEgZ2l2ZW4gY29udGV4dC5cclxuICpcclxuICogQHBhcmFtIHtSZWFjdC5Db250ZXh0fSBbY29udGV4dD1SZWFjdFJlZHV4Q29udGV4dF0gQ29udGV4dCBwYXNzZWQgdG8geW91ciBgPFByb3ZpZGVyPmAuXHJcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBgdXNlRGlzcGF0Y2hgIGhvb2sgYm91bmQgdG8gdGhlIHNwZWNpZmllZCBjb250ZXh0LlxyXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpc3BhdGNoSG9vayhjb250ZXh0ID0gUmVhY3RSZWR1eENvbnRleHQpIHtcbiAgY29uc3QgdXNlU3RvcmUgPSAvLyBAdHMtaWdub3JlXG4gIGNvbnRleHQgPT09IFJlYWN0UmVkdXhDb250ZXh0ID8gdXNlRGVmYXVsdFN0b3JlIDogY3JlYXRlU3RvcmVIb29rKGNvbnRleHQpO1xuICByZXR1cm4gZnVuY3Rpb24gdXNlRGlzcGF0Y2goKSB7XG4gICAgY29uc3Qgc3RvcmUgPSB1c2VTdG9yZSgpOyAvLyBAdHMtaWdub3JlXG5cbiAgICByZXR1cm4gc3RvcmUuZGlzcGF0Y2g7XG4gIH07XG59XG4vKipcclxuICogQSBob29rIHRvIGFjY2VzcyB0aGUgcmVkdXggYGRpc3BhdGNoYCBmdW5jdGlvbi5cclxuICpcclxuICogQHJldHVybnMge2FueXxmdW5jdGlvbn0gcmVkdXggc3RvcmUncyBgZGlzcGF0Y2hgIGZ1bmN0aW9uXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIGltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xyXG4gKiBpbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gJ3JlYWN0LXJlZHV4J1xyXG4gKlxyXG4gKiBleHBvcnQgY29uc3QgQ291bnRlckNvbXBvbmVudCA9ICh7IHZhbHVlIH0pID0+IHtcclxuICogICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKClcclxuICogICBjb25zdCBpbmNyZWFzZUNvdW50ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiBkaXNwYXRjaCh7IHR5cGU6ICdpbmNyZWFzZS1jb3VudGVyJyB9KSwgW10pXHJcbiAqICAgcmV0dXJuIChcclxuICogICAgIDxkaXY+XHJcbiAqICAgICAgIDxzcGFuPnt2YWx1ZX08L3NwYW4+XHJcbiAqICAgICAgIDxidXR0b24gb25DbGljaz17aW5jcmVhc2VDb3VudGVyfT5JbmNyZWFzZSBjb3VudGVyPC9idXR0b24+XHJcbiAqICAgICA8L2Rpdj5cclxuICogICApXHJcbiAqIH1cclxuICovXG5cbmV4cG9ydCBjb25zdCB1c2VEaXNwYXRjaCA9IC8qI19fUFVSRV9fKi9jcmVhdGVEaXNwYXRjaEhvb2soKTsiXSwibmFtZXMiOlsiUmVhY3RSZWR1eENvbnRleHQiLCJ1c2VTdG9yZSIsInVzZURlZmF1bHRTdG9yZSIsImNyZWF0ZVN0b3JlSG9vayIsImNyZWF0ZURpc3BhdGNoSG9vayIsImNvbnRleHQiLCJ1c2VEaXNwYXRjaCIsInN0b3JlIiwiZGlzcGF0Y2giXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/hooks/useDispatch.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/hooks/useReduxContext.js":
/*!**************************************************************!*\
!*** ./node_modules/react-redux/es/hooks/useReduxContext.js ***!
\**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createReduxContextHook: function() { return /* binding */ createReduxContextHook; },\n/* harmony export */ useReduxContext: function() { return /* binding */ useReduxContext; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/Context */ \"(app-pages-browser)/./node_modules/react-redux/es/components/Context.js\");\n\n\n/**\r\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\r\n */ function createReduxContextHook() {\n let context = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : _components_Context__WEBPACK_IMPORTED_MODULE_1__.ReactReduxContext;\n var _s = $RefreshSig$();\n return _s(function useReduxContext() {\n _s();\n const contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(context);\n if ( true && !contextValue) {\n throw new Error(\"could not find react-redux context value; please ensure the component is wrapped in a \");\n }\n return contextValue;\n }, \"LIxFXvZbUdXE/TWxKLLXMjM3Mig=\");\n}\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */ const useReduxContext = /*#__PURE__*/ createReduxContextHook();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9ob29rcy91c2VSZWR1eENvbnRleHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBbUM7QUFDdUI7QUFFMUQ7Ozs7OztDQU1DLEdBQ00sU0FBU0U7UUFBdUJDLFVBQUFBLGlFQUFVRixrRUFBaUJBOztJQUNoRSxVQUFPLFNBQVNHOztRQUNkLE1BQU1DLGVBQWVMLGlEQUFVQSxDQUFDRztRQUVoQyxJQUFJRyxLQUF5QixJQUFnQixDQUFDRCxjQUFjO1lBQzFELE1BQU0sSUFBSUUsTUFBTTtRQUNsQjtRQUVBLE9BQU9GO0lBQ1Q7QUFDRjtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlQyxHQUVNLE1BQU1ELGtCQUFrQixXQUFXLEdBQUVGLHlCQUF5QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvaG9va3MvdXNlUmVkdXhDb250ZXh0LmpzPzkwNDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlYWN0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50cy9Db250ZXh0JztcblxuLyoqXHJcbiAqIEhvb2sgZmFjdG9yeSwgd2hpY2ggY3JlYXRlcyBhIGB1c2VSZWR1eENvbnRleHRgIGhvb2sgYm91bmQgdG8gYSBnaXZlbiBjb250ZXh0LiBUaGlzIGlzIGEgbG93LWxldmVsXHJcbiAqIGhvb2sgdGhhdCB5b3Ugc2hvdWxkIHVzdWFsbHkgbm90IG5lZWQgdG8gY2FsbCBkaXJlY3RseS5cclxuICpcclxuICogQHBhcmFtIHtSZWFjdC5Db250ZXh0fSBbY29udGV4dD1SZWFjdFJlZHV4Q29udGV4dF0gQ29udGV4dCBwYXNzZWQgdG8geW91ciBgPFByb3ZpZGVyPmAuXHJcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBgdXNlUmVkdXhDb250ZXh0YCBob29rIGJvdW5kIHRvIHRoZSBzcGVjaWZpZWQgY29udGV4dC5cclxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVkdXhDb250ZXh0SG9vayhjb250ZXh0ID0gUmVhY3RSZWR1eENvbnRleHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVzZVJlZHV4Q29udGV4dCgpIHtcbiAgICBjb25zdCBjb250ZXh0VmFsdWUgPSB1c2VDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWNvbnRleHRWYWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCByZWFjdC1yZWR1eCBjb250ZXh0IHZhbHVlOyBwbGVhc2UgZW5zdXJlIHRoZSBjb21wb25lbnQgaXMgd3JhcHBlZCBpbiBhIDxQcm92aWRlcj4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGV4dFZhbHVlO1xuICB9O1xufVxuLyoqXHJcbiAqIEEgaG9vayB0byBhY2Nlc3MgdGhlIHZhbHVlIG9mIHRoZSBgUmVhY3RSZWR1eENvbnRleHRgLiBUaGlzIGlzIGEgbG93LWxldmVsXHJcbiAqIGhvb2sgdGhhdCB5b3Ugc2hvdWxkIHVzdWFsbHkgbm90IG5lZWQgdG8gY2FsbCBkaXJlY3RseS5cclxuICpcclxuICogQHJldHVybnMge2FueX0gdGhlIHZhbHVlIG9mIHRoZSBgUmVhY3RSZWR1eENvbnRleHRgXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIGltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcclxuICogaW1wb3J0IHsgdXNlUmVkdXhDb250ZXh0IH0gZnJvbSAncmVhY3QtcmVkdXgnXHJcbiAqXHJcbiAqIGV4cG9ydCBjb25zdCBDb3VudGVyQ29tcG9uZW50ID0gKCkgPT4ge1xyXG4gKiAgIGNvbnN0IHsgc3RvcmUgfSA9IHVzZVJlZHV4Q29udGV4dCgpXHJcbiAqICAgcmV0dXJuIDxkaXY+e3N0b3JlLmdldFN0YXRlKCl9PC9kaXY+XHJcbiAqIH1cclxuICovXG5cbmV4cG9ydCBjb25zdCB1c2VSZWR1eENvbnRleHQgPSAvKiNfX1BVUkVfXyovY3JlYXRlUmVkdXhDb250ZXh0SG9vaygpOyJdLCJuYW1lcyI6WyJ1c2VDb250ZXh0IiwiUmVhY3RSZWR1eENvbnRleHQiLCJjcmVhdGVSZWR1eENvbnRleHRIb29rIiwiY29udGV4dCIsInVzZVJlZHV4Q29udGV4dCIsImNvbnRleHRWYWx1ZSIsInByb2Nlc3MiLCJFcnJvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/hooks/useReduxContext.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/hooks/useSelector.js":
/*!**********************************************************!*\
!*** ./node_modules/react-redux/es/hooks/useSelector.js ***!
\**********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createSelectorHook: function() { return /* binding */ createSelectorHook; },\n/* harmony export */ initializeUseSelector: function() { return /* binding */ initializeUseSelector; },\n/* harmony export */ useSelector: function() { return /* binding */ useSelector; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useReduxContext */ \"(app-pages-browser)/./node_modules/react-redux/es/hooks/useReduxContext.js\");\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../components/Context */ \"(app-pages-browser)/./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/useSyncExternalStore */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/useSyncExternalStore.js\");\n\n\n\n\nlet useSyncExternalStoreWithSelector = _utils_useSyncExternalStore__WEBPACK_IMPORTED_MODULE_3__.notInitialized;\nconst initializeUseSelector = (fn)=>{\n useSyncExternalStoreWithSelector = fn;\n};\nconst refEquality = (a, b)=>a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */ function createSelectorHook() {\n let context = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext;\n var _s = $RefreshSig$();\n const useReduxContext = context === _components_Context__WEBPACK_IMPORTED_MODULE_2__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_1__.useReduxContext : (0,_useReduxContext__WEBPACK_IMPORTED_MODULE_1__.createReduxContextHook)(context);\n return _s(function useSelector(selector) {\n let equalityFnOrOptions = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n _s();\n const { equalityFn = refEquality, stabilityCheck = undefined, noopCheck = undefined } = typeof equalityFnOrOptions === \"function\" ? {\n equalityFn: equalityFnOrOptions\n } : equalityFnOrOptions;\n if (true) {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n if (typeof selector !== \"function\") {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n if (typeof equalityFn !== \"function\") {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n const { store, subscription, getServerState, stabilityCheck: globalStabilityCheck, noopCheck: globalNoopCheck } = useReduxContext();\n const firstRun = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(true);\n const wrappedSelector = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)({\n [selector.name] (state) {\n const selected = selector(state);\n if (true) {\n const finalStabilityCheck = typeof stabilityCheck === \"undefined\" ? globalStabilityCheck : stabilityCheck;\n if (finalStabilityCheck === \"always\" || finalStabilityCheck === \"once\" && firstRun.current) {\n const toCompare = selector(state);\n if (!equalityFn(selected, toCompare)) {\n let stack = undefined;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\"Selector \" + (selector.name || \"unknown\") + \" returned a different result when called with the same parameters. This can lead to unnecessary rerenders.\" + \"\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization\", {\n state,\n selected,\n selected2: toCompare,\n stack\n });\n }\n }\n const finalNoopCheck = typeof noopCheck === \"undefined\" ? globalNoopCheck : noopCheck;\n if (finalNoopCheck === \"always\" || finalNoopCheck === \"once\" && firstRun.current) {\n // @ts-ignore\n if (selected === state) {\n let stack = undefined;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\"Selector \" + (selector.name || \"unknown\") + \" returned the root state when called. This can lead to unnecessary rerenders.\" + \"\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.\", {\n stack\n });\n }\n }\n if (firstRun.current) firstRun.current = false;\n }\n return selected;\n }\n }[selector.name], [\n selector,\n globalStabilityCheck,\n stabilityCheck\n ]);\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useDebugValue)(selectedState);\n return selectedState;\n }, \"MU0BmHfhqjviNfmYfQ7AwmaymmY=\", false, function() {\n return [\n useReduxContext,\n useSyncExternalStoreWithSelector\n ];\n });\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */ const useSelector = /*#__PURE__*/ createSelectorHook();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9ob29rcy91c2VTZWxlY3Rvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUEyRDtBQUMyQztBQUM1QztBQUNLO0FBQy9ELElBQUlRLG1DQUFtQ0QsdUVBQWNBO0FBQzlDLE1BQU1FLHdCQUF3QkMsQ0FBQUE7SUFDbkNGLG1DQUFtQ0U7QUFDckMsRUFBRTtBQUVGLE1BQU1DLGNBQWMsQ0FBQ0MsR0FBR0MsSUFBTUQsTUFBTUM7QUFDcEM7Ozs7O0NBS0MsR0FHTSxTQUFTQztRQUFtQkMsVUFBQUEsaUVBQVVULGtFQUFpQkE7O0lBQzVELE1BQU1GLGtCQUFrQlcsWUFBWVQsa0VBQWlCQSxHQUFHRCw2REFBc0JBLEdBQUdGLHdFQUFzQkEsQ0FBQ1k7SUFDeEcsVUFBTyxTQUFTQyxZQUFZQyxRQUFRO1lBQUVDLHNCQUFBQSxpRUFBc0IsQ0FBQzs7UUFDM0QsTUFBTSxFQUNKQyxhQUFhUixXQUFXLEVBQ3hCUyxpQkFBaUJDLFNBQVMsRUFDMUJDLFlBQVlELFNBQVMsRUFDdEIsR0FBRyxPQUFPSCx3QkFBd0IsYUFBYTtZQUM5Q0MsWUFBWUQ7UUFDZCxJQUFJQTtRQUVKLElBQUlLLElBQXlCLEVBQWM7WUFDekMsSUFBSSxDQUFDTixVQUFVO2dCQUNiLE1BQU0sSUFBSU8sTUFBTztZQUNuQjtZQUVBLElBQUksT0FBT1AsYUFBYSxZQUFZO2dCQUNsQyxNQUFNLElBQUlPLE1BQU87WUFDbkI7WUFFQSxJQUFJLE9BQU9MLGVBQWUsWUFBWTtnQkFDcEMsTUFBTSxJQUFJSyxNQUFPO1lBQ25CO1FBQ0Y7UUFFQSxNQUFNLEVBQ0pDLEtBQUssRUFDTEMsWUFBWSxFQUNaQyxjQUFjLEVBQ2RQLGdCQUFnQlEsb0JBQW9CLEVBQ3BDTixXQUFXTyxlQUFlLEVBQzNCLEdBQUd6QjtRQUNKLE1BQU0wQixXQUFXNUIsNkNBQU1BLENBQUM7UUFDeEIsTUFBTTZCLGtCQUFrQi9CLGtEQUFXQSxDQUFDO1lBQ2xDLENBQUNpQixTQUFTZSxJQUFJLENBQUMsRUFBQ0MsS0FBSztnQkFDbkIsTUFBTUMsV0FBV2pCLFNBQVNnQjtnQkFFMUIsSUFBSVYsSUFBeUIsRUFBYztvQkFDekMsTUFBTVksc0JBQXNCLE9BQU9mLG1CQUFtQixjQUFjUSx1QkFBdUJSO29CQUUzRixJQUFJZSx3QkFBd0IsWUFBWUEsd0JBQXdCLFVBQVVMLFNBQVNNLE9BQU8sRUFBRTt3QkFDMUYsTUFBTUMsWUFBWXBCLFNBQVNnQjt3QkFFM0IsSUFBSSxDQUFDZCxXQUFXZSxVQUFVRyxZQUFZOzRCQUNwQyxJQUFJQyxRQUFRakI7NEJBRVosSUFBSTtnQ0FDRixNQUFNLElBQUlHOzRCQUNaLEVBQUUsT0FBT2UsR0FBRzs7Z0NBRVQsR0FDQ0QsS0FBSyxFQUNOLEdBQUdDLENBQUFBOzRCQUNOOzRCQUVBQyxRQUFRQyxJQUFJLENBQUMsY0FBZXhCLENBQUFBLFNBQVNlLElBQUksSUFBSSxTQUFRLElBQUssK0dBQStHLHdMQUF3TDtnQ0FDL1ZDO2dDQUNBQztnQ0FDQVEsV0FBV0w7Z0NBQ1hDOzRCQUNGO3dCQUNGO29CQUNGO29CQUVBLE1BQU1LLGlCQUFpQixPQUFPckIsY0FBYyxjQUFjTyxrQkFBa0JQO29CQUU1RSxJQUFJcUIsbUJBQW1CLFlBQVlBLG1CQUFtQixVQUFVYixTQUFTTSxPQUFPLEVBQUU7d0JBQ2hGLGFBQWE7d0JBQ2IsSUFBSUYsYUFBYUQsT0FBTzs0QkFDdEIsSUFBSUssUUFBUWpCOzRCQUVaLElBQUk7Z0NBQ0YsTUFBTSxJQUFJRzs0QkFDWixFQUFFLE9BQU9lLEdBQUc7O2dDQUVULEdBQ0NELEtBQUssRUFDTixHQUFHQyxDQUFBQTs0QkFDTjs0QkFFQUMsUUFBUUMsSUFBSSxDQUFDLGNBQWV4QixDQUFBQSxTQUFTZSxJQUFJLElBQUksU0FBUSxJQUFLLGtGQUFrRixnSkFBZ0o7Z0NBQzFSTTs0QkFDRjt3QkFDRjtvQkFDRjtvQkFFQSxJQUFJUixTQUFTTSxPQUFPLEVBQUVOLFNBQVNNLE9BQU8sR0FBRztnQkFDM0M7Z0JBRUEsT0FBT0Y7WUFDVDtRQUVGLENBQUMsQ0FBQ2pCLFNBQVNlLElBQUksQ0FBQyxFQUFFO1lBQUNmO1lBQVVXO1lBQXNCUjtTQUFlO1FBQ2xFLE1BQU13QixnQkFBZ0JwQyxpQ0FBaUNrQixhQUFhbUIsWUFBWSxFQUFFcEIsTUFBTXFCLFFBQVEsRUFBRW5CLGtCQUFrQkYsTUFBTXFCLFFBQVEsRUFBRWYsaUJBQWlCWjtRQUNySmxCLG9EQUFhQSxDQUFDMkM7UUFDZCxPQUFPQTtJQUNUOztZQWpFTXhDO1lBOERrQkk7OztBQUkxQjtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0JDLEdBRU0sTUFBTVEsY0FBYyxXQUFXLEdBQUVGLHFCQUFxQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvaG9va3MvdXNlU2VsZWN0b3IuanM/NjM3MiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRGVidWdWYWx1ZSwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlUmVkdXhDb250ZXh0SG9vaywgdXNlUmVkdXhDb250ZXh0IGFzIHVzZURlZmF1bHRSZWR1eENvbnRleHQgfSBmcm9tICcuL3VzZVJlZHV4Q29udGV4dCc7XG5pbXBvcnQgeyBSZWFjdFJlZHV4Q29udGV4dCB9IGZyb20gJy4uL2NvbXBvbmVudHMvQ29udGV4dCc7XG5pbXBvcnQgeyBub3RJbml0aWFsaXplZCB9IGZyb20gJy4uL3V0aWxzL3VzZVN5bmNFeHRlcm5hbFN0b3JlJztcbmxldCB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciA9IG5vdEluaXRpYWxpemVkO1xuZXhwb3J0IGNvbnN0IGluaXRpYWxpemVVc2VTZWxlY3RvciA9IGZuID0+IHtcbiAgdXNlU3luY0V4dGVybmFsU3RvcmVXaXRoU2VsZWN0b3IgPSBmbjtcbn07XG5cbmNvbnN0IHJlZkVxdWFsaXR5ID0gKGEsIGIpID0+IGEgPT09IGI7XG4vKipcclxuICogSG9vayBmYWN0b3J5LCB3aGljaCBjcmVhdGVzIGEgYHVzZVNlbGVjdG9yYCBob29rIGJvdW5kIHRvIGEgZ2l2ZW4gY29udGV4dC5cclxuICpcclxuICogQHBhcmFtIHtSZWFjdC5Db250ZXh0fSBbY29udGV4dD1SZWFjdFJlZHV4Q29udGV4dF0gQ29udGV4dCBwYXNzZWQgdG8geW91ciBgPFByb3ZpZGVyPmAuXHJcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBgdXNlU2VsZWN0b3JgIGhvb2sgYm91bmQgdG8gdGhlIHNwZWNpZmllZCBjb250ZXh0LlxyXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2VsZWN0b3JIb29rKGNvbnRleHQgPSBSZWFjdFJlZHV4Q29udGV4dCkge1xuICBjb25zdCB1c2VSZWR1eENvbnRleHQgPSBjb250ZXh0ID09PSBSZWFjdFJlZHV4Q29udGV4dCA/IHVzZURlZmF1bHRSZWR1eENvbnRleHQgOiBjcmVhdGVSZWR1eENvbnRleHRIb29rKGNvbnRleHQpO1xuICByZXR1cm4gZnVuY3Rpb24gdXNlU2VsZWN0b3Ioc2VsZWN0b3IsIGVxdWFsaXR5Rm5Pck9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHtcbiAgICAgIGVxdWFsaXR5Rm4gPSByZWZFcXVhbGl0eSxcbiAgICAgIHN0YWJpbGl0eUNoZWNrID0gdW5kZWZpbmVkLFxuICAgICAgbm9vcENoZWNrID0gdW5kZWZpbmVkXG4gICAgfSA9IHR5cGVvZiBlcXVhbGl0eUZuT3JPcHRpb25zID09PSAnZnVuY3Rpb24nID8ge1xuICAgICAgZXF1YWxpdHlGbjogZXF1YWxpdHlGbk9yT3B0aW9uc1xuICAgIH0gOiBlcXVhbGl0eUZuT3JPcHRpb25zO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghc2VsZWN0b3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBZb3UgbXVzdCBwYXNzIGEgc2VsZWN0b3IgdG8gdXNlU2VsZWN0b3JgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBzZWxlY3RvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBtdXN0IHBhc3MgYSBmdW5jdGlvbiBhcyBhIHNlbGVjdG9yIHRvIHVzZVNlbGVjdG9yYCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZXF1YWxpdHlGbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFlvdSBtdXN0IHBhc3MgYSBmdW5jdGlvbiBhcyBhbiBlcXVhbGl0eSBmdW5jdGlvbiB0byB1c2VTZWxlY3RvcmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHtcbiAgICAgIHN0b3JlLFxuICAgICAgc3Vic2NyaXB0aW9uLFxuICAgICAgZ2V0U2VydmVyU3RhdGUsXG4gICAgICBzdGFiaWxpdHlDaGVjazogZ2xvYmFsU3RhYmlsaXR5Q2hlY2ssXG4gICAgICBub29wQ2hlY2s6IGdsb2JhbE5vb3BDaGVja1xuICAgIH0gPSB1c2VSZWR1eENvbnRleHQoKTtcbiAgICBjb25zdCBmaXJzdFJ1biA9IHVzZVJlZih0cnVlKTtcbiAgICBjb25zdCB3cmFwcGVkU2VsZWN0b3IgPSB1c2VDYWxsYmFjayh7XG4gICAgICBbc2VsZWN0b3IubmFtZV0oc3RhdGUpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3RvcihzdGF0ZSk7XG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBjb25zdCBmaW5hbFN0YWJpbGl0eUNoZWNrID0gdHlwZW9mIHN0YWJpbGl0eUNoZWNrID09PSAndW5kZWZpbmVkJyA/IGdsb2JhbFN0YWJpbGl0eUNoZWNrIDogc3RhYmlsaXR5Q2hlY2s7XG5cbiAgICAgICAgICBpZiAoZmluYWxTdGFiaWxpdHlDaGVjayA9PT0gJ2Fsd2F5cycgfHwgZmluYWxTdGFiaWxpdHlDaGVjayA9PT0gJ29uY2UnICYmIGZpcnN0UnVuLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvQ29tcGFyZSA9IHNlbGVjdG9yKHN0YXRlKTtcblxuICAgICAgICAgICAgaWYgKCFlcXVhbGl0eUZuKHNlbGVjdGVkLCB0b0NvbXBhcmUpKSB7XG4gICAgICAgICAgICAgIGxldCBzdGFjayA9IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgO1xuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICBzdGFja1xuICAgICAgICAgICAgICAgIH0gPSBlKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybignU2VsZWN0b3IgJyArIChzZWxlY3Rvci5uYW1lIHx8ICd1bmtub3duJykgKyAnIHJldHVybmVkIGEgZGlmZmVyZW50IHJlc3VsdCB3aGVuIGNhbGxlZCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuIFRoaXMgY2FuIGxlYWQgdG8gdW5uZWNlc3NhcnkgcmVyZW5kZXJzLicgKyAnXFxuU2VsZWN0b3JzIHRoYXQgcmV0dXJuIGEgbmV3IHJlZmVyZW5jZSAoc3VjaCBhcyBhbiBvYmplY3Qgb3IgYW4gYXJyYXkpIHNob3VsZCBiZSBtZW1vaXplZDogaHR0cHM6Ly9yZWR1eC5qcy5vcmcvdXNhZ2UvZGVyaXZpbmctZGF0YS1zZWxlY3RvcnMjb3B0aW1pemluZy1zZWxlY3RvcnMtd2l0aC1tZW1vaXphdGlvbicsIHtcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZDI6IHRvQ29tcGFyZSxcbiAgICAgICAgICAgICAgICBzdGFja1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBmaW5hbE5vb3BDaGVjayA9IHR5cGVvZiBub29wQ2hlY2sgPT09ICd1bmRlZmluZWQnID8gZ2xvYmFsTm9vcENoZWNrIDogbm9vcENoZWNrO1xuXG4gICAgICAgICAgaWYgKGZpbmFsTm9vcENoZWNrID09PSAnYWx3YXlzJyB8fCBmaW5hbE5vb3BDaGVjayA9PT0gJ29uY2UnICYmIGZpcnN0UnVuLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCA9PT0gc3RhdGUpIHtcbiAgICAgICAgICAgICAgbGV0IHN0YWNrID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgIHN0YWNrXG4gICAgICAgICAgICAgICAgfSA9IGUpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdTZWxlY3RvciAnICsgKHNlbGVjdG9yLm5hbWUgfHwgJ3Vua25vd24nKSArICcgcmV0dXJuZWQgdGhlIHJvb3Qgc3RhdGUgd2hlbiBjYWxsZWQuIFRoaXMgY2FuIGxlYWQgdG8gdW5uZWNlc3NhcnkgcmVyZW5kZXJzLicgKyAnXFxuU2VsZWN0b3JzIHRoYXQgcmV0dXJuIHRoZSBlbnRpcmUgc3RhdGUgYXJlIGFsbW9zdCBjZXJ0YWlubHkgYSBtaXN0YWtlLCBhcyB0aGV5IHdpbGwgY2F1c2UgYSByZXJlbmRlciB3aGVuZXZlciAqYW55dGhpbmcqIGluIHN0YXRlIGNoYW5nZXMuJywge1xuICAgICAgICAgICAgICAgIHN0YWNrXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmaXJzdFJ1bi5jdXJyZW50KSBmaXJzdFJ1bi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgICB9XG5cbiAgICB9W3NlbGVjdG9yLm5hbWVdLCBbc2VsZWN0b3IsIGdsb2JhbFN0YWJpbGl0eUNoZWNrLCBzdGFiaWxpdHlDaGVja10pO1xuICAgIGNvbnN0IHNlbGVjdGVkU3RhdGUgPSB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvcihzdWJzY3JpcHRpb24uYWRkTmVzdGVkU3ViLCBzdG9yZS5nZXRTdGF0ZSwgZ2V0U2VydmVyU3RhdGUgfHwgc3RvcmUuZ2V0U3RhdGUsIHdyYXBwZWRTZWxlY3RvciwgZXF1YWxpdHlGbik7XG4gICAgdXNlRGVidWdWYWx1ZShzZWxlY3RlZFN0YXRlKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRTdGF0ZTtcbiAgfTtcbn1cbi8qKlxyXG4gKiBBIGhvb2sgdG8gYWNjZXNzIHRoZSByZWR1eCBzdG9yZSdzIHN0YXRlLiBUaGlzIGhvb2sgdGFrZXMgYSBzZWxlY3RvciBmdW5jdGlvblxyXG4gKiBhcyBhbiBhcmd1bWVudC4gVGhlIHNlbGVjdG9yIGlzIGNhbGxlZCB3aXRoIHRoZSBzdG9yZSBzdGF0ZS5cclxuICpcclxuICogVGhpcyBob29rIHRha2VzIGFuIG9wdGlvbmFsIGVxdWFsaXR5IGNvbXBhcmlzb24gZnVuY3Rpb24gYXMgdGhlIHNlY29uZCBwYXJhbWV0ZXJcclxuICogdGhhdCBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGUgd2F5IHRoZSBzZWxlY3RlZCBzdGF0ZSBpcyBjb21wYXJlZCB0byBkZXRlcm1pbmVcclxuICogd2hldGhlciB0aGUgY29tcG9uZW50IG5lZWRzIHRvIGJlIHJlLXJlbmRlcmVkLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZWxlY3RvciB0aGUgc2VsZWN0b3IgZnVuY3Rpb25cclxuICogQHBhcmFtIHtGdW5jdGlvbj19IGVxdWFsaXR5Rm4gdGhlIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSBlcXVhbGl0eVxyXG4gKlxyXG4gKiBAcmV0dXJucyB7YW55fSB0aGUgc2VsZWN0ZWQgc3RhdGVcclxuICpcclxuICogQGV4YW1wbGVcclxuICpcclxuICogaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xyXG4gKiBpbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4J1xyXG4gKlxyXG4gKiBleHBvcnQgY29uc3QgQ291bnRlckNvbXBvbmVudCA9ICgpID0+IHtcclxuICogICBjb25zdCBjb3VudGVyID0gdXNlU2VsZWN0b3Ioc3RhdGUgPT4gc3RhdGUuY291bnRlcilcclxuICogICByZXR1cm4gPGRpdj57Y291bnRlcn08L2Rpdj5cclxuICogfVxyXG4gKi9cblxuZXhwb3J0IGNvbnN0IHVzZVNlbGVjdG9yID0gLyojX19QVVJFX18qL2NyZWF0ZVNlbGVjdG9ySG9vaygpOyJdLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZURlYnVnVmFsdWUiLCJ1c2VSZWYiLCJjcmVhdGVSZWR1eENvbnRleHRIb29rIiwidXNlUmVkdXhDb250ZXh0IiwidXNlRGVmYXVsdFJlZHV4Q29udGV4dCIsIlJlYWN0UmVkdXhDb250ZXh0Iiwibm90SW5pdGlhbGl6ZWQiLCJ1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciIsImluaXRpYWxpemVVc2VTZWxlY3RvciIsImZuIiwicmVmRXF1YWxpdHkiLCJhIiwiYiIsImNyZWF0ZVNlbGVjdG9ySG9vayIsImNvbnRleHQiLCJ1c2VTZWxlY3RvciIsInNlbGVjdG9yIiwiZXF1YWxpdHlGbk9yT3B0aW9ucyIsImVxdWFsaXR5Rm4iLCJzdGFiaWxpdHlDaGVjayIsInVuZGVmaW5lZCIsIm5vb3BDaGVjayIsInByb2Nlc3MiLCJFcnJvciIsInN0b3JlIiwic3Vic2NyaXB0aW9uIiwiZ2V0U2VydmVyU3RhdGUiLCJnbG9iYWxTdGFiaWxpdHlDaGVjayIsImdsb2JhbE5vb3BDaGVjayIsImZpcnN0UnVuIiwid3JhcHBlZFNlbGVjdG9yIiwibmFtZSIsInN0YXRlIiwic2VsZWN0ZWQiLCJmaW5hbFN0YWJpbGl0eUNoZWNrIiwiY3VycmVudCIsInRvQ29tcGFyZSIsInN0YWNrIiwiZSIsImNvbnNvbGUiLCJ3YXJuIiwic2VsZWN0ZWQyIiwiZmluYWxOb29wQ2hlY2siLCJzZWxlY3RlZFN0YXRlIiwiYWRkTmVzdGVkU3ViIiwiZ2V0U3RhdGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/hooks/useSelector.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/hooks/useStore.js":
/*!*******************************************************!*\
!*** ./node_modules/react-redux/es/hooks/useStore.js ***!
\*******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createStoreHook: function() { return /* binding */ createStoreHook; },\n/* harmony export */ useStore: function() { return /* binding */ useStore; }\n/* harmony export */ });\n/* harmony import */ var _components_Context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../components/Context */ \"(app-pages-browser)/./node_modules/react-redux/es/components/Context.js\");\n/* harmony import */ var _useReduxContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./useReduxContext */ \"(app-pages-browser)/./node_modules/react-redux/es/hooks/useReduxContext.js\");\n\n\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */ function createStoreHook() {\n let context = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext;\n var _s = $RefreshSig$();\n const useReduxContext = context === _components_Context__WEBPACK_IMPORTED_MODULE_0__.ReactReduxContext ? _useReduxContext__WEBPACK_IMPORTED_MODULE_1__.useReduxContext : (0,_useReduxContext__WEBPACK_IMPORTED_MODULE_1__.createReduxContextHook)(context);\n return _s(function useStore() {\n _s();\n const { store } = useReduxContext(); // @ts-ignore\n return store;\n }, \"qjqE1P4cxIR34tJenP4fiRmGXu0=\", false, function() {\n return [\n useReduxContext\n ];\n });\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */ const useStore = /*#__PURE__*/ createStoreHook();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9ob29rcy91c2VTdG9yZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQTBEO0FBQzRDO0FBQ3RHOzs7OztDQUtDLEdBRU0sU0FBU0k7UUFBZ0JDLFVBQUFBLGlFQUFVTCxrRUFBaUJBOztJQUN6RCxNQUFNQyxrQkFDTkksWUFBWUwsa0VBQWlCQSxHQUFHRSw2REFBc0JBLEdBQ3REQyx3RUFBc0JBLENBQUNFO0lBQ3ZCLFVBQU8sU0FBU0M7O1FBQ2QsTUFBTSxFQUNKQyxLQUFLLEVBQ04sR0FBR04sbUJBQW1CLGFBQWE7UUFFcEMsT0FBT007SUFDVDs7WUFITU47OztBQUlSO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0NBY0MsR0FFTSxNQUFNSyxXQUFXLFdBQVcsR0FBRUYsa0JBQWtCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9ob29rcy91c2VTdG9yZS5qcz8zYmQ1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWN0UmVkdXhDb250ZXh0IH0gZnJvbSAnLi4vY29tcG9uZW50cy9Db250ZXh0JztcbmltcG9ydCB7IHVzZVJlZHV4Q29udGV4dCBhcyB1c2VEZWZhdWx0UmVkdXhDb250ZXh0LCBjcmVhdGVSZWR1eENvbnRleHRIb29rIH0gZnJvbSAnLi91c2VSZWR1eENvbnRleHQnO1xuLyoqXHJcbiAqIEhvb2sgZmFjdG9yeSwgd2hpY2ggY3JlYXRlcyBhIGB1c2VTdG9yZWAgaG9vayBib3VuZCB0byBhIGdpdmVuIGNvbnRleHQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7UmVhY3QuQ29udGV4dH0gW2NvbnRleHQ9UmVhY3RSZWR1eENvbnRleHRdIENvbnRleHQgcGFzc2VkIHRvIHlvdXIgYDxQcm92aWRlcj5gLlxyXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgYHVzZVN0b3JlYCBob29rIGJvdW5kIHRvIHRoZSBzcGVjaWZpZWQgY29udGV4dC5cclxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdG9yZUhvb2soY29udGV4dCA9IFJlYWN0UmVkdXhDb250ZXh0KSB7XG4gIGNvbnN0IHVzZVJlZHV4Q29udGV4dCA9IC8vIEB0cy1pZ25vcmVcbiAgY29udGV4dCA9PT0gUmVhY3RSZWR1eENvbnRleHQgPyB1c2VEZWZhdWx0UmVkdXhDb250ZXh0IDogLy8gQHRzLWlnbm9yZVxuICBjcmVhdGVSZWR1eENvbnRleHRIb29rKGNvbnRleHQpO1xuICByZXR1cm4gZnVuY3Rpb24gdXNlU3RvcmUoKSB7XG4gICAgY29uc3Qge1xuICAgICAgc3RvcmVcbiAgICB9ID0gdXNlUmVkdXhDb250ZXh0KCk7IC8vIEB0cy1pZ25vcmVcblxuICAgIHJldHVybiBzdG9yZTtcbiAgfTtcbn1cbi8qKlxyXG4gKiBBIGhvb2sgdG8gYWNjZXNzIHRoZSByZWR1eCBzdG9yZS5cclxuICpcclxuICogQHJldHVybnMge2FueX0gdGhlIHJlZHV4IHN0b3JlXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqXHJcbiAqIGltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcclxuICogaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICdyZWFjdC1yZWR1eCdcclxuICpcclxuICogZXhwb3J0IGNvbnN0IEV4YW1wbGVDb21wb25lbnQgPSAoKSA9PiB7XHJcbiAqICAgY29uc3Qgc3RvcmUgPSB1c2VTdG9yZSgpXHJcbiAqICAgcmV0dXJuIDxkaXY+e3N0b3JlLmdldFN0YXRlKCl9PC9kaXY+XHJcbiAqIH1cclxuICovXG5cbmV4cG9ydCBjb25zdCB1c2VTdG9yZSA9IC8qI19fUFVSRV9fKi9jcmVhdGVTdG9yZUhvb2soKTsiXSwibmFtZXMiOlsiUmVhY3RSZWR1eENvbnRleHQiLCJ1c2VSZWR1eENvbnRleHQiLCJ1c2VEZWZhdWx0UmVkdXhDb250ZXh0IiwiY3JlYXRlUmVkdXhDb250ZXh0SG9vayIsImNyZWF0ZVN0b3JlSG9vayIsImNvbnRleHQiLCJ1c2VTdG9yZSIsInN0b3JlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/hooks/useStore.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/index.js":
/*!**********************************************!*\
!*** ./node_modules/react-redux/es/index.js ***!
\**********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Provider: function() { return /* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.Provider; },\n/* harmony export */ ReactReduxContext: function() { return /* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.ReactReduxContext; },\n/* harmony export */ batch: function() { return /* reexport safe */ _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates; },\n/* harmony export */ connect: function() { return /* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.connect; },\n/* harmony export */ createDispatchHook: function() { return /* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.createDispatchHook; },\n/* harmony export */ createSelectorHook: function() { return /* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.createSelectorHook; },\n/* harmony export */ createStoreHook: function() { return /* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.createStoreHook; },\n/* harmony export */ shallowEqual: function() { return /* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.shallowEqual; },\n/* harmony export */ useDispatch: function() { return /* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.useDispatch; },\n/* harmony export */ useSelector: function() { return /* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.useSelector; },\n/* harmony export */ useStore: function() { return /* reexport safe */ _exports__WEBPACK_IMPORTED_MODULE_6__.useStore; }\n/* harmony export */ });\n/* harmony import */ var use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! use-sync-external-store/shim */ \"(app-pages-browser)/./node_modules/use-sync-external-store/shim/index.js\");\n/* harmony import */ var use_sync_external_store_shim_with_selector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! use-sync-external-store/shim/with-selector */ \"(app-pages-browser)/./node_modules/use-sync-external-store/shim/with-selector.js\");\n/* harmony import */ var _utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/reactBatchedUpdates */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/reactBatchedUpdates.js\");\n/* harmony import */ var _utils_batch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/batch */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/batch.js\");\n/* harmony import */ var _hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/useSelector */ \"(app-pages-browser)/./node_modules/react-redux/es/hooks/useSelector.js\");\n/* harmony import */ var _components_connect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/connect */ \"(app-pages-browser)/./node_modules/react-redux/es/components/connect.js\");\n/* harmony import */ var _exports__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./exports */ \"(app-pages-browser)/./node_modules/react-redux/es/exports.js\");\n// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\n\n\n\n\n\n\n(0,_hooks_useSelector__WEBPACK_IMPORTED_MODULE_4__.initializeUseSelector)(use_sync_external_store_shim_with_selector__WEBPACK_IMPORTED_MODULE_1__.useSyncExternalStoreWithSelector);\n(0,_components_connect__WEBPACK_IMPORTED_MODULE_5__.initializeConnect)(use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_0__.useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n(0,_utils_batch__WEBPACK_IMPORTED_MODULE_3__.setBatch)(_utils_reactBatchedUpdates__WEBPACK_IMPORTED_MODULE_2__.unstable_batchedUpdates);\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrRUFBK0U7QUFDL0UsaUZBQWlGO0FBQ2pGLG1FQUFtRTtBQUNDO0FBQzBCO0FBQ2Y7QUFDdEM7QUFDbUI7QUFDSDtBQUN6REsseUVBQXFCQSxDQUFDSix3R0FBZ0NBO0FBQ3RESyxzRUFBaUJBLENBQUNOLDhFQUFvQkEsR0FBRyxzREFBc0Q7QUFDL0YseURBQXlEO0FBRXpESSxzREFBUUEsQ0FBQ0QsK0VBQUtBO0FBQ0c7QUFDUyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvaW5kZXguanM/NTMyNSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgcHJpbWFyeSBlbnRyeSBwb2ludCBhc3N1bWVzIHdlJ3JlIHdvcmtpbmcgd2l0aCBzdGFuZGFyZCBSZWFjdERPTS9STiwgYnV0XG4vLyBvbGRlciB2ZXJzaW9ucyB0aGF0IGRvIG5vdCBpbmNsdWRlIGB1c2VTeW5jRXh0ZXJuYWxTdG9yZWAgKFJlYWN0IDE2LjkgLSAxNy54KS5cbi8vIEJlY2F1c2Ugb2YgdGhhdCwgdGhlIHVzZVN5bmNFeHRlcm5hbFN0b3JlIGNvbXBhdCBzaGltIGlzIG5lZWRlZC5cbmltcG9ydCB7IHVzZVN5bmNFeHRlcm5hbFN0b3JlIH0gZnJvbSAndXNlLXN5bmMtZXh0ZXJuYWwtc3RvcmUvc2hpbSc7XG5pbXBvcnQgeyB1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3RvciB9IGZyb20gJ3VzZS1zeW5jLWV4dGVybmFsLXN0b3JlL3NoaW0vd2l0aC1zZWxlY3Rvcic7XG5pbXBvcnQgeyB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyBhcyBiYXRjaCB9IGZyb20gJy4vdXRpbHMvcmVhY3RCYXRjaGVkVXBkYXRlcyc7XG5pbXBvcnQgeyBzZXRCYXRjaCB9IGZyb20gJy4vdXRpbHMvYmF0Y2gnO1xuaW1wb3J0IHsgaW5pdGlhbGl6ZVVzZVNlbGVjdG9yIH0gZnJvbSAnLi9ob29rcy91c2VTZWxlY3Rvcic7XG5pbXBvcnQgeyBpbml0aWFsaXplQ29ubmVjdCB9IGZyb20gJy4vY29tcG9uZW50cy9jb25uZWN0JztcbmluaXRpYWxpemVVc2VTZWxlY3Rvcih1c2VTeW5jRXh0ZXJuYWxTdG9yZVdpdGhTZWxlY3Rvcik7XG5pbml0aWFsaXplQ29ubmVjdCh1c2VTeW5jRXh0ZXJuYWxTdG9yZSk7IC8vIEVuYWJsZSBiYXRjaGVkIHVwZGF0ZXMgaW4gb3VyIHN1YnNjcmlwdGlvbnMgZm9yIHVzZVxuLy8gd2l0aCBzdGFuZGFyZCBSZWFjdCByZW5kZXJlcnMgKFJlYWN0RE9NLCBSZWFjdCBOYXRpdmUpXG5cbnNldEJhdGNoKGJhdGNoKTtcbmV4cG9ydCB7IGJhdGNoIH07XG5leHBvcnQgKiBmcm9tICcuL2V4cG9ydHMnOyJdLCJuYW1lcyI6WyJ1c2VTeW5jRXh0ZXJuYWxTdG9yZSIsInVzZVN5bmNFeHRlcm5hbFN0b3JlV2l0aFNlbGVjdG9yIiwidW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMiLCJiYXRjaCIsInNldEJhdGNoIiwiaW5pdGlhbGl6ZVVzZVNlbGVjdG9yIiwiaW5pdGlhbGl6ZUNvbm5lY3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/index.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/types.js":
/*!**********************************************!*\
!*** ./node_modules/react-redux/es/types.js ***!
\**********************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy90eXBlcy5qcyIsIm1hcHBpbmdzIjoiO0FBQVUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3R5cGVzLmpzPzg2MWYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/types.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/utils/Subscription.js":
/*!***********************************************************!*\
!*** ./node_modules/react-redux/es/utils/Subscription.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createSubscription: function() { return /* binding */ createSubscription; }\n/* harmony export */ });\n/* harmony import */ var _batch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./batch */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/batch.js\");\n // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nfunction createListenerCollection() {\n const batch = (0,_batch__WEBPACK_IMPORTED_MODULE_0__.getBatch)();\n let first = null;\n let last = null;\n return {\n clear () {\n first = null;\n last = null;\n },\n notify () {\n batch(()=>{\n let listener = first;\n while(listener){\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get () {\n let listeners = [];\n let listener = first;\n while(listener){\n listeners.push(listener);\n listener = listener.next;\n }\n return listeners;\n },\n subscribe (callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\nconst nullListeners = {\n notify () {},\n get: ()=>[]\n};\nfunction createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners; // Reasons to keep the subscription active\n let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?)\n let selfSubscribed = false;\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener); // cleanup nested sub\n let removed = false;\n return ()=>{\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n function notifyNestedSubs() {\n listeners.notify();\n }\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n function isSubscribed() {\n return selfSubscribed;\n }\n function trySubscribe() {\n subscriptionsAmount++;\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n function tryUnsubscribe() {\n subscriptionsAmount--;\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: ()=>listeners\n };\n return subscription;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy9TdWJzY3JpcHRpb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBbUMsQ0FBQyx3RkFBd0Y7QUFDNUgsb0ZBQW9GO0FBQ3BGLG1EQUFtRDtBQUVuRCxTQUFTQztJQUNQLE1BQU1DLFFBQVFGLGdEQUFRQTtJQUN0QixJQUFJRyxRQUFRO0lBQ1osSUFBSUMsT0FBTztJQUNYLE9BQU87UUFDTEM7WUFDRUYsUUFBUTtZQUNSQyxPQUFPO1FBQ1Q7UUFFQUU7WUFDRUosTUFBTTtnQkFDSixJQUFJSyxXQUFXSjtnQkFFZixNQUFPSSxTQUFVO29CQUNmQSxTQUFTQyxRQUFRO29CQUNqQkQsV0FBV0EsU0FBU0UsSUFBSTtnQkFDMUI7WUFDRjtRQUNGO1FBRUFDO1lBQ0UsSUFBSUMsWUFBWSxFQUFFO1lBQ2xCLElBQUlKLFdBQVdKO1lBRWYsTUFBT0ksU0FBVTtnQkFDZkksVUFBVUMsSUFBSSxDQUFDTDtnQkFDZkEsV0FBV0EsU0FBU0UsSUFBSTtZQUMxQjtZQUVBLE9BQU9FO1FBQ1Q7UUFFQUUsV0FBVUwsUUFBUTtZQUNoQixJQUFJTSxlQUFlO1lBQ25CLElBQUlQLFdBQVdILE9BQU87Z0JBQ3BCSTtnQkFDQUMsTUFBTTtnQkFDTk0sTUFBTVg7WUFDUjtZQUVBLElBQUlHLFNBQVNRLElBQUksRUFBRTtnQkFDakJSLFNBQVNRLElBQUksQ0FBQ04sSUFBSSxHQUFHRjtZQUN2QixPQUFPO2dCQUNMSixRQUFRSTtZQUNWO1lBRUEsT0FBTyxTQUFTUztnQkFDZCxJQUFJLENBQUNGLGdCQUFnQlgsVUFBVSxNQUFNO2dCQUNyQ1csZUFBZTtnQkFFZixJQUFJUCxTQUFTRSxJQUFJLEVBQUU7b0JBQ2pCRixTQUFTRSxJQUFJLENBQUNNLElBQUksR0FBR1IsU0FBU1EsSUFBSTtnQkFDcEMsT0FBTztvQkFDTFgsT0FBT0csU0FBU1EsSUFBSTtnQkFDdEI7Z0JBRUEsSUFBSVIsU0FBU1EsSUFBSSxFQUFFO29CQUNqQlIsU0FBU1EsSUFBSSxDQUFDTixJQUFJLEdBQUdGLFNBQVNFLElBQUk7Z0JBQ3BDLE9BQU87b0JBQ0xOLFFBQVFJLFNBQVNFLElBQUk7Z0JBQ3ZCO1lBQ0Y7UUFDRjtJQUVGO0FBQ0Y7QUFFQSxNQUFNUSxnQkFBZ0I7SUFDcEJYLFdBQVU7SUFFVkksS0FBSyxJQUFNLEVBQUU7QUFDZjtBQUNPLFNBQVNRLG1CQUFtQkMsS0FBSyxFQUFFQyxTQUFTO0lBQ2pELElBQUlKO0lBQ0osSUFBSUwsWUFBWU0sZUFBZSwwQ0FBMEM7SUFFekUsSUFBSUksc0JBQXNCLEdBQUcsa0VBQWtFO0lBRS9GLElBQUlDLGlCQUFpQjtJQUVyQixTQUFTQyxhQUFhaEIsUUFBUTtRQUM1QmlCO1FBQ0EsTUFBTUMsa0JBQWtCZCxVQUFVRSxTQUFTLENBQUNOLFdBQVcscUJBQXFCO1FBRTVFLElBQUltQixVQUFVO1FBQ2QsT0FBTztZQUNMLElBQUksQ0FBQ0EsU0FBUztnQkFDWkEsVUFBVTtnQkFDVkQ7Z0JBQ0FFO1lBQ0Y7UUFDRjtJQUNGO0lBRUEsU0FBU0M7UUFDUGpCLFVBQVVMLE1BQU07SUFDbEI7SUFFQSxTQUFTdUI7UUFDUCxJQUFJQyxhQUFhQyxhQUFhLEVBQUU7WUFDOUJELGFBQWFDLGFBQWE7UUFDNUI7SUFDRjtJQUVBLFNBQVNqQjtRQUNQLE9BQU9RO0lBQ1Q7SUFFQSxTQUFTRTtRQUNQSDtRQUVBLElBQUksQ0FBQ0wsYUFBYTtZQUNoQkEsY0FBY0ksWUFBWUEsVUFBVUcsWUFBWSxDQUFDTSx1QkFBdUJWLE1BQU1OLFNBQVMsQ0FBQ2dCO1lBQ3hGbEIsWUFBWVY7UUFDZDtJQUNGO0lBRUEsU0FBUzBCO1FBQ1BOO1FBRUEsSUFBSUwsZUFBZUssd0JBQXdCLEdBQUc7WUFDNUNMO1lBQ0FBLGNBQWNnQjtZQUNkckIsVUFBVU4sS0FBSztZQUNmTSxZQUFZTTtRQUNkO0lBQ0Y7SUFFQSxTQUFTZ0I7UUFDUCxJQUFJLENBQUNYLGdCQUFnQjtZQUNuQkEsaUJBQWlCO1lBQ2pCRTtRQUNGO0lBQ0Y7SUFFQSxTQUFTVTtRQUNQLElBQUlaLGdCQUFnQjtZQUNsQkEsaUJBQWlCO1lBQ2pCSztRQUNGO0lBQ0Y7SUFFQSxNQUFNRyxlQUFlO1FBQ25CUDtRQUNBSztRQUNBQztRQUNBZjtRQUNBVSxjQUFjUztRQUNkTixnQkFBZ0JPO1FBQ2hCQyxjQUFjLElBQU14QjtJQUN0QjtJQUNBLE9BQU9tQjtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy9TdWJzY3JpcHRpb24uanM/ZGI1MCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRCYXRjaCB9IGZyb20gJy4vYmF0Y2gnOyAvLyBlbmNhcHN1bGF0ZXMgdGhlIHN1YnNjcmlwdGlvbiBsb2dpYyBmb3IgY29ubmVjdGluZyBhIGNvbXBvbmVudCB0byB0aGUgcmVkdXggc3RvcmUsIGFzXG4vLyB3ZWxsIGFzIG5lc3Rpbmcgc3Vic2NyaXB0aW9ucyBvZiBkZXNjZW5kYW50IGNvbXBvbmVudHMsIHNvIHRoYXQgd2UgY2FuIGVuc3VyZSB0aGVcbi8vIGFuY2VzdG9yIGNvbXBvbmVudHMgcmUtcmVuZGVyIGJlZm9yZSBkZXNjZW5kYW50c1xuXG5mdW5jdGlvbiBjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24oKSB7XG4gIGNvbnN0IGJhdGNoID0gZ2V0QmF0Y2goKTtcbiAgbGV0IGZpcnN0ID0gbnVsbDtcbiAgbGV0IGxhc3QgPSBudWxsO1xuICByZXR1cm4ge1xuICAgIGNsZWFyKCkge1xuICAgICAgZmlyc3QgPSBudWxsO1xuICAgICAgbGFzdCA9IG51bGw7XG4gICAgfSxcblxuICAgIG5vdGlmeSgpIHtcbiAgICAgIGJhdGNoKCgpID0+IHtcbiAgICAgICAgbGV0IGxpc3RlbmVyID0gZmlyc3Q7XG5cbiAgICAgICAgd2hpbGUgKGxpc3RlbmVyKSB7XG4gICAgICAgICAgbGlzdGVuZXIuY2FsbGJhY2soKTtcbiAgICAgICAgICBsaXN0ZW5lciA9IGxpc3RlbmVyLm5leHQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBnZXQoKSB7XG4gICAgICBsZXQgbGlzdGVuZXJzID0gW107XG4gICAgICBsZXQgbGlzdGVuZXIgPSBmaXJzdDtcblxuICAgICAgd2hpbGUgKGxpc3RlbmVyKSB7XG4gICAgICAgIGxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgICAgbGlzdGVuZXIgPSBsaXN0ZW5lci5uZXh0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGlzdGVuZXJzO1xuICAgIH0sXG5cbiAgICBzdWJzY3JpYmUoY2FsbGJhY2spIHtcbiAgICAgIGxldCBpc1N1YnNjcmliZWQgPSB0cnVlO1xuICAgICAgbGV0IGxpc3RlbmVyID0gbGFzdCA9IHtcbiAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgIG5leHQ6IG51bGwsXG4gICAgICAgIHByZXY6IGxhc3RcbiAgICAgIH07XG5cbiAgICAgIGlmIChsaXN0ZW5lci5wcmV2KSB7XG4gICAgICAgIGxpc3RlbmVyLnByZXYubmV4dCA9IGxpc3RlbmVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlyc3QgPSBsaXN0ZW5lcjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgICBpZiAoIWlzU3Vic2NyaWJlZCB8fCBmaXJzdCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgICAgICBpc1N1YnNjcmliZWQgPSBmYWxzZTtcblxuICAgICAgICBpZiAobGlzdGVuZXIubmV4dCkge1xuICAgICAgICAgIGxpc3RlbmVyLm5leHQucHJldiA9IGxpc3RlbmVyLnByZXY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGFzdCA9IGxpc3RlbmVyLnByZXY7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGlzdGVuZXIucHJldikge1xuICAgICAgICAgIGxpc3RlbmVyLnByZXYubmV4dCA9IGxpc3RlbmVyLm5leHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlyc3QgPSBsaXN0ZW5lci5uZXh0O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICB9O1xufVxuXG5jb25zdCBudWxsTGlzdGVuZXJzID0ge1xuICBub3RpZnkoKSB7fSxcblxuICBnZXQ6ICgpID0+IFtdXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YnNjcmlwdGlvbihzdG9yZSwgcGFyZW50U3ViKSB7XG4gIGxldCB1bnN1YnNjcmliZTtcbiAgbGV0IGxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7IC8vIFJlYXNvbnMgdG8ga2VlcCB0aGUgc3Vic2NyaXB0aW9uIGFjdGl2ZVxuXG4gIGxldCBzdWJzY3JpcHRpb25zQW1vdW50ID0gMDsgLy8gSXMgdGhpcyBzcGVjaWZpYyBzdWJzY3JpcHRpb24gc3Vic2NyaWJlZCAob3Igb25seSBuZXN0ZWQgb25lcz8pXG5cbiAgbGV0IHNlbGZTdWJzY3JpYmVkID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gYWRkTmVzdGVkU3ViKGxpc3RlbmVyKSB7XG4gICAgdHJ5U3Vic2NyaWJlKCk7XG4gICAgY29uc3QgY2xlYW51cExpc3RlbmVyID0gbGlzdGVuZXJzLnN1YnNjcmliZShsaXN0ZW5lcik7IC8vIGNsZWFudXAgbmVzdGVkIHN1YlxuXG4gICAgbGV0IHJlbW92ZWQgPSBmYWxzZTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKCFyZW1vdmVkKSB7XG4gICAgICAgIHJlbW92ZWQgPSB0cnVlO1xuICAgICAgICBjbGVhbnVwTGlzdGVuZXIoKTtcbiAgICAgICAgdHJ5VW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gbm90aWZ5TmVzdGVkU3VicygpIHtcbiAgICBsaXN0ZW5lcnMubm90aWZ5KCk7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVDaGFuZ2VXcmFwcGVyKCkge1xuICAgIGlmIChzdWJzY3JpcHRpb24ub25TdGF0ZUNoYW5nZSkge1xuICAgICAgc3Vic2NyaXB0aW9uLm9uU3RhdGVDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1N1YnNjcmliZWQoKSB7XG4gICAgcmV0dXJuIHNlbGZTdWJzY3JpYmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJ5U3Vic2NyaWJlKCkge1xuICAgIHN1YnNjcmlwdGlvbnNBbW91bnQrKztcblxuICAgIGlmICghdW5zdWJzY3JpYmUpIHtcbiAgICAgIHVuc3Vic2NyaWJlID0gcGFyZW50U3ViID8gcGFyZW50U3ViLmFkZE5lc3RlZFN1YihoYW5kbGVDaGFuZ2VXcmFwcGVyKSA6IHN0b3JlLnN1YnNjcmliZShoYW5kbGVDaGFuZ2VXcmFwcGVyKTtcbiAgICAgIGxpc3RlbmVycyA9IGNyZWF0ZUxpc3RlbmVyQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRyeVVuc3Vic2NyaWJlKCkge1xuICAgIHN1YnNjcmlwdGlvbnNBbW91bnQtLTtcblxuICAgIGlmICh1bnN1YnNjcmliZSAmJiBzdWJzY3JpcHRpb25zQW1vdW50ID09PSAwKSB7XG4gICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgdW5zdWJzY3JpYmUgPSB1bmRlZmluZWQ7XG4gICAgICBsaXN0ZW5lcnMuY2xlYXIoKTtcbiAgICAgIGxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdHJ5U3Vic2NyaWJlU2VsZigpIHtcbiAgICBpZiAoIXNlbGZTdWJzY3JpYmVkKSB7XG4gICAgICBzZWxmU3Vic2NyaWJlZCA9IHRydWU7XG4gICAgICB0cnlTdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB0cnlVbnN1YnNjcmliZVNlbGYoKSB7XG4gICAgaWYgKHNlbGZTdWJzY3JpYmVkKSB7XG4gICAgICBzZWxmU3Vic2NyaWJlZCA9IGZhbHNlO1xuICAgICAgdHJ5VW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdWJzY3JpcHRpb24gPSB7XG4gICAgYWRkTmVzdGVkU3ViLFxuICAgIG5vdGlmeU5lc3RlZFN1YnMsXG4gICAgaGFuZGxlQ2hhbmdlV3JhcHBlcixcbiAgICBpc1N1YnNjcmliZWQsXG4gICAgdHJ5U3Vic2NyaWJlOiB0cnlTdWJzY3JpYmVTZWxmLFxuICAgIHRyeVVuc3Vic2NyaWJlOiB0cnlVbnN1YnNjcmliZVNlbGYsXG4gICAgZ2V0TGlzdGVuZXJzOiAoKSA9PiBsaXN0ZW5lcnNcbiAgfTtcbiAgcmV0dXJuIHN1YnNjcmlwdGlvbjtcbn0iXSwibmFtZXMiOlsiZ2V0QmF0Y2giLCJjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24iLCJiYXRjaCIsImZpcnN0IiwibGFzdCIsImNsZWFyIiwibm90aWZ5IiwibGlzdGVuZXIiLCJjYWxsYmFjayIsIm5leHQiLCJnZXQiLCJsaXN0ZW5lcnMiLCJwdXNoIiwic3Vic2NyaWJlIiwiaXNTdWJzY3JpYmVkIiwicHJldiIsInVuc3Vic2NyaWJlIiwibnVsbExpc3RlbmVycyIsImNyZWF0ZVN1YnNjcmlwdGlvbiIsInN0b3JlIiwicGFyZW50U3ViIiwic3Vic2NyaXB0aW9uc0Ftb3VudCIsInNlbGZTdWJzY3JpYmVkIiwiYWRkTmVzdGVkU3ViIiwidHJ5U3Vic2NyaWJlIiwiY2xlYW51cExpc3RlbmVyIiwicmVtb3ZlZCIsInRyeVVuc3Vic2NyaWJlIiwibm90aWZ5TmVzdGVkU3VicyIsImhhbmRsZUNoYW5nZVdyYXBwZXIiLCJzdWJzY3JpcHRpb24iLCJvblN0YXRlQ2hhbmdlIiwidW5kZWZpbmVkIiwidHJ5U3Vic2NyaWJlU2VsZiIsInRyeVVuc3Vic2NyaWJlU2VsZiIsImdldExpc3RlbmVycyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/utils/Subscription.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/utils/batch.js":
/*!****************************************************!*\
!*** ./node_modules/react-redux/es/utils/batch.js ***!
\****************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getBatch: function() { return /* binding */ getBatch; },\n/* harmony export */ setBatch: function() { return /* binding */ setBatch; }\n/* harmony export */ });\n// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\nconst setBatch = (newBatch)=>batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\nconst getBatch = ()=>batch;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy9iYXRjaC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQUF3RTtBQUN4RSxTQUFTQSxpQkFBaUJDLFFBQVE7SUFDaENBO0FBQ0Y7QUFFQSxJQUFJQyxRQUFRRixrQkFBa0Isa0RBQWtEO0FBRXpFLE1BQU1HLFdBQVdDLENBQUFBLFdBQVlGLFFBQVFFLFNBQVMsQ0FBQyx5REFBeUQ7QUFFeEcsTUFBTUMsV0FBVyxJQUFNSCxNQUFNIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy9iYXRjaC5qcz8xNGQyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIERlZmF1bHQgdG8gYSBkdW1teSBcImJhdGNoXCIgaW1wbGVtZW50YXRpb24gdGhhdCBqdXN0IHJ1bnMgdGhlIGNhbGxiYWNrXG5mdW5jdGlvbiBkZWZhdWx0Tm9vcEJhdGNoKGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrKCk7XG59XG5cbmxldCBiYXRjaCA9IGRlZmF1bHROb29wQmF0Y2g7IC8vIEFsbG93IGluamVjdGluZyBhbm90aGVyIGJhdGNoaW5nIGZ1bmN0aW9uIGxhdGVyXG5cbmV4cG9ydCBjb25zdCBzZXRCYXRjaCA9IG5ld0JhdGNoID0+IGJhdGNoID0gbmV3QmF0Y2g7IC8vIFN1cHBseSBhIGdldHRlciBqdXN0IHRvIHNraXAgZGVhbGluZyB3aXRoIEVTTSBiaW5kaW5nc1xuXG5leHBvcnQgY29uc3QgZ2V0QmF0Y2ggPSAoKSA9PiBiYXRjaDsiXSwibmFtZXMiOlsiZGVmYXVsdE5vb3BCYXRjaCIsImNhbGxiYWNrIiwiYmF0Y2giLCJzZXRCYXRjaCIsIm5ld0JhdGNoIiwiZ2V0QmF0Y2giXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/utils/batch.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/utils/bindActionCreators.js":
/*!*****************************************************************!*\
!*** ./node_modules/react-redux/es/utils/bindActionCreators.js ***!
\*****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ bindActionCreators; }\n/* harmony export */ });\nfunction bindActionCreators(actionCreators, dispatch) {\n const boundActionCreators = {};\n for(const key in actionCreators){\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n return dispatch(actionCreator(...args));\n };\n }\n }\n return boundActionCreators;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy9iaW5kQWN0aW9uQ3JlYXRvcnMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFlLFNBQVNBLG1CQUFtQkMsY0FBYyxFQUFFQyxRQUFRO0lBQ2pFLE1BQU1DLHNCQUFzQixDQUFDO0lBRTdCLElBQUssTUFBTUMsT0FBT0gsZUFBZ0I7UUFDaEMsTUFBTUksZ0JBQWdCSixjQUFjLENBQUNHLElBQUk7UUFFekMsSUFBSSxPQUFPQyxrQkFBa0IsWUFBWTtZQUN2Q0YsbUJBQW1CLENBQUNDLElBQUksR0FBRztpREFBSUU7b0JBQUFBOzt1QkFBU0osU0FBU0csaUJBQWlCQzs7UUFDcEU7SUFDRjtJQUVBLE9BQU9IO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxzL2JpbmRBY3Rpb25DcmVhdG9ycy5qcz80ZWU1Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJpbmRBY3Rpb25DcmVhdG9ycyhhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpIHtcbiAgY29uc3QgYm91bmRBY3Rpb25DcmVhdG9ycyA9IHt9O1xuXG4gIGZvciAoY29uc3Qga2V5IGluIGFjdGlvbkNyZWF0b3JzKSB7XG4gICAgY29uc3QgYWN0aW9uQ3JlYXRvciA9IGFjdGlvbkNyZWF0b3JzW2tleV07XG5cbiAgICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGJvdW5kQWN0aW9uQ3JlYXRvcnNba2V5XSA9ICguLi5hcmdzKSA9PiBkaXNwYXRjaChhY3Rpb25DcmVhdG9yKC4uLmFyZ3MpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYm91bmRBY3Rpb25DcmVhdG9ycztcbn0iXSwibmFtZXMiOlsiYmluZEFjdGlvbkNyZWF0b3JzIiwiYWN0aW9uQ3JlYXRvcnMiLCJkaXNwYXRjaCIsImJvdW5kQWN0aW9uQ3JlYXRvcnMiLCJrZXkiLCJhY3Rpb25DcmVhdG9yIiwiYXJncyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/utils/bindActionCreators.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/utils/isPlainObject.js":
/*!************************************************************!*\
!*** ./node_modules/react-redux/es/utils/isPlainObject.js ***!
\************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ isPlainObject; }\n/* harmony export */ });\n/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */ function isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null) return false;\n let proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n let baseProto = proto;\n while(Object.getPrototypeOf(baseProto) !== null){\n baseProto = Object.getPrototypeOf(baseProto);\n }\n return proto === baseProto;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy9pc1BsYWluT2JqZWN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7O0NBR0MsR0FDYyxTQUFTQSxjQUFjQyxHQUFHO0lBQ3ZDLElBQUksT0FBT0EsUUFBUSxZQUFZQSxRQUFRLE1BQU0sT0FBTztJQUNwRCxJQUFJQyxRQUFRQyxPQUFPQyxjQUFjLENBQUNIO0lBQ2xDLElBQUlDLFVBQVUsTUFBTSxPQUFPO0lBQzNCLElBQUlHLFlBQVlIO0lBRWhCLE1BQU9DLE9BQU9DLGNBQWMsQ0FBQ0MsZUFBZSxLQUFNO1FBQ2hEQSxZQUFZRixPQUFPQyxjQUFjLENBQUNDO0lBQ3BDO0lBRUEsT0FBT0gsVUFBVUc7QUFDbkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxzL2lzUGxhaW5PYmplY3QuanM/NTRkMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQHBhcmFtIHthbnl9IG9iaiBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBhcmd1bWVudCBhcHBlYXJzIHRvIGJlIGEgcGxhaW4gb2JqZWN0LlxyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaik7XG4gIGlmIChwcm90byA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gIGxldCBiYXNlUHJvdG8gPSBwcm90bztcblxuICB3aGlsZSAoT2JqZWN0LmdldFByb3RvdHlwZU9mKGJhc2VQcm90bykgIT09IG51bGwpIHtcbiAgICBiYXNlUHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYmFzZVByb3RvKTtcbiAgfVxuXG4gIHJldHVybiBwcm90byA9PT0gYmFzZVByb3RvO1xufSJdLCJuYW1lcyI6WyJpc1BsYWluT2JqZWN0Iiwib2JqIiwicHJvdG8iLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsImJhc2VQcm90byJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/utils/isPlainObject.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/utils/reactBatchedUpdates.js":
/*!******************************************************************!*\
!*** ./node_modules/react-redux/es/utils/reactBatchedUpdates.js ***!
\******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ unstable_batchedUpdates: function() { return /* reexport safe */ react_dom__WEBPACK_IMPORTED_MODULE_0__.unstable_batchedUpdates; }\n/* harmony export */ });\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-dom */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react-dom/index.js\");\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy9yZWFjdEJhdGNoZWRVcGRhdGVzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQW9EIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy9yZWFjdEJhdGNoZWRVcGRhdGVzLmpzP2IzNDciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMgfSBmcm9tICdyZWFjdC1kb20nOyJdLCJuYW1lcyI6WyJ1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/utils/reactBatchedUpdates.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/utils/shallowEqual.js":
/*!***********************************************************!*\
!*** ./node_modules/react-redux/es/utils/shallowEqual.js ***!
\***********************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ shallowEqual; }\n/* harmony export */ });\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n for(let i = 0; i < keysA.length; i++){\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy9zaGFsbG93RXF1YWwuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLEdBQUdDLENBQUMsRUFBRUMsQ0FBQztJQUNkLElBQUlELE1BQU1DLEdBQUc7UUFDWCxPQUFPRCxNQUFNLEtBQUtDLE1BQU0sS0FBSyxJQUFJRCxNQUFNLElBQUlDO0lBQzdDLE9BQU87UUFDTCxPQUFPRCxNQUFNQSxLQUFLQyxNQUFNQTtJQUMxQjtBQUNGO0FBRWUsU0FBU0MsYUFBYUMsSUFBSSxFQUFFQyxJQUFJO0lBQzdDLElBQUlMLEdBQUdJLE1BQU1DLE9BQU8sT0FBTztJQUUzQixJQUFJLE9BQU9ELFNBQVMsWUFBWUEsU0FBUyxRQUFRLE9BQU9DLFNBQVMsWUFBWUEsU0FBUyxNQUFNO1FBQzFGLE9BQU87SUFDVDtJQUVBLE1BQU1DLFFBQVFDLE9BQU9DLElBQUksQ0FBQ0o7SUFDMUIsTUFBTUssUUFBUUYsT0FBT0MsSUFBSSxDQUFDSDtJQUMxQixJQUFJQyxNQUFNSSxNQUFNLEtBQUtELE1BQU1DLE1BQU0sRUFBRSxPQUFPO0lBRTFDLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJTCxNQUFNSSxNQUFNLEVBQUVDLElBQUs7UUFDckMsSUFBSSxDQUFDSixPQUFPSyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDVCxNQUFNQyxLQUFLLENBQUNLLEVBQUUsS0FBSyxDQUFDWCxHQUFHSSxJQUFJLENBQUNFLEtBQUssQ0FBQ0ssRUFBRSxDQUFDLEVBQUVOLElBQUksQ0FBQ0MsS0FBSyxDQUFDSyxFQUFFLENBQUMsR0FBRztZQUNoRyxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvc2hhbGxvd0VxdWFsLmpzPzc2NzYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gaXMoeCwgeSkge1xuICBpZiAoeCA9PT0geSkge1xuICAgIHJldHVybiB4ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2hhbGxvd0VxdWFsKG9iakEsIG9iakIpIHtcbiAgaWYgKGlzKG9iakEsIG9iakIpKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAodHlwZW9mIG9iakEgIT09ICdvYmplY3QnIHx8IG9iakEgPT09IG51bGwgfHwgdHlwZW9mIG9iakIgIT09ICdvYmplY3QnIHx8IG9iakIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXNBLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltrZXlzQVtpXV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59Il0sIm5hbWVzIjpbImlzIiwieCIsInkiLCJzaGFsbG93RXF1YWwiLCJvYmpBIiwib2JqQiIsImtleXNBIiwiT2JqZWN0Iiwia2V5cyIsImtleXNCIiwibGVuZ3RoIiwiaSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/utils/shallowEqual.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js":
/*!************************************************************************!*\
!*** ./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js ***!
\************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ canUseDOM: function() { return /* binding */ canUseDOM; },\n/* harmony export */ useIsomorphicLayoutEffect: function() { return /* binding */ useIsomorphicLayoutEffect; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\nconst canUseDOM = !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\nconst useIsomorphicLayoutEffect = canUseDOM ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0IsQ0FBQyw2RUFBNkU7QUFDN0csNkVBQTZFO0FBQzdFLDhFQUE4RTtBQUM5RSw4RUFBOEU7QUFDOUUsZ0ZBQWdGO0FBQ2hGLDZFQUE2RTtBQUM3RSwwRUFBMEU7QUFDMUUsb0VBQW9FO0FBQ3BFLDhEQUE4RDtBQUV2RCxNQUFNQyxZQUFZLENBQUMsQ0FBRSxRQUFPQyxXQUFXLGVBQWUsT0FBT0EsT0FBT0MsUUFBUSxLQUFLLGVBQWUsT0FBT0QsT0FBT0MsUUFBUSxDQUFDQyxhQUFhLEtBQUssV0FBVSxFQUFHO0FBQ3RKLE1BQU1DLDRCQUE0QkosWUFBWUQsa0RBQXFCLEdBQUdBLDRDQUFlLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlZHV4L2VzL3V0aWxzL3VzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QuanM/YjJkYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7IC8vIFJlYWN0IGN1cnJlbnRseSB0aHJvd3MgYSB3YXJuaW5nIHdoZW4gdXNpbmcgdXNlTGF5b3V0RWZmZWN0IG9uIHRoZSBzZXJ2ZXIuXG4vLyBUbyBnZXQgYXJvdW5kIGl0LCB3ZSBjYW4gY29uZGl0aW9uYWxseSB1c2VFZmZlY3Qgb24gdGhlIHNlcnZlciAobm8tb3ApIGFuZFxuLy8gdXNlTGF5b3V0RWZmZWN0IGluIHRoZSBicm93c2VyLiBXZSBuZWVkIHVzZUxheW91dEVmZmVjdCB0byBlbnN1cmUgdGhlIHN0b3JlXG4vLyBzdWJzY3JpcHRpb24gY2FsbGJhY2sgYWx3YXlzIGhhcyB0aGUgc2VsZWN0b3IgZnJvbSB0aGUgbGF0ZXN0IHJlbmRlciBjb21taXRcbi8vIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGEgc3RvcmUgdXBkYXRlIG1heSBoYXBwZW4gYmV0d2VlbiByZW5kZXIgYW5kIHRoZSBlZmZlY3QsXG4vLyB3aGljaCBtYXkgY2F1c2UgbWlzc2VkIHVwZGF0ZXM7IHdlIGFsc28gbXVzdCBlbnN1cmUgdGhlIHN0b3JlIHN1YnNjcmlwdGlvblxuLy8gaXMgY3JlYXRlZCBzeW5jaHJvbm91c2x5LCBvdGhlcndpc2UgYSBzdG9yZSB1cGRhdGUgbWF5IG9jY3VyIGJlZm9yZSB0aGVcbi8vIHN1YnNjcmlwdGlvbiBpcyBjcmVhdGVkIGFuZCBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgbWF5IGJlIG9ic2VydmVkXG4vLyBNYXRjaGVzIGxvZ2ljIGluIFJlYWN0J3MgYHNoYXJlZC9FeGVjdXRpb25FbnZpcm9ubWVudGAgZmlsZVxuXG5leHBvcnQgY29uc3QgY2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5kb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50ICE9PSAndW5kZWZpbmVkJyk7XG5leHBvcnQgY29uc3QgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCA9IGNhblVzZURPTSA/IFJlYWN0LnVzZUxheW91dEVmZmVjdCA6IFJlYWN0LnVzZUVmZmVjdDsiXSwibmFtZXMiOlsiUmVhY3QiLCJjYW5Vc2VET00iLCJ3aW5kb3ciLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0IiwidXNlTGF5b3V0RWZmZWN0IiwidXNlRWZmZWN0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/utils/useSyncExternalStore.js":
/*!*******************************************************************!*\
!*** ./node_modules/react-redux/es/utils/useSyncExternalStore.js ***!
\*******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ notInitialized: function() { return /* binding */ notInitialized; }\n/* harmony export */ });\nconst notInitialized = ()=>{\n throw new Error(\"uSES not initialized!\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy91c2VTeW5jRXh0ZXJuYWxTdG9yZS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sTUFBTUEsaUJBQWlCO0lBQzVCLE1BQU0sSUFBSUMsTUFBTTtBQUNsQixFQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy91c2VTeW5jRXh0ZXJuYWxTdG9yZS5qcz85NjQ4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBub3RJbml0aWFsaXplZCA9ICgpID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKCd1U0VTIG5vdCBpbml0aWFsaXplZCEnKTtcbn07Il0sIm5hbWVzIjpbIm5vdEluaXRpYWxpemVkIiwiRXJyb3IiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/utils/useSyncExternalStore.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/utils/verifyPlainObject.js":
/*!****************************************************************!*\
!*** ./node_modules/react-redux/es/utils/verifyPlainObject.js ***!
\****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ verifyPlainObject; }\n/* harmony export */ });\n/* harmony import */ var _isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isPlainObject */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/isPlainObject.js\");\n/* harmony import */ var _warning__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./warning */ \"(app-pages-browser)/./node_modules/react-redux/es/utils/warning.js\");\n\n\nfunction verifyPlainObject(value, displayName, methodName) {\n if (!(0,_isPlainObject__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(value)) {\n (0,_warning__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"\".concat(methodName, \"() in \").concat(displayName, \" must return a plain object. Instead received \").concat(value, \".\"));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy92ZXJpZnlQbGFpbk9iamVjdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBNEM7QUFDWjtBQUNqQixTQUFTRSxrQkFBa0JDLEtBQUssRUFBRUMsV0FBVyxFQUFFQyxVQUFVO0lBQ3RFLElBQUksQ0FBQ0wsMERBQWFBLENBQUNHLFFBQVE7UUFDekJGLG9EQUFPQSxDQUFDLEdBQXNCRyxPQUFuQkMsWUFBVyxVQUFvRUYsT0FBNURDLGFBQVksa0RBQXNELE9BQU5ELE9BQU07SUFDbEc7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QuanM/MGQyOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICcuL2lzUGxhaW5PYmplY3QnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnLi93YXJuaW5nJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVBsYWluT2JqZWN0KHZhbHVlLCBkaXNwbGF5TmFtZSwgbWV0aG9kTmFtZSkge1xuICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgd2FybmluZyhgJHttZXRob2ROYW1lfSgpIGluICR7ZGlzcGxheU5hbWV9IG11c3QgcmV0dXJuIGEgcGxhaW4gb2JqZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICR7dmFsdWV9LmApO1xuICB9XG59Il0sIm5hbWVzIjpbImlzUGxhaW5PYmplY3QiLCJ3YXJuaW5nIiwidmVyaWZ5UGxhaW5PYmplY3QiLCJ2YWx1ZSIsImRpc3BsYXlOYW1lIiwibWV0aG9kTmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/utils/verifyPlainObject.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/react-redux/es/utils/warning.js":
/*!******************************************************!*\
!*** ./node_modules/react-redux/es/utils/warning.js ***!
\******************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ warning; }\n/* harmony export */ });\n/**\r\n * Prints a warning in the console if it exists.\r\n *\r\n * @param {String} message The warning message.\r\n * @returns {void}\r\n */ function warning(message) {\n /* eslint-disable no-console */ if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n /* eslint-enable no-console */ try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */ } catch (e) {}\n/* eslint-enable no-empty */ }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWFjdC1yZWR1eC9lcy91dGlscy93YXJuaW5nLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUNjLFNBQVNBLFFBQVFDLE9BQU87SUFDckMsNkJBQTZCLEdBQzdCLElBQUksT0FBT0MsWUFBWSxlQUFlLE9BQU9BLFFBQVFDLEtBQUssS0FBSyxZQUFZO1FBQ3pFRCxRQUFRQyxLQUFLLENBQUNGO0lBQ2hCO0lBQ0EsNEJBQTRCLEdBRzVCLElBQUk7UUFDRiwrREFBK0Q7UUFDL0QsNkNBQTZDO1FBQzdDLDZDQUE2QztRQUM3QyxNQUFNLElBQUlHLE1BQU1IO0lBQ2hCLDJCQUEyQixHQUM3QixFQUFFLE9BQU9JLEdBQUcsQ0FBQztBQUNiLDBCQUEwQixHQUU1QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVkdXgvZXMvdXRpbHMvd2FybmluZy5qcz80NTk1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBQcmludHMgYSB3YXJuaW5nIGluIHRoZSBjb25zb2xlIGlmIGl0IGV4aXN0cy5cclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgVGhlIHdhcm5pbmcgbWVzc2FnZS5cclxuICogQHJldHVybnMge3ZvaWR9XHJcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gd2FybmluZyhtZXNzYWdlKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gIH1cbiAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG5cblxuICB0cnkge1xuICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgaWYgeW91IGVuYWJsZVxuICAgIC8vIFwiYnJlYWsgb24gYWxsIGV4Y2VwdGlvbnNcIiBpbiB5b3VyIGNvbnNvbGUsXG4gICAgLy8gaXQgd291bGQgcGF1c2UgdGhlIGV4ZWN1dGlvbiBhdCB0aGlzIGxpbmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5ICovXG4gIH0gY2F0Y2ggKGUpIHt9XG4gIC8qIGVzbGludC1lbmFibGUgbm8tZW1wdHkgKi9cblxufSJdLCJuYW1lcyI6WyJ3YXJuaW5nIiwibWVzc2FnZSIsImNvbnNvbGUiLCJlcnJvciIsIkVycm9yIiwiZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/react-redux/es/utils/warning.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/redux/es/redux.js":
/*!****************************************!*\
!*** ./node_modules/redux/es/redux.js ***!
\****************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ __DO_NOT_USE__ActionTypes: function() { return /* binding */ ActionTypes; },\n/* harmony export */ applyMiddleware: function() { return /* binding */ applyMiddleware; },\n/* harmony export */ bindActionCreators: function() { return /* binding */ bindActionCreators; },\n/* harmony export */ combineReducers: function() { return /* binding */ combineReducers; },\n/* harmony export */ compose: function() { return /* binding */ compose; },\n/* harmony export */ createStore: function() { return /* binding */ createStore; },\n/* harmony export */ legacy_createStore: function() { return /* binding */ legacy_createStore; }\n/* harmony export */ });\n/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ \"(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\");\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */ function formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + \"use the non-minified dev environment for full errors. \";\n}\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = function() {\n return typeof Symbol === \"function\" && Symbol.observable || \"@@observable\";\n}();\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */ var randomString = function randomString() {\n return Math.random().toString(36).substring(7).split(\"\").join(\".\");\n};\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */ function isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null) return false;\n var proto = obj;\n while(Object.getPrototypeOf(proto) !== null){\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n}\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return \"undefined\";\n if (val === null) return \"null\";\n var type = typeof val;\n switch(type){\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\":\n {\n return type;\n }\n }\n if (Array.isArray(val)) return \"array\";\n if (isDate(val)) return \"date\";\n if (isError(val)) return \"error\";\n var constructorName = ctorName(val);\n switch(constructorName){\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n } // other\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n if (true) {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */ function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error( false ? 0 : \"It looks like you are passing several store enhancers to \" + \"createStore(). This is not supported. Instead, compose them \" + \"together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error( false ? 0 : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n if (typeof reducer !== \"function\") {\n throw new Error( false ? 0 : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */ function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */ function getState() {\n if (isDispatching) {\n throw new Error( false ? 0 : \"You may not call store.getState() while the reducer is executing. \" + \"The reducer has already received the state as an argument. \" + \"Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */ function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error( false ? 0 : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n if (isDispatching) {\n throw new Error( false ? 0 : \"You may not call store.subscribe() while the reducer is executing. \" + \"If you would like to be notified after the store has been updated, subscribe from a \" + \"component and invoke store.getState() in the callback to access the latest state. \" + \"See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error( false ? 0 : \"You may not unsubscribe from a store listener while the reducer is executing. \" + \"See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */ function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error( false ? 0 : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n if (typeof action.type === \"undefined\") {\n throw new Error( false ? 0 : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (isDispatching) {\n throw new Error( false ? 0 : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally{\n isDispatching = false;\n }\n var listeners = currentListeners = nextListeners;\n for(var i = 0; i < listeners.length; i++){\n var listener = listeners[i];\n listener();\n }\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */ function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error( false ? 0 : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */ function observable() {\n var _ref;\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */ subscribe: function subscribe(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error( false ? 0 : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function() {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */ var legacy_createStore = createStore;\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */ function warning(message) {\n /* eslint-disable no-console */ if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n /* eslint-enable no-console */ try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n}\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n if (reducerKeys.length === 0) {\n return \"Store does not have a valid reducer. Make sure the argument passed \" + \"to combineReducers is an object whose values are reducers.\";\n }\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + ' has unexpected type of \"' + kindOf(inputState) + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n var unexpectedKeys = Object.keys(inputState).filter(function(key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function(key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? \"keys\" : \"key\") + \" \" + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function(key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n if (typeof initialState === \"undefined\") {\n throw new Error( false ? 0 : 'The slice reducer for key \"' + key + '\" returned undefined during initialization. ' + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === \"undefined\") {\n throw new Error( false ? 0 : 'The slice reducer for key \"' + key + '\" returned undefined when probed with a random type. ' + (\"Don't try to handle '\" + ActionTypes.INIT + '\\' or other actions in \"redux/*\" ') + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */ function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for(var i = 0; i < reducerKeys.length; i++){\n var key = reducerKeys[i];\n if (true) {\n if (typeof reducers[key] === \"undefined\") {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n if (typeof reducers[key] === \"function\") {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n var unexpectedKeyCache;\n if (true) {\n unexpectedKeyCache = {};\n }\n var shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (true) {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n var hasChanged = false;\n var nextState = {};\n for(var _i = 0; _i < finalReducerKeys.length; _i++){\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === \"undefined\") {\n var actionType = action && action.type;\n throw new Error( false ? 0 : \"When called with an action of type \" + (actionType ? '\"' + String(actionType) + '\"' : \"(unknown type)\") + ', the slice reducer for key \"' + _key + '\" returned undefined. ' + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\nfunction bindActionCreator(actionCreator, dispatch) {\n return function() {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */ function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error( false ? 0 : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n var boundActionCreators = {};\n for(var key in actionCreators){\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */ function compose() {\n for(var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++){\n funcs[_key] = arguments[_key];\n }\n if (funcs.length === 0) {\n return function(arg) {\n return arg;\n };\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce(function(a, b) {\n return function() {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */ function applyMiddleware() {\n for(var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++){\n middlewares[_key] = arguments[_key];\n }\n return function(createStore) {\n return function() {\n var store = createStore.apply(void 0, arguments);\n var _dispatch = function dispatch() {\n throw new Error( false ? 0 : \"Dispatching while constructing your middleware is not allowed. \" + \"Other middleware would not be applied to this dispatch.\");\n };\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function(middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9yZWR1eC9lcy9yZWR1eC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFxRTtBQUVyRTs7Ozs7O0NBTUMsR0FDRCxTQUFTQyx1QkFBdUJDLElBQUk7SUFDbEMsT0FBTywyQkFBMkJBLE9BQU8sOENBQThDQSxPQUFPLDhCQUE4QjtBQUM5SDtBQUVBLHNEQUFzRDtBQUN0RCxJQUFJQyxlQUFlO0lBQ2pCLE9BQU8sT0FBT0MsV0FBVyxjQUFjQSxPQUFPQyxVQUFVLElBQUk7QUFDOUQ7QUFFQTs7Ozs7Q0FLQyxHQUNELElBQUlDLGVBQWUsU0FBU0E7SUFDMUIsT0FBT0MsS0FBS0MsTUFBTSxHQUFHQyxRQUFRLENBQUMsSUFBSUMsU0FBUyxDQUFDLEdBQUdDLEtBQUssQ0FBQyxJQUFJQyxJQUFJLENBQUM7QUFDaEU7QUFFQSxJQUFJQyxjQUFjO0lBQ2hCQyxNQUFNLGlCQUFpQlI7SUFDdkJTLFNBQVMsb0JBQW9CVDtJQUM3QlUsc0JBQXNCLFNBQVNBO1FBQzdCLE9BQU8saUNBQWlDVjtJQUMxQztBQUNGO0FBRUE7OztDQUdDLEdBQ0QsU0FBU1csY0FBY0MsR0FBRztJQUN4QixJQUFJLE9BQU9BLFFBQVEsWUFBWUEsUUFBUSxNQUFNLE9BQU87SUFDcEQsSUFBSUMsUUFBUUQ7SUFFWixNQUFPRSxPQUFPQyxjQUFjLENBQUNGLFdBQVcsS0FBTTtRQUM1Q0EsUUFBUUMsT0FBT0MsY0FBYyxDQUFDRjtJQUNoQztJQUVBLE9BQU9DLE9BQU9DLGNBQWMsQ0FBQ0gsU0FBU0M7QUFDeEM7QUFFQSx3RkFBd0Y7QUFDeEYsU0FBU0csV0FBV0MsR0FBRztJQUNyQixJQUFJQSxRQUFRLEtBQUssR0FBRyxPQUFPO0lBQzNCLElBQUlBLFFBQVEsTUFBTSxPQUFPO0lBQ3pCLElBQUlDLE9BQU8sT0FBT0Q7SUFFbEIsT0FBUUM7UUFDTixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztZQUNI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LElBQUloQyxNQUFNUyxNQUFxQyxHQUFHNUMsQ0FBMEIsR0FBRyxvRUFBb0U7WUFDM0o7WUFFQSxJQUFJa0ksZ0JBQWdCO2dCQUNsQnhFLFVBQVVzRSxNQUFNdEUsUUFBUTtnQkFDeEJTLFVBQVUsU0FBU0E7b0JBQ2pCLE9BQU84RCxVQUFVZCxLQUFLLENBQUMsS0FBSyxHQUFHakU7Z0JBQ2pDO1lBQ0Y7WUFDQSxJQUFJaUYsUUFBUUosWUFBWUssR0FBRyxDQUFDLFNBQVVDLFVBQVU7Z0JBQzlDLE9BQU9BLFdBQVdIO1lBQ3BCO1lBQ0FELFlBQVlWLFFBQVFKLEtBQUssQ0FBQyxLQUFLLEdBQUdnQixPQUFPSCxNQUFNN0QsUUFBUTtZQUN2RCxPQUFPcEUsb0ZBQWFBLENBQUNBLG9GQUFhQSxDQUFDLENBQUMsR0FBR2lJLFFBQVEsQ0FBQyxHQUFHO2dCQUNqRDdELFVBQVU4RDtZQUNaO1FBQ0Y7SUFDRjtBQUNGO0FBRW9KIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9yZWR1eC9lcy9yZWR1eC5qcz9lYmYyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDInO1xuXG4vKipcbiAqIEFkYXB0ZWQgZnJvbSBSZWFjdDogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2Jsb2IvbWFzdGVyL3BhY2thZ2VzL3NoYXJlZC9mb3JtYXRQcm9kRXJyb3JNZXNzYWdlLmpzXG4gKlxuICogRG8gbm90IHJlcXVpcmUgdGhpcyBtb2R1bGUgZGlyZWN0bHkhIFVzZSBub3JtYWwgdGhyb3cgZXJyb3IgY2FsbHMuIFRoZXNlIG1lc3NhZ2VzIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBlcnJvciBjb2Rlc1xuICogZHVyaW5nIGJ1aWxkLlxuICogQHBhcmFtIHtudW1iZXJ9IGNvZGVcbiAqL1xuZnVuY3Rpb24gZm9ybWF0UHJvZEVycm9yTWVzc2FnZShjb2RlKSB7XG4gIHJldHVybiBcIk1pbmlmaWVkIFJlZHV4IGVycm9yICNcIiArIGNvZGUgKyBcIjsgdmlzaXQgaHR0cHM6Ly9yZWR1eC5qcy5vcmcvRXJyb3JzP2NvZGU9XCIgKyBjb2RlICsgXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgXCIgKyAndXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycy4gJztcbn1cblxuLy8gSW5saW5lZCB2ZXJzaW9uIG9mIHRoZSBgc3ltYm9sLW9ic2VydmFibGVgIHBvbHlmaWxsXG52YXIgJCRvYnNlcnZhYmxlID0gKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLm9ic2VydmFibGUgfHwgJ0BAb2JzZXJ2YWJsZSc7XG59KSgpO1xuXG4vKipcbiAqIFRoZXNlIGFyZSBwcml2YXRlIGFjdGlvbiB0eXBlcyByZXNlcnZlZCBieSBSZWR1eC5cbiAqIEZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB5b3UgbXVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUuXG4gKiBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyB1bmRlZmluZWQsIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAqIERvIG5vdCByZWZlcmVuY2UgdGhlc2UgYWN0aW9uIHR5cGVzIGRpcmVjdGx5IGluIHlvdXIgY29kZS5cbiAqL1xudmFyIHJhbmRvbVN0cmluZyA9IGZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KS5zcGxpdCgnJykuam9pbignLicpO1xufTtcblxudmFyIEFjdGlvblR5cGVzID0ge1xuICBJTklUOiBcIkBAcmVkdXgvSU5JVFwiICsgcmFuZG9tU3RyaW5nKCksXG4gIFJFUExBQ0U6IFwiQEByZWR1eC9SRVBMQUNFXCIgKyByYW5kb21TdHJpbmcoKSxcbiAgUFJPQkVfVU5LTk9XTl9BQ1RJT046IGZ1bmN0aW9uIFBST0JFX1VOS05PV05fQUNUSU9OKCkge1xuICAgIHJldHVybiBcIkBAcmVkdXgvUFJPQkVfVU5LTk9XTl9BQ1RJT05cIiArIHJhbmRvbVN0cmluZygpO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7YW55fSBvYmogVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGFyZ3VtZW50IGFwcGVhcnMgdG8gYmUgYSBwbGFpbiBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgdmFyIHByb3RvID0gb2JqO1xuXG4gIHdoaWxlIChPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pICE9PSBudWxsKSB7XG4gICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmopID09PSBwcm90bztcbn1cblxuLy8gSW5saW5lZCAvIHNob3J0ZW5lZCB2ZXJzaW9uIG9mIGBraW5kT2ZgIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQva2luZC1vZlxuZnVuY3Rpb24gbWluaUtpbmRPZih2YWwpIHtcbiAgaWYgKHZhbCA9PT0gdm9pZCAwKSByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gIGlmICh2YWwgPT09IG51bGwpIHJldHVybiAnbnVsbCc7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbDtcblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdib29sZWFuJzpcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgIGNhc2UgJ251bWJlcic6XG4gICAgY2FzZSAnc3ltYm9sJzpcbiAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICB7XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAgICAgfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkgcmV0dXJuICdhcnJheSc7XG4gIGlmIChpc0RhdGUodmFsKSkgcmV0dXJuICdkYXRlJztcbiAgaWYgKGlzRXJyb3IodmFsKSkgcmV0dXJuICdlcnJvcic7XG4gIHZhciBjb25zdHJ1Y3Rvck5hbWUgPSBjdG9yTmFtZSh2YWwpO1xuXG4gIHN3aXRjaCAoY29uc3RydWN0b3JOYW1lKSB7XG4gICAgY2FzZSAnU3ltYm9sJzpcbiAgICBjYXNlICdQcm9taXNlJzpcbiAgICBjYXNlICdXZWFrTWFwJzpcbiAgICBjYXNlICdXZWFrU2V0JzpcbiAgICBjYXNlICdNYXAnOlxuICAgIGNhc2UgJ1NldCc6XG4gICAgICByZXR1cm4gY29uc3RydWN0b3JOYW1lO1xuICB9IC8vIG90aGVyXG5cblxuICByZXR1cm4gdHlwZS5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMvZywgJycpO1xufVxuXG5mdW5jdGlvbiBjdG9yTmFtZSh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwuY29uc3RydWN0b3IgPT09ICdmdW5jdGlvbicgPyB2YWwuY29uc3RydWN0b3IubmFtZSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzRXJyb3IodmFsKSB7XG4gIHJldHVybiB2YWwgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgdmFsLm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmIHZhbC5jb25zdHJ1Y3RvciAmJiB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yLnN0YWNrVHJhY2VMaW1pdCA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcbiAgaWYgKHZhbCBpbnN0YW5jZW9mIERhdGUpIHJldHVybiB0cnVlO1xuICByZXR1cm4gdHlwZW9mIHZhbC50b0RhdGVTdHJpbmcgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbC5nZXREYXRlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB2YWwuc2V0RGF0ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24ga2luZE9mKHZhbCkge1xuICB2YXIgdHlwZU9mVmFsID0gdHlwZW9mIHZhbDtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHR5cGVPZlZhbCA9IG1pbmlLaW5kT2YodmFsKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlT2ZWYWw7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqXG4gKiAqKldlIHJlY29tbWVuZCB1c2luZyB0aGUgYGNvbmZpZ3VyZVN0b3JlYCBtZXRob2RcbiAqIG9mIHRoZSBgQHJlZHV4anMvdG9vbGtpdGAgcGFja2FnZSoqLCB3aGljaCByZXBsYWNlcyBgY3JlYXRlU3RvcmVgLlxuICpcbiAqIFJlZHV4IFRvb2xraXQgaXMgb3VyIHJlY29tbWVuZGVkIGFwcHJvYWNoIGZvciB3cml0aW5nIFJlZHV4IGxvZ2ljIHRvZGF5LFxuICogaW5jbHVkaW5nIHN0b3JlIHNldHVwLCByZWR1Y2VycywgZGF0YSBmZXRjaGluZywgYW5kIG1vcmUuXG4gKlxuICogKipGb3IgbW9yZSBkZXRhaWxzLCBwbGVhc2UgcmVhZCB0aGlzIFJlZHV4IGRvY3MgcGFnZToqKlxuICogKipodHRwczovL3JlZHV4LmpzLm9yZy9pbnRyb2R1Y3Rpb24vd2h5LXJ0ay1pcy1yZWR1eC10b2RheSoqXG4gKlxuICogYGNvbmZpZ3VyZVN0b3JlYCBmcm9tIFJlZHV4IFRvb2xraXQgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBgY3JlYXRlU3RvcmVgIHRoYXRcbiAqIHNpbXBsaWZpZXMgc2V0dXAgYW5kIGhlbHBzIGF2b2lkIGNvbW1vbiBidWdzLlxuICpcbiAqIFlvdSBzaG91bGQgbm90IGJlIHVzaW5nIHRoZSBgcmVkdXhgIGNvcmUgcGFja2FnZSBieSBpdHNlbGYgdG9kYXksIGV4Y2VwdCBmb3IgbGVhcm5pbmcgcHVycG9zZXMuXG4gKiBUaGUgYGNyZWF0ZVN0b3JlYCBtZXRob2QgZnJvbSB0aGUgY29yZSBgcmVkdXhgIHBhY2thZ2Ugd2lsbCBub3QgYmUgcmVtb3ZlZCwgYnV0IHdlIGVuY291cmFnZVxuICogYWxsIHVzZXJzIHRvIG1pZ3JhdGUgdG8gdXNpbmcgUmVkdXggVG9vbGtpdCBmb3IgYWxsIFJlZHV4IGNvZGUuXG4gKlxuICogSWYgeW91IHdhbnQgdG8gdXNlIGBjcmVhdGVTdG9yZWAgd2l0aG91dCB0aGlzIHZpc3VhbCBkZXByZWNhdGlvbiB3YXJuaW5nLCB1c2VcbiAqIHRoZSBgbGVnYWN5X2NyZWF0ZVN0b3JlYCBpbXBvcnQgaW5zdGVhZDpcbiAqXG4gKiBgaW1wb3J0IHsgbGVnYWN5X2NyZWF0ZVN0b3JlIGFzIGNyZWF0ZVN0b3JlfSBmcm9tICdyZWR1eCdgXG4gKlxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZVN0b3JlKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikge1xuICB2YXIgX3JlZjI7XG5cbiAgaWYgKHR5cGVvZiBwcmVsb2FkZWRTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZW5oYW5jZXIgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGVuaGFuY2VyID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBhcmd1bWVudHNbM10gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgwKSA6ICdJdCBsb29rcyBsaWtlIHlvdSBhcmUgcGFzc2luZyBzZXZlcmFsIHN0b3JlIGVuaGFuY2VycyB0byAnICsgJ2NyZWF0ZVN0b3JlKCkuIFRoaXMgaXMgbm90IHN1cHBvcnRlZC4gSW5zdGVhZCwgY29tcG9zZSB0aGVtICcgKyAndG9nZXRoZXIgdG8gYSBzaW5nbGUgZnVuY3Rpb24uIFNlZSBodHRwczovL3JlZHV4LmpzLm9yZy90dXRvcmlhbHMvZnVuZGFtZW50YWxzL3BhcnQtNC1zdG9yZSNjcmVhdGluZy1hLXN0b3JlLXdpdGgtZW5oYW5jZXJzIGZvciBhbiBleGFtcGxlLicpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBwcmVsb2FkZWRTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZW5oYW5jZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgZW5oYW5jZXIgPSBwcmVsb2FkZWRTdGF0ZTtcbiAgICBwcmVsb2FkZWRTdGF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZW5oYW5jZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMSkgOiBcIkV4cGVjdGVkIHRoZSBlbmhhbmNlciB0byBiZSBhIGZ1bmN0aW9uLiBJbnN0ZWFkLCByZWNlaXZlZDogJ1wiICsga2luZE9mKGVuaGFuY2VyKSArIFwiJ1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW5oYW5jZXIoY3JlYXRlU3RvcmUpKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVkdWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDIpIDogXCJFeHBlY3RlZCB0aGUgcm9vdCByZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uIEluc3RlYWQsIHJlY2VpdmVkOiAnXCIgKyBraW5kT2YocmVkdWNlcikgKyBcIidcIik7XG4gIH1cblxuICB2YXIgY3VycmVudFJlZHVjZXIgPSByZWR1Y2VyO1xuICB2YXIgY3VycmVudFN0YXRlID0gcHJlbG9hZGVkU3RhdGU7XG4gIHZhciBjdXJyZW50TGlzdGVuZXJzID0gW107XG4gIHZhciBuZXh0TGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVycztcbiAgdmFyIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFRoaXMgbWFrZXMgYSBzaGFsbG93IGNvcHkgb2YgY3VycmVudExpc3RlbmVycyBzbyB3ZSBjYW4gdXNlXG4gICAqIG5leHRMaXN0ZW5lcnMgYXMgYSB0ZW1wb3JhcnkgbGlzdCB3aGlsZSBkaXNwYXRjaGluZy5cbiAgICpcbiAgICogVGhpcyBwcmV2ZW50cyBhbnkgYnVncyBhcm91bmQgY29uc3VtZXJzIGNhbGxpbmdcbiAgICogc3Vic2NyaWJlL3Vuc3Vic2NyaWJlIGluIHRoZSBtaWRkbGUgb2YgYSBkaXNwYXRjaC5cbiAgICovXG5cbiAgZnVuY3Rpb24gZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpIHtcbiAgICBpZiAobmV4dExpc3RlbmVycyA9PT0gY3VycmVudExpc3RlbmVycykge1xuICAgICAgbmV4dExpc3RlbmVycyA9IGN1cnJlbnRMaXN0ZW5lcnMuc2xpY2UoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBzdGF0ZSB0cmVlIG1hbmFnZWQgYnkgdGhlIHN0b3JlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7YW55fSBUaGUgY3VycmVudCBzdGF0ZSB0cmVlIG9mIHlvdXIgYXBwbGljYXRpb24uXG4gICAqL1xuXG5cbiAgZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG4gICAgaWYgKGlzRGlzcGF0Y2hpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDMpIDogJ1lvdSBtYXkgbm90IGNhbGwgc3RvcmUuZ2V0U3RhdGUoKSB3aGlsZSB0aGUgcmVkdWNlciBpcyBleGVjdXRpbmcuICcgKyAnVGhlIHJlZHVjZXIgaGFzIGFscmVhZHkgcmVjZWl2ZWQgdGhlIHN0YXRlIGFzIGFuIGFyZ3VtZW50LiAnICsgJ1Bhc3MgaXQgZG93biBmcm9tIHRoZSB0b3AgcmVkdWNlciBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgZnJvbSB0aGUgc3RvcmUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbiAgfVxuICAvKipcbiAgICogQWRkcyBhIGNoYW5nZSBsaXN0ZW5lci4gSXQgd2lsbCBiZSBjYWxsZWQgYW55IHRpbWUgYW4gYWN0aW9uIGlzIGRpc3BhdGNoZWQsXG4gICAqIGFuZCBzb21lIHBhcnQgb2YgdGhlIHN0YXRlIHRyZWUgbWF5IHBvdGVudGlhbGx5IGhhdmUgY2hhbmdlZC4gWW91IG1heSB0aGVuXG4gICAqIGNhbGwgYGdldFN0YXRlKClgIHRvIHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBpbnNpZGUgdGhlIGNhbGxiYWNrLlxuICAgKlxuICAgKiBZb3UgbWF5IGNhbGwgYGRpc3BhdGNoKClgIGZyb20gYSBjaGFuZ2UgbGlzdGVuZXIsIHdpdGggdGhlIGZvbGxvd2luZ1xuICAgKiBjYXZlYXRzOlxuICAgKlxuICAgKiAxLiBUaGUgc3Vic2NyaXB0aW9ucyBhcmUgc25hcHNob3R0ZWQganVzdCBiZWZvcmUgZXZlcnkgYGRpc3BhdGNoKClgIGNhbGwuXG4gICAqIElmIHlvdSBzdWJzY3JpYmUgb3IgdW5zdWJzY3JpYmUgd2hpbGUgdGhlIGxpc3RlbmVycyBhcmUgYmVpbmcgaW52b2tlZCwgdGhpc1xuICAgKiB3aWxsIG5vdCBoYXZlIGFueSBlZmZlY3Qgb24gdGhlIGBkaXNwYXRjaCgpYCB0aGF0IGlzIGN1cnJlbnRseSBpbiBwcm9ncmVzcy5cbiAgICogSG93ZXZlciwgdGhlIG5leHQgYGRpc3BhdGNoKClgIGNhbGwsIHdoZXRoZXIgbmVzdGVkIG9yIG5vdCwgd2lsbCB1c2UgYSBtb3JlXG4gICAqIHJlY2VudCBzbmFwc2hvdCBvZiB0aGUgc3Vic2NyaXB0aW9uIGxpc3QuXG4gICAqXG4gICAqIDIuIFRoZSBsaXN0ZW5lciBzaG91bGQgbm90IGV4cGVjdCB0byBzZWUgYWxsIHN0YXRlIGNoYW5nZXMsIGFzIHRoZSBzdGF0ZVxuICAgKiBtaWdodCBoYXZlIGJlZW4gdXBkYXRlZCBtdWx0aXBsZSB0aW1lcyBkdXJpbmcgYSBuZXN0ZWQgYGRpc3BhdGNoKClgIGJlZm9yZVxuICAgKiB0aGUgbGlzdGVuZXIgaXMgY2FsbGVkLiBJdCBpcywgaG93ZXZlciwgZ3VhcmFudGVlZCB0aGF0IGFsbCBzdWJzY3JpYmVyc1xuICAgKiByZWdpc3RlcmVkIGJlZm9yZSB0aGUgYGRpc3BhdGNoKClgIHN0YXJ0ZWQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbGF0ZXN0XG4gICAqIHN0YXRlIGJ5IHRoZSB0aW1lIGl0IGV4aXRzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciBBIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gZXZlcnkgZGlzcGF0Y2guXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiB0byByZW1vdmUgdGhpcyBjaGFuZ2UgbGlzdGVuZXIuXG4gICAqL1xuXG5cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XG4gICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNCkgOiBcIkV4cGVjdGVkIHRoZSBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLiBJbnN0ZWFkLCByZWNlaXZlZDogJ1wiICsga2luZE9mKGxpc3RlbmVyKSArIFwiJ1wiKTtcbiAgICB9XG5cbiAgICBpZiAoaXNEaXNwYXRjaGluZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNSkgOiAnWW91IG1heSBub3QgY2FsbCBzdG9yZS5zdWJzY3JpYmUoKSB3aGlsZSB0aGUgcmVkdWNlciBpcyBleGVjdXRpbmcuICcgKyAnSWYgeW91IHdvdWxkIGxpa2UgdG8gYmUgbm90aWZpZWQgYWZ0ZXIgdGhlIHN0b3JlIGhhcyBiZWVuIHVwZGF0ZWQsIHN1YnNjcmliZSBmcm9tIGEgJyArICdjb21wb25lbnQgYW5kIGludm9rZSBzdG9yZS5nZXRTdGF0ZSgpIGluIHRoZSBjYWxsYmFjayB0byBhY2Nlc3MgdGhlIGxhdGVzdCBzdGF0ZS4gJyArICdTZWUgaHR0cHM6Ly9yZWR1eC5qcy5vcmcvYXBpL3N0b3JlI3N1YnNjcmliZWxpc3RlbmVyIGZvciBtb3JlIGRldGFpbHMuJyk7XG4gICAgfVxuXG4gICAgdmFyIGlzU3Vic2NyaWJlZCA9IHRydWU7XG4gICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycygpO1xuICAgIG5leHRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgaWYgKCFpc1N1YnNjcmliZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNEaXNwYXRjaGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg2KSA6ICdZb3UgbWF5IG5vdCB1bnN1YnNjcmliZSBmcm9tIGEgc3RvcmUgbGlzdGVuZXIgd2hpbGUgdGhlIHJlZHVjZXIgaXMgZXhlY3V0aW5nLiAnICsgJ1NlZSBodHRwczovL3JlZHV4LmpzLm9yZy9hcGkvc3RvcmUjc3Vic2NyaWJlbGlzdGVuZXIgZm9yIG1vcmUgZGV0YWlscy4nKTtcbiAgICAgIH1cblxuICAgICAgaXNTdWJzY3JpYmVkID0gZmFsc2U7XG4gICAgICBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzKCk7XG4gICAgICB2YXIgaW5kZXggPSBuZXh0TGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICAgICAgbmV4dExpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgY3VycmVudExpc3RlbmVycyA9IG51bGw7XG4gICAgfTtcbiAgfVxuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbiBhY3Rpb24uIEl0IGlzIHRoZSBvbmx5IHdheSB0byB0cmlnZ2VyIGEgc3RhdGUgY2hhbmdlLlxuICAgKlxuICAgKiBUaGUgYHJlZHVjZXJgIGZ1bmN0aW9uLCB1c2VkIHRvIGNyZWF0ZSB0aGUgc3RvcmUsIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlXG4gICAqIGN1cnJlbnQgc3RhdGUgdHJlZSBhbmQgdGhlIGdpdmVuIGBhY3Rpb25gLiBJdHMgcmV0dXJuIHZhbHVlIHdpbGxcbiAgICogYmUgY29uc2lkZXJlZCB0aGUgKipuZXh0Kiogc3RhdGUgb2YgdGhlIHRyZWUsIGFuZCB0aGUgY2hhbmdlIGxpc3RlbmVyc1xuICAgKiB3aWxsIGJlIG5vdGlmaWVkLlxuICAgKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIHBsYWluIG9iamVjdCBhY3Rpb25zLiBJZiB5b3Ugd2FudCB0b1xuICAgKiBkaXNwYXRjaCBhIFByb21pc2UsIGFuIE9ic2VydmFibGUsIGEgdGh1bmssIG9yIHNvbWV0aGluZyBlbHNlLCB5b3UgbmVlZCB0b1xuICAgKiB3cmFwIHlvdXIgc3RvcmUgY3JlYXRpbmcgZnVuY3Rpb24gaW50byB0aGUgY29ycmVzcG9uZGluZyBtaWRkbGV3YXJlLiBGb3JcbiAgICogZXhhbXBsZSwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYHJlZHV4LXRodW5rYCBwYWNrYWdlLiBFdmVuIHRoZVxuICAgKiBtaWRkbGV3YXJlIHdpbGwgZXZlbnR1YWxseSBkaXNwYXRjaCBwbGFpbiBvYmplY3QgYWN0aW9ucyB1c2luZyB0aGlzIG1ldGhvZC5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbiBBIHBsYWluIG9iamVjdCByZXByZXNlbnRpbmcg4oCcd2hhdCBjaGFuZ2Vk4oCdLiBJdCBpc1xuICAgKiBhIGdvb2QgaWRlYSB0byBrZWVwIGFjdGlvbnMgc2VyaWFsaXphYmxlIHNvIHlvdSBjYW4gcmVjb3JkIGFuZCByZXBsYXkgdXNlclxuICAgKiBzZXNzaW9ucywgb3IgdXNlIHRoZSB0aW1lIHRyYXZlbGxpbmcgYHJlZHV4LWRldnRvb2xzYC4gQW4gYWN0aW9uIG11c3QgaGF2ZVxuICAgKiBhIGB0eXBlYCBwcm9wZXJ0eSB3aGljaCBtYXkgbm90IGJlIGB1bmRlZmluZWRgLiBJdCBpcyBhIGdvb2QgaWRlYSB0byB1c2VcbiAgICogc3RyaW5nIGNvbnN0YW50cyBmb3IgYWN0aW9uIHR5cGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBGb3IgY29udmVuaWVuY2UsIHRoZSBzYW1lIGFjdGlvbiBvYmplY3QgeW91IGRpc3BhdGNoZWQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCwgaWYgeW91IHVzZSBhIGN1c3RvbSBtaWRkbGV3YXJlLCBpdCBtYXkgd3JhcCBgZGlzcGF0Y2goKWAgdG9cbiAgICogcmV0dXJuIHNvbWV0aGluZyBlbHNlIChmb3IgZXhhbXBsZSwgYSBQcm9taXNlIHlvdSBjYW4gYXdhaXQpLlxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIGRpc3BhdGNoKGFjdGlvbikge1xuICAgIGlmICghaXNQbGFpbk9iamVjdChhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg3KSA6IFwiQWN0aW9ucyBtdXN0IGJlIHBsYWluIG9iamVjdHMuIEluc3RlYWQsIHRoZSBhY3R1YWwgdHlwZSB3YXM6ICdcIiArIGtpbmRPZihhY3Rpb24pICsgXCInLiBZb3UgbWF5IG5lZWQgdG8gYWRkIG1pZGRsZXdhcmUgdG8geW91ciBzdG9yZSBzZXR1cCB0byBoYW5kbGUgZGlzcGF0Y2hpbmcgb3RoZXIgdmFsdWVzLCBzdWNoIGFzICdyZWR1eC10aHVuaycgdG8gaGFuZGxlIGRpc3BhdGNoaW5nIGZ1bmN0aW9ucy4gU2VlIGh0dHBzOi8vcmVkdXguanMub3JnL3R1dG9yaWFscy9mdW5kYW1lbnRhbHMvcGFydC00LXN0b3JlI21pZGRsZXdhcmUgYW5kIGh0dHBzOi8vcmVkdXguanMub3JnL3R1dG9yaWFscy9mdW5kYW1lbnRhbHMvcGFydC02LWFzeW5jLWxvZ2ljI3VzaW5nLXRoZS1yZWR1eC10aHVuay1taWRkbGV3YXJlIGZvciBleGFtcGxlcy5cIik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhY3Rpb24udHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDgpIDogJ0FjdGlvbnMgbWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCBcInR5cGVcIiBwcm9wZXJ0eS4gWW91IG1heSBoYXZlIG1pc3NwZWxsZWQgYW4gYWN0aW9uIHR5cGUgc3RyaW5nIGNvbnN0YW50LicpO1xuICAgIH1cblxuICAgIGlmIChpc0Rpc3BhdGNoaW5nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg5KSA6ICdSZWR1Y2VycyBtYXkgbm90IGRpc3BhdGNoIGFjdGlvbnMuJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlzRGlzcGF0Y2hpbmcgPSB0cnVlO1xuICAgICAgY3VycmVudFN0YXRlID0gY3VycmVudFJlZHVjZXIoY3VycmVudFN0YXRlLCBhY3Rpb24pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpc0Rpc3BhdGNoaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IGN1cnJlbnRMaXN0ZW5lcnMgPSBuZXh0TGlzdGVuZXJzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBsaXN0ZW5lciA9IGxpc3RlbmVyc1tpXTtcbiAgICAgIGxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGlvbjtcbiAgfVxuICAvKipcbiAgICogUmVwbGFjZXMgdGhlIHJlZHVjZXIgY3VycmVudGx5IHVzZWQgYnkgdGhlIHN0b3JlIHRvIGNhbGN1bGF0ZSB0aGUgc3RhdGUuXG4gICAqXG4gICAqIFlvdSBtaWdodCBuZWVkIHRoaXMgaWYgeW91ciBhcHAgaW1wbGVtZW50cyBjb2RlIHNwbGl0dGluZyBhbmQgeW91IHdhbnQgdG9cbiAgICogbG9hZCBzb21lIG9mIHRoZSByZWR1Y2VycyBkeW5hbWljYWxseS4gWW91IG1pZ2h0IGFsc28gbmVlZCB0aGlzIGlmIHlvdVxuICAgKiBpbXBsZW1lbnQgYSBob3QgcmVsb2FkaW5nIG1lY2hhbmlzbSBmb3IgUmVkdXguXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG5leHRSZWR1Y2VyIFRoZSByZWR1Y2VyIGZvciB0aGUgc3RvcmUgdG8gdXNlIGluc3RlYWQuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIHJlcGxhY2VSZWR1Y2VyKG5leHRSZWR1Y2VyKSB7XG4gICAgaWYgKHR5cGVvZiBuZXh0UmVkdWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTApIDogXCJFeHBlY3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4gSW5zdGVhZCwgcmVjZWl2ZWQ6ICdcIiArIGtpbmRPZihuZXh0UmVkdWNlcikpO1xuICAgIH1cblxuICAgIGN1cnJlbnRSZWR1Y2VyID0gbmV4dFJlZHVjZXI7IC8vIFRoaXMgYWN0aW9uIGhhcyBhIHNpbWlsaWFyIGVmZmVjdCB0byBBY3Rpb25UeXBlcy5JTklULlxuICAgIC8vIEFueSByZWR1Y2VycyB0aGF0IGV4aXN0ZWQgaW4gYm90aCB0aGUgbmV3IGFuZCBvbGQgcm9vdFJlZHVjZXJcbiAgICAvLyB3aWxsIHJlY2VpdmUgdGhlIHByZXZpb3VzIHN0YXRlLiBUaGlzIGVmZmVjdGl2ZWx5IHBvcHVsYXRlc1xuICAgIC8vIHRoZSBuZXcgc3RhdGUgdHJlZSB3aXRoIGFueSByZWxldmFudCBkYXRhIGZyb20gdGhlIG9sZCBvbmUuXG5cbiAgICBkaXNwYXRjaCh7XG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5SRVBMQUNFXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIEludGVyb3BlcmFiaWxpdHkgcG9pbnQgZm9yIG9ic2VydmFibGUvcmVhY3RpdmUgbGlicmFyaWVzLlxuICAgKiBAcmV0dXJucyB7b2JzZXJ2YWJsZX0gQSBtaW5pbWFsIG9ic2VydmFibGUgb2Ygc3RhdGUgY2hhbmdlcy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgb2JzZXJ2YWJsZSBwcm9wb3NhbDpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtb2JzZXJ2YWJsZVxuICAgKi9cblxuXG4gIGZ1bmN0aW9uIG9ic2VydmFibGUoKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICB2YXIgb3V0ZXJTdWJzY3JpYmUgPSBzdWJzY3JpYmU7XG4gICAgcmV0dXJuIF9yZWYgPSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBtaW5pbWFsIG9ic2VydmFibGUgc3Vic2NyaXB0aW9uIG1ldGhvZC5cbiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciBBbnkgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgYXMgYW4gb2JzZXJ2ZXIuXG4gICAgICAgKiBUaGUgb2JzZXJ2ZXIgb2JqZWN0IHNob3VsZCBoYXZlIGEgYG5leHRgIG1ldGhvZC5cbiAgICAgICAqIEByZXR1cm5zIHtzdWJzY3JpcHRpb259IEFuIG9iamVjdCB3aXRoIGFuIGB1bnN1YnNjcmliZWAgbWV0aG9kIHRoYXQgY2FuXG4gICAgICAgKiBiZSB1c2VkIHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIGZyb20gdGhlIHN0b3JlLCBhbmQgcHJldmVudCBmdXJ0aGVyXG4gICAgICAgKiBlbWlzc2lvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgb2JzZXJ2YWJsZS5cbiAgICAgICAqL1xuICAgICAgc3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvYnNlcnZlciAhPT0gJ29iamVjdCcgfHwgb2JzZXJ2ZXIgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxMSkgOiBcIkV4cGVjdGVkIHRoZSBvYnNlcnZlciB0byBiZSBhbiBvYmplY3QuIEluc3RlYWQsIHJlY2VpdmVkOiAnXCIgKyBraW5kT2Yob2JzZXJ2ZXIpICsgXCInXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb2JzZXJ2ZVN0YXRlKCkge1xuICAgICAgICAgIGlmIChvYnNlcnZlci5uZXh0KSB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KGdldFN0YXRlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9ic2VydmVTdGF0ZSgpO1xuICAgICAgICB2YXIgdW5zdWJzY3JpYmUgPSBvdXRlclN1YnNjcmliZShvYnNlcnZlU3RhdGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHVuc3Vic2NyaWJlOiB1bnN1YnNjcmliZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0sIF9yZWZbJCRvYnNlcnZhYmxlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIF9yZWY7XG4gIH0gLy8gV2hlbiBhIHN0b3JlIGlzIGNyZWF0ZWQsIGFuIFwiSU5JVFwiIGFjdGlvbiBpcyBkaXNwYXRjaGVkIHNvIHRoYXQgZXZlcnlcbiAgLy8gcmVkdWNlciByZXR1cm5zIHRoZWlyIGluaXRpYWwgc3RhdGUuIFRoaXMgZWZmZWN0aXZlbHkgcG9wdWxhdGVzXG4gIC8vIHRoZSBpbml0aWFsIHN0YXRlIHRyZWUuXG5cblxuICBkaXNwYXRjaCh7XG4gICAgdHlwZTogQWN0aW9uVHlwZXMuSU5JVFxuICB9KTtcbiAgcmV0dXJuIF9yZWYyID0ge1xuICAgIGRpc3BhdGNoOiBkaXNwYXRjaCxcbiAgICBzdWJzY3JpYmU6IHN1YnNjcmliZSxcbiAgICBnZXRTdGF0ZTogZ2V0U3RhdGUsXG4gICAgcmVwbGFjZVJlZHVjZXI6IHJlcGxhY2VSZWR1Y2VyXG4gIH0sIF9yZWYyWyQkb2JzZXJ2YWJsZV0gPSBvYnNlcnZhYmxlLCBfcmVmMjtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIFJlZHV4IHN0b3JlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIHRyZWUuXG4gKlxuICogKipXZSByZWNvbW1lbmQgdXNpbmcgYGNvbmZpZ3VyZVN0b3JlYCBmcm9tIHRoZVxuICogYEByZWR1eGpzL3Rvb2xraXRgIHBhY2thZ2UqKiwgd2hpY2ggcmVwbGFjZXMgYGNyZWF0ZVN0b3JlYDpcbiAqICoqaHR0cHM6Ly9yZWR1eC5qcy5vcmcvaW50cm9kdWN0aW9uL3doeS1ydGstaXMtcmVkdXgtdG9kYXkqKlxuICpcbiAqIFRoZSBvbmx5IHdheSB0byBjaGFuZ2UgdGhlIGRhdGEgaW4gdGhlIHN0b3JlIGlzIHRvIGNhbGwgYGRpc3BhdGNoKClgIG9uIGl0LlxuICpcbiAqIFRoZXJlIHNob3VsZCBvbmx5IGJlIGEgc2luZ2xlIHN0b3JlIGluIHlvdXIgYXBwLiBUbyBzcGVjaWZ5IGhvdyBkaWZmZXJlbnRcbiAqIHBhcnRzIG9mIHRoZSBzdGF0ZSB0cmVlIHJlc3BvbmQgdG8gYWN0aW9ucywgeW91IG1heSBjb21iaW5lIHNldmVyYWwgcmVkdWNlcnNcbiAqIGludG8gYSBzaW5nbGUgcmVkdWNlciBmdW5jdGlvbiBieSB1c2luZyBgY29tYmluZVJlZHVjZXJzYC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWR1Y2VyIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlIHRyZWUsIGdpdmVuXG4gKiB0aGUgY3VycmVudCBzdGF0ZSB0cmVlIGFuZCB0aGUgYWN0aW9uIHRvIGhhbmRsZS5cbiAqXG4gKiBAcGFyYW0ge2FueX0gW3ByZWxvYWRlZFN0YXRlXSBUaGUgaW5pdGlhbCBzdGF0ZS4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAqIHRvIGh5ZHJhdGUgdGhlIHN0YXRlIGZyb20gdGhlIHNlcnZlciBpbiB1bml2ZXJzYWwgYXBwcywgb3IgdG8gcmVzdG9yZSBhXG4gKiBwcmV2aW91c2x5IHNlcmlhbGl6ZWQgdXNlciBzZXNzaW9uLlxuICogSWYgeW91IHVzZSBgY29tYmluZVJlZHVjZXJzYCB0byBwcm9kdWNlIHRoZSByb290IHJlZHVjZXIgZnVuY3Rpb24sIHRoaXMgbXVzdCBiZVxuICogYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgc2hhcGUgYXMgYGNvbWJpbmVSZWR1Y2Vyc2Aga2V5cy5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZW5oYW5jZXJdIFRoZSBzdG9yZSBlbmhhbmNlci4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAqIHRvIGVuaGFuY2UgdGhlIHN0b3JlIHdpdGggdGhpcmQtcGFydHkgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgbWlkZGxld2FyZSxcbiAqIHRpbWUgdHJhdmVsLCBwZXJzaXN0ZW5jZSwgZXRjLiBUaGUgb25seSBzdG9yZSBlbmhhbmNlciB0aGF0IHNoaXBzIHdpdGggUmVkdXhcbiAqIGlzIGBhcHBseU1pZGRsZXdhcmUoKWAuXG4gKlxuICogQHJldHVybnMge1N0b3JlfSBBIFJlZHV4IHN0b3JlIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgc3RhdGUsIGRpc3BhdGNoIGFjdGlvbnNcbiAqIGFuZCBzdWJzY3JpYmUgdG8gY2hhbmdlcy5cbiAqL1xuXG52YXIgbGVnYWN5X2NyZWF0ZVN0b3JlID0gY3JlYXRlU3RvcmU7XG5cbi8qKlxuICogUHJpbnRzIGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBpZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgVGhlIHdhcm5pbmcgbWVzc2FnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiB3YXJuaW5nKG1lc3NhZ2UpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUgKi9cblxuXG4gIHRyeSB7XG4gICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCBpZiB5b3UgZW5hYmxlXG4gICAgLy8gXCJicmVhayBvbiBhbGwgZXhjZXB0aW9uc1wiIGluIHlvdXIgY29uc29sZSxcbiAgICAvLyBpdCB3b3VsZCBwYXVzZSB0aGUgZXhlY3V0aW9uIGF0IHRoaXMgbGluZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gIH0gY2F0Y2ggKGUpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcblxufVxuXG5mdW5jdGlvbiBnZXRVbmV4cGVjdGVkU3RhdGVTaGFwZVdhcm5pbmdNZXNzYWdlKGlucHV0U3RhdGUsIHJlZHVjZXJzLCBhY3Rpb24sIHVuZXhwZWN0ZWRLZXlDYWNoZSkge1xuICB2YXIgcmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG4gIHZhciBhcmd1bWVudE5hbWUgPSBhY3Rpb24gJiYgYWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGVzLklOSVQgPyAncHJlbG9hZGVkU3RhdGUgYXJndW1lbnQgcGFzc2VkIHRvIGNyZWF0ZVN0b3JlJyA6ICdwcmV2aW91cyBzdGF0ZSByZWNlaXZlZCBieSB0aGUgcmVkdWNlcic7XG5cbiAgaWYgKHJlZHVjZXJLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnU3RvcmUgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIHJlZHVjZXIuIE1ha2Ugc3VyZSB0aGUgYXJndW1lbnQgcGFzc2VkICcgKyAndG8gY29tYmluZVJlZHVjZXJzIGlzIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIHJlZHVjZXJzLic7XG4gIH1cblxuICBpZiAoIWlzUGxhaW5PYmplY3QoaW5wdXRTdGF0ZSkpIHtcbiAgICByZXR1cm4gXCJUaGUgXCIgKyBhcmd1bWVudE5hbWUgKyBcIiBoYXMgdW5leHBlY3RlZCB0eXBlIG9mIFxcXCJcIiArIGtpbmRPZihpbnB1dFN0YXRlKSArIFwiXFxcIi4gRXhwZWN0ZWQgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBcIiArIChcImtleXM6IFxcXCJcIiArIHJlZHVjZXJLZXlzLmpvaW4oJ1wiLCBcIicpICsgXCJcXFwiXCIpO1xuICB9XG5cbiAgdmFyIHVuZXhwZWN0ZWRLZXlzID0gT2JqZWN0LmtleXMoaW5wdXRTdGF0ZSkuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gIXJlZHVjZXJzLmhhc093blByb3BlcnR5KGtleSkgJiYgIXVuZXhwZWN0ZWRLZXlDYWNoZVtrZXldO1xuICB9KTtcbiAgdW5leHBlY3RlZEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdW5leHBlY3RlZEtleUNhY2hlW2tleV0gPSB0cnVlO1xuICB9KTtcbiAgaWYgKGFjdGlvbiAmJiBhY3Rpb24udHlwZSA9PT0gQWN0aW9uVHlwZXMuUkVQTEFDRSkgcmV0dXJuO1xuXG4gIGlmICh1bmV4cGVjdGVkS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFwiVW5leHBlY3RlZCBcIiArICh1bmV4cGVjdGVkS2V5cy5sZW5ndGggPiAxID8gJ2tleXMnIDogJ2tleScpICsgXCIgXCIgKyAoXCJcXFwiXCIgKyB1bmV4cGVjdGVkS2V5cy5qb2luKCdcIiwgXCInKSArIFwiXFxcIiBmb3VuZCBpbiBcIiArIGFyZ3VtZW50TmFtZSArIFwiLiBcIikgKyBcIkV4cGVjdGVkIHRvIGZpbmQgb25lIG9mIHRoZSBrbm93biByZWR1Y2VyIGtleXMgaW5zdGVhZDogXCIgKyAoXCJcXFwiXCIgKyByZWR1Y2VyS2V5cy5qb2luKCdcIiwgXCInKSArIFwiXFxcIi4gVW5leHBlY3RlZCBrZXlzIHdpbGwgYmUgaWdub3JlZC5cIik7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0UmVkdWNlclNoYXBlKHJlZHVjZXJzKSB7XG4gIE9iamVjdC5rZXlzKHJlZHVjZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgcmVkdWNlciA9IHJlZHVjZXJzW2tleV07XG4gICAgdmFyIGluaXRpYWxTdGF0ZSA9IHJlZHVjZXIodW5kZWZpbmVkLCB7XG4gICAgICB0eXBlOiBBY3Rpb25UeXBlcy5JTklUXG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEyKSA6IFwiVGhlIHNsaWNlIHJlZHVjZXIgZm9yIGtleSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgcmV0dXJuZWQgdW5kZWZpbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gXCIgKyBcIklmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJlZHVjZXIgaXMgdW5kZWZpbmVkLCB5b3UgbXVzdCBcIiArIFwiZXhwbGljaXRseSByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBcIiArIFwibm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRvbid0IHdhbnQgdG8gc2V0IGEgdmFsdWUgZm9yIHRoaXMgcmVkdWNlciwgXCIgKyBcInlvdSBjYW4gdXNlIG51bGwgaW5zdGVhZCBvZiB1bmRlZmluZWQuXCIpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVkdWNlcih1bmRlZmluZWQsIHtcbiAgICAgIHR5cGU6IEFjdGlvblR5cGVzLlBST0JFX1VOS05PV05fQUNUSU9OKClcbiAgICB9KSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEzKSA6IFwiVGhlIHNsaWNlIHJlZHVjZXIgZm9yIGtleSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdpdGggYSByYW5kb20gdHlwZS4gXCIgKyAoXCJEb24ndCB0cnkgdG8gaGFuZGxlICdcIiArIEFjdGlvblR5cGVzLklOSVQgKyBcIicgb3Igb3RoZXIgYWN0aW9ucyBpbiBcXFwicmVkdXgvKlxcXCIgXCIpICsgXCJuYW1lc3BhY2UuIFRoZXkgYXJlIGNvbnNpZGVyZWQgcHJpdmF0ZS4gSW5zdGVhZCwgeW91IG11c3QgcmV0dXJuIHRoZSBcIiArIFwiY3VycmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgXCIgKyBcImluIHdoaWNoIGNhc2UgeW91IG11c3QgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLCByZWdhcmRsZXNzIG9mIHRoZSBcIiArIFwiYWN0aW9uIHR5cGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZpbmVkLCBidXQgY2FuIGJlIG51bGwuXCIpO1xuICAgIH1cbiAgfSk7XG59XG4vKipcbiAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGRpZmZlcmVudCByZWR1Y2VyIGZ1bmN0aW9ucywgaW50byBhIHNpbmdsZVxuICogcmVkdWNlciBmdW5jdGlvbi4gSXQgd2lsbCBjYWxsIGV2ZXJ5IGNoaWxkIHJlZHVjZXIsIGFuZCBnYXRoZXIgdGhlaXIgcmVzdWx0c1xuICogaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3QsIHdob3NlIGtleXMgY29ycmVzcG9uZCB0byB0aGUga2V5cyBvZiB0aGUgcGFzc2VkXG4gKiByZWR1Y2VyIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcmVkdWNlcnMgQW4gb2JqZWN0IHdob3NlIHZhbHVlcyBjb3JyZXNwb25kIHRvIGRpZmZlcmVudFxuICogcmVkdWNlciBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvbWJpbmVkIGludG8gb25lLiBPbmUgaGFuZHkgd2F5IHRvIG9idGFpblxuICogaXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXMgcmVkdWNlcnNgIHN5bnRheC4gVGhlIHJlZHVjZXJzIG1heSBuZXZlciByZXR1cm5cbiAqIHVuZGVmaW5lZCBmb3IgYW55IGFjdGlvbi4gSW5zdGVhZCwgdGhleSBzaG91bGQgcmV0dXJuIHRoZWlyIGluaXRpYWwgc3RhdGVcbiAqIGlmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlbSB3YXMgdW5kZWZpbmVkLCBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgZm9yIGFueVxuICogdW5yZWNvZ25pemVkIGFjdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgcmVkdWNlciBmdW5jdGlvbiB0aGF0IGludm9rZXMgZXZlcnkgcmVkdWNlciBpbnNpZGUgdGhlXG4gKiBwYXNzZWQgb2JqZWN0LCBhbmQgYnVpbGRzIGEgc3RhdGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgc2hhcGUuXG4gKi9cblxuXG5mdW5jdGlvbiBjb21iaW5lUmVkdWNlcnMocmVkdWNlcnMpIHtcbiAgdmFyIHJlZHVjZXJLZXlzID0gT2JqZWN0LmtleXMocmVkdWNlcnMpO1xuICB2YXIgZmluYWxSZWR1Y2VycyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVkdWNlcktleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gcmVkdWNlcktleXNbaV07XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiByZWR1Y2Vyc1trZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3YXJuaW5nKFwiTm8gcmVkdWNlciBwcm92aWRlZCBmb3Iga2V5IFxcXCJcIiArIGtleSArIFwiXFxcIlwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlZHVjZXJzW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGZpbmFsUmVkdWNlcnNba2V5XSA9IHJlZHVjZXJzW2tleV07XG4gICAgfVxuICB9XG5cbiAgdmFyIGZpbmFsUmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhmaW5hbFJlZHVjZXJzKTsgLy8gVGhpcyBpcyB1c2VkIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB3YXJuIGFib3V0IHRoZSBzYW1lXG4gIC8vIGtleXMgbXVsdGlwbGUgdGltZXMuXG5cbiAgdmFyIHVuZXhwZWN0ZWRLZXlDYWNoZTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHVuZXhwZWN0ZWRLZXlDYWNoZSA9IHt9O1xuICB9XG5cbiAgdmFyIHNoYXBlQXNzZXJ0aW9uRXJyb3I7XG5cbiAgdHJ5IHtcbiAgICBhc3NlcnRSZWR1Y2VyU2hhcGUoZmluYWxSZWR1Y2Vycyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBzaGFwZUFzc2VydGlvbkVycm9yID0gZTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBjb21iaW5hdGlvbihzdGF0ZSwgYWN0aW9uKSB7XG4gICAgaWYgKHN0YXRlID09PSB2b2lkIDApIHtcbiAgICAgIHN0YXRlID0ge307XG4gICAgfVxuXG4gICAgaWYgKHNoYXBlQXNzZXJ0aW9uRXJyb3IpIHtcbiAgICAgIHRocm93IHNoYXBlQXNzZXJ0aW9uRXJyb3I7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciB3YXJuaW5nTWVzc2FnZSA9IGdldFVuZXhwZWN0ZWRTdGF0ZVNoYXBlV2FybmluZ01lc3NhZ2Uoc3RhdGUsIGZpbmFsUmVkdWNlcnMsIGFjdGlvbiwgdW5leHBlY3RlZEtleUNhY2hlKTtcblxuICAgICAgaWYgKHdhcm5pbmdNZXNzYWdlKSB7XG4gICAgICAgIHdhcm5pbmcod2FybmluZ01lc3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBoYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgdmFyIG5leHRTdGF0ZSA9IHt9O1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGZpbmFsUmVkdWNlcktleXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2tleSA9IGZpbmFsUmVkdWNlcktleXNbX2ldO1xuICAgICAgdmFyIHJlZHVjZXIgPSBmaW5hbFJlZHVjZXJzW19rZXldO1xuICAgICAgdmFyIHByZXZpb3VzU3RhdGVGb3JLZXkgPSBzdGF0ZVtfa2V5XTtcbiAgICAgIHZhciBuZXh0U3RhdGVGb3JLZXkgPSByZWR1Y2VyKHByZXZpb3VzU3RhdGVGb3JLZXksIGFjdGlvbik7XG5cbiAgICAgIGlmICh0eXBlb2YgbmV4dFN0YXRlRm9yS2V5ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB2YXIgYWN0aW9uVHlwZSA9IGFjdGlvbiAmJiBhY3Rpb24udHlwZTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiA/IGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTQpIDogXCJXaGVuIGNhbGxlZCB3aXRoIGFuIGFjdGlvbiBvZiB0eXBlIFwiICsgKGFjdGlvblR5cGUgPyBcIlxcXCJcIiArIFN0cmluZyhhY3Rpb25UeXBlKSArIFwiXFxcIlwiIDogJyh1bmtub3duIHR5cGUpJykgKyBcIiwgdGhlIHNsaWNlIHJlZHVjZXIgZm9yIGtleSBcXFwiXCIgKyBfa2V5ICsgXCJcXFwiIHJldHVybmVkIHVuZGVmaW5lZC4gXCIgKyBcIlRvIGlnbm9yZSBhbiBhY3Rpb24sIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBwcmV2aW91cyBzdGF0ZS4gXCIgKyBcIklmIHlvdSB3YW50IHRoaXMgcmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5b3UgY2FuIHJldHVybiBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLlwiKTtcbiAgICAgIH1cblxuICAgICAgbmV4dFN0YXRlW19rZXldID0gbmV4dFN0YXRlRm9yS2V5O1xuICAgICAgaGFzQ2hhbmdlZCA9IGhhc0NoYW5nZWQgfHwgbmV4dFN0YXRlRm9yS2V5ICE9PSBwcmV2aW91c1N0YXRlRm9yS2V5O1xuICAgIH1cblxuICAgIGhhc0NoYW5nZWQgPSBoYXNDaGFuZ2VkIHx8IGZpbmFsUmVkdWNlcktleXMubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhzdGF0ZSkubGVuZ3RoO1xuICAgIHJldHVybiBoYXNDaGFuZ2VkID8gbmV4dFN0YXRlIDogc3RhdGU7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoKGFjdGlvbkNyZWF0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH07XG59XG4vKipcbiAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGFjdGlvbiBjcmVhdG9ycywgaW50byBhbiBvYmplY3Qgd2l0aCB0aGVcbiAqIHNhbWUga2V5cywgYnV0IHdpdGggZXZlcnkgZnVuY3Rpb24gd3JhcHBlZCBpbnRvIGEgYGRpc3BhdGNoYCBjYWxsIHNvIHRoZXlcbiAqIG1heSBiZSBpbnZva2VkIGRpcmVjdGx5LiBUaGlzIGlzIGp1c3QgYSBjb252ZW5pZW5jZSBtZXRob2QsIGFzIHlvdSBjYW4gY2FsbFxuICogYHN0b3JlLmRpc3BhdGNoKE15QWN0aW9uQ3JlYXRvcnMuZG9Tb21ldGhpbmcoKSlgIHlvdXJzZWxmIGp1c3QgZmluZS5cbiAqXG4gKiBGb3IgY29udmVuaWVuY2UsIHlvdSBjYW4gYWxzbyBwYXNzIGFuIGFjdGlvbiBjcmVhdG9yIGFzIHRoZSBmaXJzdCBhcmd1bWVudCxcbiAqIGFuZCBnZXQgYSBkaXNwYXRjaCB3cmFwcGVkIGZ1bmN0aW9uIGluIHJldHVybi5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufE9iamVjdH0gYWN0aW9uQ3JlYXRvcnMgQW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgYWN0aW9uXG4gKiBjcmVhdG9yIGZ1bmN0aW9ucy4gT25lIGhhbmR5IHdheSB0byBvYnRhaW4gaXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXNgXG4gKiBzeW50YXguIFlvdSBtYXkgYWxzbyBwYXNzIGEgc2luZ2xlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGRpc3BhdGNoIFRoZSBgZGlzcGF0Y2hgIGZ1bmN0aW9uIGF2YWlsYWJsZSBvbiB5b3VyIFJlZHV4XG4gKiBzdG9yZS5cbiAqXG4gKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBUaGUgb2JqZWN0IG1pbWlja2luZyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBidXQgd2l0aFxuICogZXZlcnkgYWN0aW9uIGNyZWF0b3Igd3JhcHBlZCBpbnRvIHRoZSBgZGlzcGF0Y2hgIGNhbGwuIElmIHlvdSBwYXNzZWQgYVxuICogZnVuY3Rpb24gYXMgYGFjdGlvbkNyZWF0b3JzYCwgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGFsc28gYmUgYSBzaW5nbGVcbiAqIGZ1bmN0aW9uLlxuICovXG5cblxuZnVuY3Rpb24gYmluZEFjdGlvbkNyZWF0b3JzKGFjdGlvbkNyZWF0b3JzLCBkaXNwYXRjaCkge1xuICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3JzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3JzLCBkaXNwYXRjaCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3JzICE9PSAnb2JqZWN0JyB8fCBhY3Rpb25DcmVhdG9ycyA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgPyBmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE2KSA6IFwiYmluZEFjdGlvbkNyZWF0b3JzIGV4cGVjdGVkIGFuIG9iamVjdCBvciBhIGZ1bmN0aW9uLCBidXQgaW5zdGVhZCByZWNlaXZlZDogJ1wiICsga2luZE9mKGFjdGlvbkNyZWF0b3JzKSArIFwiJy4gXCIgKyBcIkRpZCB5b3Ugd3JpdGUgXFxcImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tXFxcIiBpbnN0ZWFkIG9mIFxcXCJpbXBvcnQgKiBhcyBBY3Rpb25DcmVhdG9ycyBmcm9tXFxcIj9cIik7XG4gIH1cblxuICB2YXIgYm91bmRBY3Rpb25DcmVhdG9ycyA9IHt9O1xuXG4gIGZvciAodmFyIGtleSBpbiBhY3Rpb25DcmVhdG9ycykge1xuICAgIHZhciBhY3Rpb25DcmVhdG9yID0gYWN0aW9uQ3JlYXRvcnNba2V5XTtcblxuICAgIGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYm91bmRBY3Rpb25DcmVhdG9yc1trZXldID0gYmluZEFjdGlvbkNyZWF0b3IoYWN0aW9uQ3JlYXRvciwgZGlzcGF0Y2gpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBib3VuZEFjdGlvbkNyZWF0b3JzO1xufVxuXG4vKipcbiAqIENvbXBvc2VzIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMgZnJvbSByaWdodCB0byBsZWZ0LiBUaGUgcmlnaHRtb3N0XG4gKiBmdW5jdGlvbiBjYW4gdGFrZSBtdWx0aXBsZSBhcmd1bWVudHMgYXMgaXQgcHJvdmlkZXMgdGhlIHNpZ25hdHVyZSBmb3JcbiAqIHRoZSByZXN1bHRpbmcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IGZ1bmNzIFRoZSBmdW5jdGlvbnMgdG8gY29tcG9zZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBmdW5jdGlvbiBvYnRhaW5lZCBieSBjb21wb3NpbmcgdGhlIGFyZ3VtZW50IGZ1bmN0aW9uc1xuICogZnJvbSByaWdodCB0byBsZWZ0LiBGb3IgZXhhbXBsZSwgY29tcG9zZShmLCBnLCBoKSBpcyBpZGVudGljYWwgdG8gZG9pbmdcbiAqICguLi5hcmdzKSA9PiBmKGcoaCguLi5hcmdzKSkpLlxuICovXG5mdW5jdGlvbiBjb21wb3NlKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZnVuY3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgZnVuY3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICBpZiAoZnVuY3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgIHJldHVybiBhcmc7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChmdW5jcy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZnVuY3NbMF07XG4gIH1cblxuICByZXR1cm4gZnVuY3MucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhKGIuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpKTtcbiAgICB9O1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RvcmUgZW5oYW5jZXIgdGhhdCBhcHBsaWVzIG1pZGRsZXdhcmUgdG8gdGhlIGRpc3BhdGNoIG1ldGhvZFxuICogb2YgdGhlIFJlZHV4IHN0b3JlLiBUaGlzIGlzIGhhbmR5IGZvciBhIHZhcmlldHkgb2YgdGFza3MsIHN1Y2ggYXMgZXhwcmVzc2luZ1xuICogYXN5bmNocm9ub3VzIGFjdGlvbnMgaW4gYSBjb25jaXNlIG1hbm5lciwgb3IgbG9nZ2luZyBldmVyeSBhY3Rpb24gcGF5bG9hZC5cbiAqXG4gKiBTZWUgYHJlZHV4LXRodW5rYCBwYWNrYWdlIGFzIGFuIGV4YW1wbGUgb2YgdGhlIFJlZHV4IG1pZGRsZXdhcmUuXG4gKlxuICogQmVjYXVzZSBtaWRkbGV3YXJlIGlzIHBvdGVudGlhbGx5IGFzeW5jaHJvbm91cywgdGhpcyBzaG91bGQgYmUgdGhlIGZpcnN0XG4gKiBzdG9yZSBlbmhhbmNlciBpbiB0aGUgY29tcG9zaXRpb24gY2hhaW4uXG4gKlxuICogTm90ZSB0aGF0IGVhY2ggbWlkZGxld2FyZSB3aWxsIGJlIGdpdmVuIHRoZSBgZGlzcGF0Y2hgIGFuZCBgZ2V0U3RhdGVgIGZ1bmN0aW9uc1xuICogYXMgbmFtZWQgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IG1pZGRsZXdhcmVzIFRoZSBtaWRkbGV3YXJlIGNoYWluIHRvIGJlIGFwcGxpZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgc3RvcmUgZW5oYW5jZXIgYXBwbHlpbmcgdGhlIG1pZGRsZXdhcmUuXG4gKi9cblxuZnVuY3Rpb24gYXBwbHlNaWRkbGV3YXJlKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWlkZGxld2FyZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgbWlkZGxld2FyZXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGNyZWF0ZVN0b3JlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBzdG9yZSA9IGNyZWF0ZVN0b3JlLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcblxuICAgICAgdmFyIF9kaXNwYXRjaCA9IGZ1bmN0aW9uIGRpc3BhdGNoKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxNSkgOiAnRGlzcGF0Y2hpbmcgd2hpbGUgY29uc3RydWN0aW5nIHlvdXIgbWlkZGxld2FyZSBpcyBub3QgYWxsb3dlZC4gJyArICdPdGhlciBtaWRkbGV3YXJlIHdvdWxkIG5vdCBiZSBhcHBsaWVkIHRvIHRoaXMgZGlzcGF0Y2guJyk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgbWlkZGxld2FyZUFQSSA9IHtcbiAgICAgICAgZ2V0U3RhdGU6IHN0b3JlLmdldFN0YXRlLFxuICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24gZGlzcGF0Y2goKSB7XG4gICAgICAgICAgcmV0dXJuIF9kaXNwYXRjaC5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB2YXIgY2hhaW4gPSBtaWRkbGV3YXJlcy5tYXAoZnVuY3Rpb24gKG1pZGRsZXdhcmUpIHtcbiAgICAgICAgcmV0dXJuIG1pZGRsZXdhcmUobWlkZGxld2FyZUFQSSk7XG4gICAgICB9KTtcbiAgICAgIF9kaXNwYXRjaCA9IGNvbXBvc2UuYXBwbHkodm9pZCAwLCBjaGFpbikoc3RvcmUuZGlzcGF0Y2gpO1xuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc3RvcmUpLCB7fSwge1xuICAgICAgICBkaXNwYXRjaDogX2Rpc3BhdGNoXG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgeyBBY3Rpb25UeXBlcyBhcyBfX0RPX05PVF9VU0VfX0FjdGlvblR5cGVzLCBhcHBseU1pZGRsZXdhcmUsIGJpbmRBY3Rpb25DcmVhdG9ycywgY29tYmluZVJlZHVjZXJzLCBjb21wb3NlLCBjcmVhdGVTdG9yZSwgbGVnYWN5X2NyZWF0ZVN0b3JlIH07XG4iXSwibmFtZXMiOlsiX29iamVjdFNwcmVhZCIsImZvcm1hdFByb2RFcnJvck1lc3NhZ2UiLCJjb2RlIiwiJCRvYnNlcnZhYmxlIiwiU3ltYm9sIiwib2JzZXJ2YWJsZSIsInJhbmRvbVN0cmluZyIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsInN1YnN0cmluZyIsInNwbGl0Iiwiam9pbiIsIkFjdGlvblR5cGVzIiwiSU5JVCIsIlJFUExBQ0UiLCJQUk9CRV9VTktOT1dOX0FDVElPTiIsImlzUGxhaW5PYmplY3QiLCJvYmoiLCJwcm90byIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwibWluaUtpbmRPZiIsInZhbCIsInR5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJpc0RhdGUiLCJpc0Vycm9yIiwiY29uc3RydWN0b3JOYW1lIiwiY3Rvck5hbWUiLCJzbGljZSIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkVycm9yIiwibWVzc2FnZSIsInN0YWNrVHJhY2VMaW1pdCIsIkRhdGUiLCJ0b0RhdGVTdHJpbmciLCJnZXREYXRlIiwic2V0RGF0ZSIsImtpbmRPZiIsInR5cGVPZlZhbCIsInByb2Nlc3MiLCJjcmVhdGVTdG9yZSIsInJlZHVjZXIiLCJwcmVsb2FkZWRTdGF0ZSIsImVuaGFuY2VyIiwiX3JlZjIiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJjdXJyZW50UmVkdWNlciIsImN1cnJlbnRTdGF0ZSIsImN1cnJlbnRMaXN0ZW5lcnMiLCJuZXh0TGlzdGVuZXJzIiwiaXNEaXNwYXRjaGluZyIsImVuc3VyZUNhbk11dGF0ZU5leHRMaXN0ZW5lcnMiLCJnZXRTdGF0ZSIsInN1YnNjcmliZSIsImxpc3RlbmVyIiwiaXNTdWJzY3JpYmVkIiwicHVzaCIsInVuc3Vic2NyaWJlIiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIiwiZGlzcGF0Y2giLCJhY3Rpb24iLCJsaXN0ZW5lcnMiLCJpIiwibGVuZ3RoIiwicmVwbGFjZVJlZHVjZXIiLCJuZXh0UmVkdWNlciIsIl9yZWYiLCJvdXRlclN1YnNjcmliZSIsIm9ic2VydmVyIiwib2JzZXJ2ZVN0YXRlIiwibmV4dCIsImxlZ2FjeV9jcmVhdGVTdG9yZSIsIndhcm5pbmciLCJjb25zb2xlIiwiZXJyb3IiLCJlIiwiZ2V0VW5leHBlY3RlZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZSIsImlucHV0U3RhdGUiLCJyZWR1Y2VycyIsInVuZXhwZWN0ZWRLZXlDYWNoZSIsInJlZHVjZXJLZXlzIiwia2V5cyIsImFyZ3VtZW50TmFtZSIsInVuZXhwZWN0ZWRLZXlzIiwiZmlsdGVyIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJmb3JFYWNoIiwiYXNzZXJ0UmVkdWNlclNoYXBlIiwiaW5pdGlhbFN0YXRlIiwiY29tYmluZVJlZHVjZXJzIiwiZmluYWxSZWR1Y2VycyIsImZpbmFsUmVkdWNlcktleXMiLCJzaGFwZUFzc2VydGlvbkVycm9yIiwiY29tYmluYXRpb24iLCJzdGF0ZSIsIndhcm5pbmdNZXNzYWdlIiwiaGFzQ2hhbmdlZCIsIm5leHRTdGF0ZSIsIl9pIiwiX2tleSIsInByZXZpb3VzU3RhdGVGb3JLZXkiLCJuZXh0U3RhdGVGb3JLZXkiLCJhY3Rpb25UeXBlIiwiU3RyaW5nIiwiYmluZEFjdGlvbkNyZWF0b3IiLCJhY3Rpb25DcmVhdG9yIiwiYXBwbHkiLCJiaW5kQWN0aW9uQ3JlYXRvcnMiLCJhY3Rpb25DcmVhdG9ycyIsImJvdW5kQWN0aW9uQ3JlYXRvcnMiLCJjb21wb3NlIiwiX2xlbiIsImZ1bmNzIiwiYXJnIiwicmVkdWNlIiwiYSIsImIiLCJhcHBseU1pZGRsZXdhcmUiLCJtaWRkbGV3YXJlcyIsInN0b3JlIiwiX2Rpc3BhdGNoIiwibWlkZGxld2FyZUFQSSIsImNoYWluIiwibWFwIiwibWlkZGxld2FyZSIsIl9fRE9fTk9UX1VTRV9fQWN0aW9uVHlwZXMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/redux/es/redux.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/use-memo-one/dist/use-memo-one.esm.js":
/*!************************************************************!*\
!*** ./node_modules/use-memo-one/dist/use-memo-one.esm.js ***!
\************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useCallback: function() { return /* binding */ useCallback; },\n/* harmony export */ useCallbackOne: function() { return /* binding */ useCallbackOne; },\n/* harmony export */ useMemo: function() { return /* binding */ useMemo; },\n/* harmony export */ useMemoOne: function() { return /* binding */ useMemoOne; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for(var i = 0; i < newInputs.length; i++){\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\nfunction useMemoOne(getResult, inputs) {\n _s();\n var initial = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(function() {\n return {\n inputs: inputs,\n result: getResult()\n };\n })[0];\n var isFirstRun = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(true);\n var committed = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(initial);\n var useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));\n var cache = useCache ? committed.current : {\n inputs: inputs,\n result: getResult()\n };\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n isFirstRun.current = false;\n committed.current = cache;\n }, [\n cache\n ]);\n return cache.result;\n}\n_s(useMemoOne, \"rOKFL9NFGpp+Mvcts9So1Ivlgmo=\");\nfunction useCallbackOne(callback, inputs) {\n _s1();\n return useMemoOne(function() {\n return callback;\n }, inputs);\n}\n_s1(useCallbackOne, \"vEqbtFwjzV4Mq1M3HSplpL9tfws=\", false, function() {\n return [\n useMemoOne\n ];\n});\nvar useMemo = useMemoOne;\nvar useCallback = useCallbackOne;\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy91c2UtbWVtby1vbmUvZGlzdC91c2UtbWVtby1vbmUuZXNtLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBb0Q7QUFFcEQsU0FBU0csZUFBZUMsU0FBUyxFQUFFQyxVQUFVO0lBQzNDLElBQUlELFVBQVVFLE1BQU0sS0FBS0QsV0FBV0MsTUFBTSxFQUFFO1FBQzFDLE9BQU87SUFDVDtJQUVBLElBQUssSUFBSUMsSUFBSSxHQUFHQSxJQUFJSCxVQUFVRSxNQUFNLEVBQUVDLElBQUs7UUFDekMsSUFBSUgsU0FBUyxDQUFDRyxFQUFFLEtBQUtGLFVBQVUsQ0FBQ0UsRUFBRSxFQUFFO1lBQ2xDLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBTztBQUNUO0FBRUEsU0FBU0MsV0FBV0MsU0FBUyxFQUFFQyxNQUFNOztJQUNuQyxJQUFJQyxVQUFVWCwrQ0FBUUEsQ0FBQztRQUNyQixPQUFPO1lBQ0xVLFFBQVFBO1lBQ1JFLFFBQVFIO1FBQ1Y7SUFDRixFQUFFLENBQUMsRUFBRTtJQUNMLElBQUlJLGFBQWFaLDZDQUFNQSxDQUFDO0lBQ3hCLElBQUlhLFlBQVliLDZDQUFNQSxDQUFDVTtJQUN2QixJQUFJSSxXQUFXRixXQUFXRyxPQUFPLElBQUlDLFFBQVFQLFVBQVVJLFVBQVVFLE9BQU8sQ0FBQ04sTUFBTSxJQUFJUCxlQUFlTyxRQUFRSSxVQUFVRSxPQUFPLENBQUNOLE1BQU07SUFDbEksSUFBSVEsUUFBUUgsV0FBV0QsVUFBVUUsT0FBTyxHQUFHO1FBQ3pDTixRQUFRQTtRQUNSRSxRQUFRSDtJQUNWO0lBQ0FQLGdEQUFTQSxDQUFDO1FBQ1JXLFdBQVdHLE9BQU8sR0FBRztRQUNyQkYsVUFBVUUsT0FBTyxHQUFHRTtJQUN0QixHQUFHO1FBQUNBO0tBQU07SUFDVixPQUFPQSxNQUFNTixNQUFNO0FBQ3JCO0dBbkJTSjtBQW9CVCxTQUFTVyxlQUFlQyxRQUFRLEVBQUVWLE1BQU07O0lBQ3RDLE9BQU9GLFdBQVc7UUFDaEIsT0FBT1k7SUFDVCxHQUFHVjtBQUNMO0lBSlNTOztRQUNBWDs7O0FBSVQsSUFBSWEsVUFBVWI7QUFDZCxJQUFJYyxjQUFjSDtBQUUwQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvdXNlLW1lbW8tb25lL2Rpc3QvdXNlLW1lbW8tb25lLmVzbS5qcz9kNzhjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxuZnVuY3Rpb24gYXJlSW5wdXRzRXF1YWwobmV3SW5wdXRzLCBsYXN0SW5wdXRzKSB7XG4gIGlmIChuZXdJbnB1dHMubGVuZ3RoICE9PSBsYXN0SW5wdXRzLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3SW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKG5ld0lucHV0c1tpXSAhPT0gbGFzdElucHV0c1tpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiB1c2VNZW1vT25lKGdldFJlc3VsdCwgaW5wdXRzKSB7XG4gIHZhciBpbml0aWFsID0gdXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbnB1dHM6IGlucHV0cyxcbiAgICAgIHJlc3VsdDogZ2V0UmVzdWx0KClcbiAgICB9O1xuICB9KVswXTtcbiAgdmFyIGlzRmlyc3RSdW4gPSB1c2VSZWYodHJ1ZSk7XG4gIHZhciBjb21taXR0ZWQgPSB1c2VSZWYoaW5pdGlhbCk7XG4gIHZhciB1c2VDYWNoZSA9IGlzRmlyc3RSdW4uY3VycmVudCB8fCBCb29sZWFuKGlucHV0cyAmJiBjb21taXR0ZWQuY3VycmVudC5pbnB1dHMgJiYgYXJlSW5wdXRzRXF1YWwoaW5wdXRzLCBjb21taXR0ZWQuY3VycmVudC5pbnB1dHMpKTtcbiAgdmFyIGNhY2hlID0gdXNlQ2FjaGUgPyBjb21taXR0ZWQuY3VycmVudCA6IHtcbiAgICBpbnB1dHM6IGlucHV0cyxcbiAgICByZXN1bHQ6IGdldFJlc3VsdCgpXG4gIH07XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaXNGaXJzdFJ1bi5jdXJyZW50ID0gZmFsc2U7XG4gICAgY29tbWl0dGVkLmN1cnJlbnQgPSBjYWNoZTtcbiAgfSwgW2NhY2hlXSk7XG4gIHJldHVybiBjYWNoZS5yZXN1bHQ7XG59XG5mdW5jdGlvbiB1c2VDYWxsYmFja09uZShjYWxsYmFjaywgaW5wdXRzKSB7XG4gIHJldHVybiB1c2VNZW1vT25lKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbGJhY2s7XG4gIH0sIGlucHV0cyk7XG59XG52YXIgdXNlTWVtbyA9IHVzZU1lbW9PbmU7XG52YXIgdXNlQ2FsbGJhY2sgPSB1c2VDYWxsYmFja09uZTtcblxuZXhwb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNhbGxiYWNrT25lLCB1c2VNZW1vLCB1c2VNZW1vT25lIH07XG4iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJhcmVJbnB1dHNFcXVhbCIsIm5ld0lucHV0cyIsImxhc3RJbnB1dHMiLCJsZW5ndGgiLCJpIiwidXNlTWVtb09uZSIsImdldFJlc3VsdCIsImlucHV0cyIsImluaXRpYWwiLCJyZXN1bHQiLCJpc0ZpcnN0UnVuIiwiY29tbWl0dGVkIiwidXNlQ2FjaGUiLCJjdXJyZW50IiwiQm9vbGVhbiIsImNhY2hlIiwidXNlQ2FsbGJhY2tPbmUiLCJjYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VDYWxsYmFjayJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/use-memo-one/dist/use-memo-one.esm.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/components/chat.module.scss":
/*!*****************************************!*\
!*** ./app/components/chat.module.scss ***!
\*****************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("// extracted by mini-css-extract-plugin\nmodule.exports = {\"attach-images\":\"chat_attach-images__UtJds\",\"attach-image\":\"chat_attach-image__5zxeG\",\"attach-image-mask\":\"chat_attach-image-mask__cOlWM\",\"delete-image\":\"chat_delete-image__IBtAc\",\"chat-input-actions\":\"chat_chat-input-actions__mwYC_\",\"chat-input-actions-end\":\"chat_chat-input-actions-end__gqGc3\",\"chat-input-action\":\"chat_chat-input-action__DMW7Y\",\"slide-in\":\"chat_slide-in__nvZgA\",\"text\":\"chat_text__TkPfN\",\"icon\":\"chat_icon__Ly3TN\",\"prompt-toast\":\"chat_prompt-toast___VCUf\",\"prompt-toast-inner\":\"chat_prompt-toast-inner__f17E6\",\"slide-in-from-top\":\"chat_slide-in-from-top__Q0KCt\",\"prompt-toast-content\":\"chat_prompt-toast-content__9sp_w\",\"section-title\":\"chat_section-title__BiPko\",\"section-title-action\":\"chat_section-title-action__bmruw\",\"context-prompt\":\"chat_context-prompt__cbach\",\"context-prompt-insert\":\"chat_context-prompt-insert__UmNJi\",\"context-prompt-row\":\"chat_context-prompt-row__3Kbix\",\"context-drag\":\"chat_context-drag__BX7lh\",\"context-role\":\"chat_context-role__7_IR9\",\"context-content\":\"chat_context-content__sNXUy\",\"context-delete-button\":\"chat_context-delete-button__C_BmS\",\"context-prompt-button\":\"chat_context-prompt-button__AoPsw\",\"memory-prompt\":\"chat_memory-prompt__vOzcn\",\"memory-prompt-content\":\"chat_memory-prompt-content__kUVKj\",\"clear-context\":\"chat_clear-context__ke8Iw\",\"clear-context-tips\":\"chat_clear-context-tips__L1A_i\",\"clear-context-revert-btn\":\"chat_clear-context-revert-btn___Wna1\",\"chat\":\"chat_chat__ZebHg\",\"chat-body\":\"chat_chat-body__QFv5x\",\"chat-body-main-title\":\"chat_chat-body-main-title__jUL6h\",\"chat-body-title\":\"chat_chat-body-title__d2ItC\",\"chat-message\":\"chat_chat-message__dg8rL\",\"chat-message-user\":\"chat_chat-message-user__ZtTEj\",\"chat-message-header\":\"chat_chat-message-header__Dny_K\",\"chat-message-actions\":\"chat_chat-message-actions__H90hg\",\"chat-model-name\":\"chat_chat-model-name__U4gmR\",\"chat-message-container\":\"chat_chat-message-container__O_X8_\",\"chat-message-edit\":\"chat_chat-message-edit__h58of\",\"chat-message-avatar\":\"chat_chat-message-avatar__3QeMq\",\"chat-message-status\":\"chat_chat-message-status__zc9Ad\",\"chat-message-tools\":\"chat_chat-message-tools__YMVVa\",\"chat-message-tool\":\"chat_chat-message-tool__Rjc5q\",\"chat-message-item\":\"chat_chat-message-item__dKqMl\",\"chat-message-audio\":\"chat_chat-message-audio__Rbvwc\",\"chat-message-item-image\":\"chat_chat-message-item-image__2jbb0\",\"chat-message-item-images\":\"chat_chat-message-item-images__EtEM4\",\"chat-message-item-image-multi\":\"chat_chat-message-item-image-multi__DOIxY\",\"chat-message-action-date\":\"chat_chat-message-action-date__RsXTn\",\"chat-input-panel\":\"chat_chat-input-panel__rO72m\",\"prompt-hints\":\"chat_prompt-hints__VT_Oi\",\"prompt-hint\":\"chat_prompt-hint__2616t\",\"hint-title\":\"chat_hint-title__E53ZK\",\"hint-content\":\"chat_hint-content__y2yj4\",\"prompt-hint-selected\":\"chat_prompt-hint-selected__o3vYi\",\"chat-input-panel-inner\":\"chat_chat-input-panel-inner___IQHi\",\"chat-input-panel-inner-attach\":\"chat_chat-input-panel-inner-attach__mZheu\",\"chat-input\":\"chat_chat-input__PQ_oF\",\"chat-input-send\":\"chat_chat-input-send__GFQZo\",\"shortcut-key-container\":\"chat_shortcut-key-container__nYZUJ\",\"shortcut-key-grid\":\"chat_shortcut-key-grid__VmUMG\",\"shortcut-key-item\":\"chat_shortcut-key-item__diQqm\",\"shortcut-key-title\":\"chat_shortcut-key-title__nauQT\",\"shortcut-key-keys\":\"chat_shortcut-key-keys__vW8SN\",\"shortcut-key\":\"chat_shortcut-key__DtMUQ\",\"chat-main\":\"chat_chat-main__i_Cp2\",\"chat-body-container\":\"chat_chat-body-container__6ZZad\",\"chat-side-panel\":\"chat_chat-side-panel__YrWNL\",\"chat-side-panel-show\":\"chat_chat-side-panel-show__cl5MF\"};\n if(true) {\n // 1739284267331\n var cssReload = __webpack_require__(/*! ./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js\")(module.id, {\"publicPath\":\"/_next/\",\"esModule\":false,\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n \nmodule.exports.__checksum = \"bf039790b229\"\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL2NoYXQubW9kdWxlLnNjc3MiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxrQkFBa0I7QUFDbEIsT0FBTyxJQUFVO0FBQ2pCO0FBQ0Esc0JBQXNCLG1CQUFPLENBQUMsd01BQW1HLGNBQWMsc0RBQXNEO0FBQ3JNLE1BQU0sVUFBVTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2NvbXBvbmVudHMvY2hhdC5tb2R1bGUuc2Nzcz8wY2JjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJhdHRhY2gtaW1hZ2VzXCI6XCJjaGF0X2F0dGFjaC1pbWFnZXNfX1V0SmRzXCIsXCJhdHRhY2gtaW1hZ2VcIjpcImNoYXRfYXR0YWNoLWltYWdlX181enhlR1wiLFwiYXR0YWNoLWltYWdlLW1hc2tcIjpcImNoYXRfYXR0YWNoLWltYWdlLW1hc2tfX2NPbFdNXCIsXCJkZWxldGUtaW1hZ2VcIjpcImNoYXRfZGVsZXRlLWltYWdlX19JQnRBY1wiLFwiY2hhdC1pbnB1dC1hY3Rpb25zXCI6XCJjaGF0X2NoYXQtaW5wdXQtYWN0aW9uc19fbXdZQ19cIixcImNoYXQtaW5wdXQtYWN0aW9ucy1lbmRcIjpcImNoYXRfY2hhdC1pbnB1dC1hY3Rpb25zLWVuZF9fZ3FHYzNcIixcImNoYXQtaW5wdXQtYWN0aW9uXCI6XCJjaGF0X2NoYXQtaW5wdXQtYWN0aW9uX19ETVc3WVwiLFwic2xpZGUtaW5cIjpcImNoYXRfc2xpZGUtaW5fX252WmdBXCIsXCJ0ZXh0XCI6XCJjaGF0X3RleHRfX1RrUGZOXCIsXCJpY29uXCI6XCJjaGF0X2ljb25fX0x5M1ROXCIsXCJwcm9tcHQtdG9hc3RcIjpcImNoYXRfcHJvbXB0LXRvYXN0X19fVkNVZlwiLFwicHJvbXB0LXRvYXN0LWlubmVyXCI6XCJjaGF0X3Byb21wdC10b2FzdC1pbm5lcl9fZjE3RTZcIixcInNsaWRlLWluLWZyb20tdG9wXCI6XCJjaGF0X3NsaWRlLWluLWZyb20tdG9wX19RMEtDdFwiLFwicHJvbXB0LXRvYXN0LWNvbnRlbnRcIjpcImNoYXRfcHJvbXB0LXRvYXN0LWNvbnRlbnRfXzlzcF93XCIsXCJzZWN0aW9uLXRpdGxlXCI6XCJjaGF0X3NlY3Rpb24tdGl0bGVfX0JpUGtvXCIsXCJzZWN0aW9uLXRpdGxlLWFjdGlvblwiOlwiY2hhdF9zZWN0aW9uLXRpdGxlLWFjdGlvbl9fYm1ydXdcIixcImNvbnRleHQtcHJvbXB0XCI6XCJjaGF0X2NvbnRleHQtcHJvbXB0X19jYmFjaFwiLFwiY29udGV4dC1wcm9tcHQtaW5zZXJ0XCI6XCJjaGF0X2NvbnRleHQtcHJvbXB0LWluc2VydF9fVW1OSmlcIixcImNvbnRleHQtcHJvbXB0LXJvd1wiOlwiY2hhdF9jb250ZXh0LXByb21wdC1yb3dfXzNLYml4XCIsXCJjb250ZXh0LWRyYWdcIjpcImNoYXRfY29udGV4dC1kcmFnX19CWDdsaFwiLFwiY29udGV4dC1yb2xlXCI6XCJjaGF0X2NvbnRleHQtcm9sZV9fN19JUjlcIixcImNvbnRleHQtY29udGVudFwiOlwiY2hhdF9jb250ZXh0LWNvbnRlbnRfX3NOWFV5XCIsXCJjb250ZXh0LWRlbGV0ZS1idXR0b25cIjpcImNoYXRfY29udGV4dC1kZWxldGUtYnV0dG9uX19DX0JtU1wiLFwiY29udGV4dC1wcm9tcHQtYnV0dG9uXCI6XCJjaGF0X2NvbnRleHQtcHJvbXB0LWJ1dHRvbl9fQW9Qc3dcIixcIm1lbW9yeS1wcm9tcHRcIjpcImNoYXRfbWVtb3J5LXByb21wdF9fdk96Y25cIixcIm1lbW9yeS1wcm9tcHQtY29udGVudFwiOlwiY2hhdF9tZW1vcnktcHJvbXB0LWNvbnRlbnRfX2tVVktqXCIsXCJjbGVhci1jb250ZXh0XCI6XCJjaGF0X2NsZWFyLWNvbnRleHRfX2tlOEl3XCIsXCJjbGVhci1jb250ZXh0LXRpcHNcIjpcImNoYXRfY2xlYXItY29udGV4dC10aXBzX19MMUFfaVwiLFwiY2xlYXItY29udGV4dC1yZXZlcnQtYnRuXCI6XCJjaGF0X2NsZWFyLWNvbnRleHQtcmV2ZXJ0LWJ0bl9fX1duYTFcIixcImNoYXRcIjpcImNoYXRfY2hhdF9fWmViSGdcIixcImNoYXQtYm9keVwiOlwiY2hhdF9jaGF0LWJvZHlfX1FGdjV4XCIsXCJjaGF0LWJvZHktbWFpbi10aXRsZVwiOlwiY2hhdF9jaGF0LWJvZHktbWFpbi10aXRsZV9falVMNmhcIixcImNoYXQtYm9keS10aXRsZVwiOlwiY2hhdF9jaGF0LWJvZHktdGl0bGVfX2QySXRDXCIsXCJjaGF0LW1lc3NhZ2VcIjpcImNoYXRfY2hhdC1tZXNzYWdlX19kZzhyTFwiLFwiY2hhdC1tZXNzYWdlLXVzZXJcIjpcImNoYXRfY2hhdC1tZXNzYWdlLXVzZXJfX1p0VEVqXCIsXCJjaGF0LW1lc3NhZ2UtaGVhZGVyXCI6XCJjaGF0X2NoYXQtbWVzc2FnZS1oZWFkZXJfX0RueV9LXCIsXCJjaGF0LW1lc3NhZ2UtYWN0aW9uc1wiOlwiY2hhdF9jaGF0LW1lc3NhZ2UtYWN0aW9uc19fSDkwaGdcIixcImNoYXQtbW9kZWwtbmFtZVwiOlwiY2hhdF9jaGF0LW1vZGVsLW5hbWVfX1U0Z21SXCIsXCJjaGF0LW1lc3NhZ2UtY29udGFpbmVyXCI6XCJjaGF0X2NoYXQtbWVzc2FnZS1jb250YWluZXJfX09fWDhfXCIsXCJjaGF0LW1lc3NhZ2UtZWRpdFwiOlwiY2hhdF9jaGF0LW1lc3NhZ2UtZWRpdF9faDU4b2ZcIixcImNoYXQtbWVzc2FnZS1hdmF0YXJcIjpcImNoYXRfY2hhdC1tZXNzYWdlLWF2YXRhcl9fM1FlTXFcIixcImNoYXQtbWVzc2FnZS1zdGF0dXNcIjpcImNoYXRfY2hhdC1tZXNzYWdlLXN0YXR1c19femM5QWRcIixcImNoYXQtbWVzc2FnZS10b29sc1wiOlwiY2hhdF9jaGF0LW1lc3NhZ2UtdG9vbHNfX1lNVlZhXCIsXCJjaGF0LW1lc3NhZ2UtdG9vbFwiOlwiY2hhdF9jaGF0LW1lc3NhZ2UtdG9vbF9fUmpjNXFcIixcImNoYXQtbWVzc2FnZS1pdGVtXCI6XCJjaGF0X2NoYXQtbWVzc2FnZS1pdGVtX19kS3FNbFwiLFwiY2hhdC1tZXNzYWdlLWF1ZGlvXCI6XCJjaGF0X2NoYXQtbWVzc2FnZS1hdWRpb19fUmJ2d2NcIixcImNoYXQtbWVzc2FnZS1pdGVtLWltYWdlXCI6XCJjaGF0X2NoYXQtbWVzc2FnZS1pdGVtLWltYWdlX18yamJiMFwiLFwiY2hhdC1tZXNzYWdlLWl0ZW0taW1hZ2VzXCI6XCJjaGF0X2NoYXQtbWVzc2FnZS1pdGVtLWltYWdlc19fRXRFTTRcIixcImNoYXQtbWVzc2FnZS1pdGVtLWltYWdlLW11bHRpXCI6XCJjaGF0X2NoYXQtbWVzc2FnZS1pdGVtLWltYWdlLW11bHRpX19ET0l4WVwiLFwiY2hhdC1tZXNzYWdlLWFjdGlvbi1kYXRlXCI6XCJjaGF0X2NoYXQtbWVzc2FnZS1hY3Rpb24tZGF0ZV9fUnNYVG5cIixcImNoYXQtaW5wdXQtcGFuZWxcIjpcImNoYXRfY2hhdC1pbnB1dC1wYW5lbF9fck83Mm1cIixcInByb21wdC1oaW50c1wiOlwiY2hhdF9wcm9tcHQtaGludHNfX1ZUX09pXCIsXCJwcm9tcHQtaGludFwiOlwiY2hhdF9wcm9tcHQtaGludF9fMjYxNnRcIixcImhpbnQtdGl0bGVcIjpcImNoYXRfaGludC10aXRsZV9fRTUzWktcIixcImhpbnQtY29udGVudFwiOlwiY2hhdF9oaW50LWNvbnRlbnRfX3kyeWo0XCIsXCJwcm9tcHQtaGludC1zZWxlY3RlZFwiOlwiY2hhdF9wcm9tcHQtaGludC1zZWxlY3RlZF9fbzN2WWlcIixcImNoYXQtaW5wdXQtcGFuZWwtaW5uZXJcIjpcImNoYXRfY2hhdC1pbnB1dC1wYW5lbC1pbm5lcl9fX0lRSGlcIixcImNoYXQtaW5wdXQtcGFuZWwtaW5uZXItYXR0YWNoXCI6XCJjaGF0X2NoYXQtaW5wdXQtcGFuZWwtaW5uZXItYXR0YWNoX19tWmhldVwiLFwiY2hhdC1pbnB1dFwiOlwiY2hhdF9jaGF0LWlucHV0X19QUV9vRlwiLFwiY2hhdC1pbnB1dC1zZW5kXCI6XCJjaGF0X2NoYXQtaW5wdXQtc2VuZF9fR0ZRWm9cIixcInNob3J0Y3V0LWtleS1jb250YWluZXJcIjpcImNoYXRfc2hvcnRjdXQta2V5LWNvbnRhaW5lcl9fbllaVUpcIixcInNob3J0Y3V0LWtleS1ncmlkXCI6XCJjaGF0X3Nob3J0Y3V0LWtleS1ncmlkX19WbVVNR1wiLFwic2hvcnRjdXQta2V5LWl0ZW1cIjpcImNoYXRfc2hvcnRjdXQta2V5LWl0ZW1fX2RpUXFtXCIsXCJzaG9ydGN1dC1rZXktdGl0bGVcIjpcImNoYXRfc2hvcnRjdXQta2V5LXRpdGxlX19uYXVRVFwiLFwic2hvcnRjdXQta2V5LWtleXNcIjpcImNoYXRfc2hvcnRjdXQta2V5LWtleXNfX3ZXOFNOXCIsXCJzaG9ydGN1dC1rZXlcIjpcImNoYXRfc2hvcnRjdXQta2V5X19EdE1VUVwiLFwiY2hhdC1tYWluXCI6XCJjaGF0X2NoYXQtbWFpbl9faV9DcDJcIixcImNoYXQtYm9keS1jb250YWluZXJcIjpcImNoYXRfY2hhdC1ib2R5LWNvbnRhaW5lcl9fNlpaYWRcIixcImNoYXQtc2lkZS1wYW5lbFwiOlwiY2hhdF9jaGF0LXNpZGUtcGFuZWxfX1lyV05MXCIsXCJjaGF0LXNpZGUtcGFuZWwtc2hvd1wiOlwiY2hhdF9jaGF0LXNpZGUtcGFuZWwtc2hvd19fY2w1TUZcIn07XG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTczOTI4NDI2NzMzMVxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJEOi9OZXh0Q2hhdENEL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wicHVibGljUGF0aFwiOlwiL19uZXh0L1wiLFwiZXNNb2R1bGVcIjpmYWxzZSxcImxvY2Fsc1wiOnRydWV9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgXG4gICAgfVxuICBcbm1vZHVsZS5leHBvcnRzLl9fY2hlY2tzdW0gPSBcImJmMDM5NzkwYjIyOVwiXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/chat.module.scss\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/components/input-range.module.scss":
/*!************************************************!*\
!*** ./app/components/input-range.module.scss ***!
\************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("// extracted by mini-css-extract-plugin\nmodule.exports = {\"input-range\":\"input-range_input-range__SuxRd\"};\n if(true) {\n // 1739284270089\n var cssReload = __webpack_require__(/*! ./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js\")(module.id, {\"publicPath\":\"/_next/\",\"esModule\":false,\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n \nmodule.exports.__checksum = \"4f1d12d7de45\"\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL2lucHV0LXJhbmdlLm1vZHVsZS5zY3NzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0Esa0JBQWtCO0FBQ2xCLE9BQU8sSUFBVTtBQUNqQjtBQUNBLHNCQUFzQixtQkFBTyxDQUFDLHdNQUFtRyxjQUFjLHNEQUFzRDtBQUNyTSxNQUFNLFVBQVU7QUFDaEI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2FwcC9jb21wb25lbnRzL2lucHV0LXJhbmdlLm1vZHVsZS5zY3NzP2RlYmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcImlucHV0LXJhbmdlXCI6XCJpbnB1dC1yYW5nZV9pbnB1dC1yYW5nZV9fU3V4UmRcIn07XG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTczOTI4NDI3MDA4OVxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJEOi9OZXh0Q2hhdENEL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wicHVibGljUGF0aFwiOlwiL19uZXh0L1wiLFwiZXNNb2R1bGVcIjpmYWxzZSxcImxvY2Fsc1wiOnRydWV9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgXG4gICAgfVxuICBcbm1vZHVsZS5leHBvcnRzLl9fY2hlY2tzdW0gPSBcIjRmMWQxMmQ3ZGU0NVwiXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/input-range.module.scss\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/components/mask.module.scss":
/*!*****************************************!*\
!*** ./app/components/mask.module.scss ***!
\*****************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("// extracted by mini-css-extract-plugin\nmodule.exports = {\"mask-page\":\"mask_mask-page__ou14k\",\"mask-page-body\":\"mask_mask-page-body__kBXsJ\",\"mask-filter\":\"mask_mask-filter__OdpU3\",\"slide-in\":\"mask_slide-in__unpXH\",\"search-bar\":\"mask_search-bar__7_Msn\",\"mask-filter-lang\":\"mask_mask-filter-lang__mRxyv\",\"mask-create\":\"mask_mask-create__BjAzk\",\"mask-item\":\"mask_mask-item__dinia\",\"mask-header\":\"mask_mask-header__RXJXI\",\"mask-icon\":\"mask_mask-icon__wO1ER\",\"mask-title\":\"mask_mask-title__IDEbR\",\"mask-name\":\"mask_mask-name__77Rjh\",\"mask-info\":\"mask_mask-info__2gtiu\",\"mask-actions\":\"mask_mask-actions__rsWn_\",\"slide-in-from-top\":\"mask_slide-in-from-top__DOEYB\"};\n if(true) {\n // 1739284267295\n var cssReload = __webpack_require__(/*! ./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js\")(module.id, {\"publicPath\":\"/_next/\",\"esModule\":false,\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n \nmodule.exports.__checksum = \"6096c799f039\"\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL21hc2subW9kdWxlLnNjc3MiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxrQkFBa0I7QUFDbEIsT0FBTyxJQUFVO0FBQ2pCO0FBQ0Esc0JBQXNCLG1CQUFPLENBQUMsd01BQW1HLGNBQWMsc0RBQXNEO0FBQ3JNLE1BQU0sVUFBVTtBQUNoQjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2NvbXBvbmVudHMvbWFzay5tb2R1bGUuc2Nzcz8xZWJlIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJtYXNrLXBhZ2VcIjpcIm1hc2tfbWFzay1wYWdlX19vdTE0a1wiLFwibWFzay1wYWdlLWJvZHlcIjpcIm1hc2tfbWFzay1wYWdlLWJvZHlfX2tCWHNKXCIsXCJtYXNrLWZpbHRlclwiOlwibWFza19tYXNrLWZpbHRlcl9fT2RwVTNcIixcInNsaWRlLWluXCI6XCJtYXNrX3NsaWRlLWluX191bnBYSFwiLFwic2VhcmNoLWJhclwiOlwibWFza19zZWFyY2gtYmFyX183X01zblwiLFwibWFzay1maWx0ZXItbGFuZ1wiOlwibWFza19tYXNrLWZpbHRlci1sYW5nX19tUnh5dlwiLFwibWFzay1jcmVhdGVcIjpcIm1hc2tfbWFzay1jcmVhdGVfX0JqQXprXCIsXCJtYXNrLWl0ZW1cIjpcIm1hc2tfbWFzay1pdGVtX19kaW5pYVwiLFwibWFzay1oZWFkZXJcIjpcIm1hc2tfbWFzay1oZWFkZXJfX1JYSlhJXCIsXCJtYXNrLWljb25cIjpcIm1hc2tfbWFzay1pY29uX193TzFFUlwiLFwibWFzay10aXRsZVwiOlwibWFza19tYXNrLXRpdGxlX19JREViUlwiLFwibWFzay1uYW1lXCI6XCJtYXNrX21hc2stbmFtZV9fNzdSamhcIixcIm1hc2staW5mb1wiOlwibWFza19tYXNrLWluZm9fXzJndGl1XCIsXCJtYXNrLWFjdGlvbnNcIjpcIm1hc2tfbWFzay1hY3Rpb25zX19yc1duX1wiLFwic2xpZGUtaW4tZnJvbS10b3BcIjpcIm1hc2tfc2xpZGUtaW4tZnJvbS10b3BfX0RPRVlCXCJ9O1xuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE3MzkyODQyNjcyOTVcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiRDovTmV4dENoYXRDRC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcInB1YmxpY1BhdGhcIjpcIi9fbmV4dC9cIixcImVzTW9kdWxlXCI6ZmFsc2UsXCJsb2NhbHNcIjp0cnVlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIFxuICAgIH1cbiAgXG5tb2R1bGUuZXhwb3J0cy5fX2NoZWNrc3VtID0gXCI2MDk2Yzc5OWYwMzlcIlxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/mask.module.scss\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/components/model-config.module.scss":
/*!*************************************************!*\
!*** ./app/components/model-config.module.scss ***!
\*************************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("// extracted by mini-css-extract-plugin\nmodule.exports = {\"select-compress-model\":\"model-config_select-compress-model__exs2k\"};\n if(true) {\n // 1739284270078\n var cssReload = __webpack_require__(/*! ./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js\")(module.id, {\"publicPath\":\"/_next/\",\"esModule\":false,\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n \nmodule.exports.__checksum = \"a596e45dc93a\"\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL21vZGVsLWNvbmZpZy5tb2R1bGUuc2NzcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBLGtCQUFrQjtBQUNsQixPQUFPLElBQVU7QUFDakI7QUFDQSxzQkFBc0IsbUJBQU8sQ0FBQyx3TUFBbUcsY0FBYyxzREFBc0Q7QUFDck0sTUFBTSxVQUFVO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvY29tcG9uZW50cy9tb2RlbC1jb25maWcubW9kdWxlLnNjc3M/OTExYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbm1vZHVsZS5leHBvcnRzID0ge1wic2VsZWN0LWNvbXByZXNzLW1vZGVsXCI6XCJtb2RlbC1jb25maWdfc2VsZWN0LWNvbXByZXNzLW1vZGVsX19leHMya1wifTtcbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNzM5Mjg0MjcwMDc4XG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L05leHRDaGF0Q0Qvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanNcIikobW9kdWxlLmlkLCB7XCJwdWJsaWNQYXRoXCI6XCIvX25leHQvXCIsXCJlc01vZHVsZVwiOmZhbHNlLFwibG9jYWxzXCI6dHJ1ZX0pO1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGNzc1JlbG9hZCk7XG4gICAgICBcbiAgICB9XG4gIFxubW9kdWxlLmV4cG9ydHMuX19jaGVja3N1bSA9IFwiYTU5NmU0NWRjOTNhXCJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/model-config.module.scss\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/components/new-chat.module.scss":
/*!*********************************************!*\
!*** ./app/components/new-chat.module.scss ***!
\*********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("// extracted by mini-css-extract-plugin\nmodule.exports = {\"new-chat\":\"new-chat_new-chat__63RF3\",\"mask-header\":\"new-chat_mask-header__nBwht\",\"slide-in-from-top\":\"new-chat_slide-in-from-top__kKaCc\",\"mask-cards\":\"new-chat_mask-cards__W1FzL\",\"slide-in\":\"new-chat_slide-in__VIaHY\",\"mask-card\":\"new-chat_mask-card__EXvr1\",\"title\":\"new-chat_title__lfHL6\",\"sub-title\":\"new-chat_sub-title__qYtID\",\"actions\":\"new-chat_actions__ntcag\",\"skip\":\"new-chat_skip__js1_N\",\"masks\":\"new-chat_masks__ArNS9\",\"mask-row\":\"new-chat_mask-row__ZRTfV\",\"mask\":\"new-chat_mask__P5aBk\",\"mask-name\":\"new-chat_mask-name__AytPM\"};\n if(true) {\n // 1739284267314\n var cssReload = __webpack_require__(/*! ./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js\")(module.id, {\"publicPath\":\"/_next/\",\"esModule\":false,\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n \nmodule.exports.__checksum = \"f822d0ea9a4e\"\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL25ldy1jaGF0Lm1vZHVsZS5zY3NzIiwibWFwcGluZ3MiOiJBQUFBO0FBQ0Esa0JBQWtCO0FBQ2xCLE9BQU8sSUFBVTtBQUNqQjtBQUNBLHNCQUFzQixtQkFBTyxDQUFDLHdNQUFtRyxjQUFjLHNEQUFzRDtBQUNyTSxNQUFNLFVBQVU7QUFDaEI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2FwcC9jb21wb25lbnRzL25ldy1jaGF0Lm1vZHVsZS5zY3NzP2YxNjUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5tb2R1bGUuZXhwb3J0cyA9IHtcIm5ldy1jaGF0XCI6XCJuZXctY2hhdF9uZXctY2hhdF9fNjNSRjNcIixcIm1hc2staGVhZGVyXCI6XCJuZXctY2hhdF9tYXNrLWhlYWRlcl9fbkJ3aHRcIixcInNsaWRlLWluLWZyb20tdG9wXCI6XCJuZXctY2hhdF9zbGlkZS1pbi1mcm9tLXRvcF9fa0thQ2NcIixcIm1hc2stY2FyZHNcIjpcIm5ldy1jaGF0X21hc2stY2FyZHNfX1cxRnpMXCIsXCJzbGlkZS1pblwiOlwibmV3LWNoYXRfc2xpZGUtaW5fX1ZJYUhZXCIsXCJtYXNrLWNhcmRcIjpcIm5ldy1jaGF0X21hc2stY2FyZF9fRVh2cjFcIixcInRpdGxlXCI6XCJuZXctY2hhdF90aXRsZV9fbGZITDZcIixcInN1Yi10aXRsZVwiOlwibmV3LWNoYXRfc3ViLXRpdGxlX19xWXRJRFwiLFwiYWN0aW9uc1wiOlwibmV3LWNoYXRfYWN0aW9uc19fbnRjYWdcIixcInNraXBcIjpcIm5ldy1jaGF0X3NraXBfX2pzMV9OXCIsXCJtYXNrc1wiOlwibmV3LWNoYXRfbWFza3NfX0FyTlM5XCIsXCJtYXNrLXJvd1wiOlwibmV3LWNoYXRfbWFzay1yb3dfX1pSVGZWXCIsXCJtYXNrXCI6XCJuZXctY2hhdF9tYXNrX19QNWFCa1wiLFwibWFzay1uYW1lXCI6XCJuZXctY2hhdF9tYXNrLW5hbWVfX0F5dFBNXCJ9O1xuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE3MzkyODQyNjczMTRcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiRDovTmV4dENoYXRDRC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcInB1YmxpY1BhdGhcIjpcIi9fbmV4dC9cIixcImVzTW9kdWxlXCI6ZmFsc2UsXCJsb2NhbHNcIjp0cnVlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIFxuICAgIH1cbiAgXG5tb2R1bGUuZXhwb3J0cy5fX2NoZWNrc3VtID0gXCJmODIyZDBlYTlhNGVcIlxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/new-chat.module.scss\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/command.ts":
/*!************************!*\
!*** ./app/command.ts ***!
\************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ChatCommandPrefix: function() { return /* binding */ ChatCommandPrefix; },\n/* harmony export */ useChatCommand: function() { return /* binding */ useChatCommand; },\n/* harmony export */ useCommand: function() { return /* binding */ useCommand; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"(app-pages-browser)/./node_modules/react-router-dom/dist/index.js\");\n/* harmony import */ var _locales__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./locales */ \"(app-pages-browser)/./app/locales/index.ts\");\n\n\n\nfunction useCommand() {\n let commands = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n const [searchParams, setSearchParams] = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useSearchParams)();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{\n let shouldUpdate = false;\n searchParams.forEach((param, name)=>{\n const commandName = name;\n if (typeof commands[commandName] === \"function\") {\n commands[commandName](param);\n searchParams.delete(name);\n shouldUpdate = true;\n }\n });\n if (shouldUpdate) {\n setSearchParams(searchParams);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n searchParams,\n commands\n ]);\n}\n// Compatible with Chinese colon character \":\"\nconst ChatCommandPrefix = /^[::]/;\nfunction useChatCommand() {\n let commands = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n function extract(userInput) {\n const match = userInput.match(ChatCommandPrefix);\n if (match) {\n return userInput.slice(1);\n }\n return userInput;\n }\n function search(userInput) {\n const input = extract(userInput);\n const desc = _locales__WEBPACK_IMPORTED_MODULE_1__[\"default\"].Chat.Commands;\n return Object.keys(commands).filter((c)=>c.startsWith(input)).map((c)=>({\n title: desc[c],\n content: \":\" + c\n }));\n }\n function match(userInput) {\n const command = extract(userInput);\n const matched = typeof commands[command] === \"function\";\n return {\n matched,\n invoke: ()=>matched && commands[command](userInput)\n };\n }\n return {\n match,\n search\n };\n}\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21tYW5kLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBa0M7QUFDaUI7QUFDcEI7QUFXeEIsU0FBU0c7UUFBV0MsV0FBQUEsaUVBQXFCLENBQUM7SUFDL0MsTUFBTSxDQUFDQyxjQUFjQyxnQkFBZ0IsR0FBR0wsaUVBQWVBO0lBRXZERCxnREFBU0EsQ0FBQztRQUNSLElBQUlPLGVBQWU7UUFDbkJGLGFBQWFHLE9BQU8sQ0FBQyxDQUFDQyxPQUFPQztZQUMzQixNQUFNQyxjQUFjRDtZQUNwQixJQUFJLE9BQU9OLFFBQVEsQ0FBQ08sWUFBWSxLQUFLLFlBQVk7Z0JBQy9DUCxRQUFRLENBQUNPLFlBQVksQ0FBRUY7Z0JBQ3ZCSixhQUFhTyxNQUFNLENBQUNGO2dCQUNwQkgsZUFBZTtZQUNqQjtRQUNGO1FBRUEsSUFBSUEsY0FBYztZQUNoQkQsZ0JBQWdCRDtRQUNsQjtJQUNBLHVEQUF1RDtJQUN6RCxHQUFHO1FBQUNBO1FBQWNEO0tBQVM7QUFDN0I7QUFZQSw4Q0FBOEM7QUFDdkMsTUFBTVMsb0JBQW9CLFFBQVE7QUFFbEMsU0FBU0M7UUFBZVYsV0FBQUEsaUVBQXlCLENBQUM7SUFDdkQsU0FBU1csUUFBUUMsU0FBaUI7UUFDaEMsTUFBTUMsUUFBUUQsVUFBVUMsS0FBSyxDQUFDSjtRQUM5QixJQUFJSSxPQUFPO1lBQ1QsT0FBT0QsVUFBVUUsS0FBSyxDQUFDO1FBQ3pCO1FBQ0EsT0FBT0Y7SUFDVDtJQUVBLFNBQVNHLE9BQU9ILFNBQWlCO1FBQy9CLE1BQU1JLFFBQVFMLFFBQVFDO1FBQ3RCLE1BQU1LLE9BQU9uQixnREFBTUEsQ0FBQ29CLElBQUksQ0FBQ0MsUUFBUTtRQUNqQyxPQUFPQyxPQUFPQyxJQUFJLENBQUNyQixVQUNoQnNCLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxVQUFVLENBQUNSLFFBQzNCUyxHQUFHLENBQUMsQ0FBQ0YsSUFBTztnQkFDWEcsT0FBT1QsSUFBSSxDQUFDTSxFQUF3QjtnQkFDcENJLFNBQVMsTUFBTUo7WUFDakI7SUFDSjtJQUVBLFNBQVNWLE1BQU1ELFNBQWlCO1FBQzlCLE1BQU1nQixVQUFVakIsUUFBUUM7UUFDeEIsTUFBTWlCLFVBQVUsT0FBTzdCLFFBQVEsQ0FBQzRCLFFBQVEsS0FBSztRQUU3QyxPQUFPO1lBQ0xDO1lBQ0FDLFFBQVEsSUFBTUQsV0FBVzdCLFFBQVEsQ0FBQzRCLFFBQVEsQ0FBRWhCO1FBQzlDO0lBQ0Y7SUFFQSxPQUFPO1FBQUVDO1FBQU9FO0lBQU87QUFDekIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2NvbW1hbmQudHM/YzhhOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcclxuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi9sb2NhbGVzXCI7XHJcblxyXG50eXBlIENvbW1hbmQgPSAocGFyYW06IHN0cmluZykgPT4gdm9pZDtcclxuaW50ZXJmYWNlIENvbW1hbmRzIHtcclxuICBmaWxsPzogQ29tbWFuZDtcclxuICBzdWJtaXQ/OiBDb21tYW5kO1xyXG4gIG1hc2s/OiBDb21tYW5kO1xyXG4gIGNvZGU/OiBDb21tYW5kO1xyXG4gIHNldHRpbmdzPzogQ29tbWFuZDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbW1hbmQoY29tbWFuZHM6IENvbW1hbmRzID0ge30pIHtcclxuICBjb25zdCBbc2VhcmNoUGFyYW1zLCBzZXRTZWFyY2hQYXJhbXNdID0gdXNlU2VhcmNoUGFyYW1zKCk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBsZXQgc2hvdWxkVXBkYXRlID0gZmFsc2U7XHJcbiAgICBzZWFyY2hQYXJhbXMuZm9yRWFjaCgocGFyYW0sIG5hbWUpID0+IHtcclxuICAgICAgY29uc3QgY29tbWFuZE5hbWUgPSBuYW1lIGFzIGtleW9mIENvbW1hbmRzO1xyXG4gICAgICBpZiAodHlwZW9mIGNvbW1hbmRzW2NvbW1hbmROYW1lXSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgY29tbWFuZHNbY29tbWFuZE5hbWVdIShwYXJhbSk7XHJcbiAgICAgICAgc2VhcmNoUGFyYW1zLmRlbGV0ZShuYW1lKTtcclxuICAgICAgICBzaG91bGRVcGRhdGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoc2hvdWxkVXBkYXRlKSB7XHJcbiAgICAgIHNldFNlYXJjaFBhcmFtcyhzZWFyY2hQYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xyXG4gIH0sIFtzZWFyY2hQYXJhbXMsIGNvbW1hbmRzXSk7XHJcbn1cclxuXHJcbmludGVyZmFjZSBDaGF0Q29tbWFuZHMge1xyXG4gIG5ldz86IENvbW1hbmQ7XHJcbiAgbmV3bT86IENvbW1hbmQ7XHJcbiAgbmV4dD86IENvbW1hbmQ7XHJcbiAgcHJldj86IENvbW1hbmQ7XHJcbiAgY2xlYXI/OiBDb21tYW5kO1xyXG4gIGZvcms/OiBDb21tYW5kO1xyXG4gIGRlbD86IENvbW1hbmQ7XHJcbn1cclxuXHJcbi8vIENvbXBhdGlibGUgd2l0aCBDaGluZXNlIGNvbG9uIGNoYXJhY3RlciBcIu+8mlwiXHJcbmV4cG9ydCBjb25zdCBDaGF0Q29tbWFuZFByZWZpeCA9IC9eWzrvvJpdLztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB1c2VDaGF0Q29tbWFuZChjb21tYW5kczogQ2hhdENvbW1hbmRzID0ge30pIHtcclxuICBmdW5jdGlvbiBleHRyYWN0KHVzZXJJbnB1dDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBtYXRjaCA9IHVzZXJJbnB1dC5tYXRjaChDaGF0Q29tbWFuZFByZWZpeCk7XHJcbiAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgcmV0dXJuIHVzZXJJbnB1dC5zbGljZSgxKSBhcyBrZXlvZiBDaGF0Q29tbWFuZHM7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlcklucHV0IGFzIGtleW9mIENoYXRDb21tYW5kcztcclxuICB9XHJcblxyXG4gIGZ1bmN0aW9uIHNlYXJjaCh1c2VySW5wdXQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgaW5wdXQgPSBleHRyYWN0KHVzZXJJbnB1dCk7XHJcbiAgICBjb25zdCBkZXNjID0gTG9jYWxlLkNoYXQuQ29tbWFuZHM7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY29tbWFuZHMpXHJcbiAgICAgIC5maWx0ZXIoKGMpID0+IGMuc3RhcnRzV2l0aChpbnB1dCkpXHJcbiAgICAgIC5tYXAoKGMpID0+ICh7XHJcbiAgICAgICAgdGl0bGU6IGRlc2NbYyBhcyBrZXlvZiBDaGF0Q29tbWFuZHNdLFxyXG4gICAgICAgIGNvbnRlbnQ6IFwiOlwiICsgYyxcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gbWF0Y2godXNlcklucHV0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGNvbW1hbmQgPSBleHRyYWN0KHVzZXJJbnB1dCk7XHJcbiAgICBjb25zdCBtYXRjaGVkID0gdHlwZW9mIGNvbW1hbmRzW2NvbW1hbmRdID09PSBcImZ1bmN0aW9uXCI7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbWF0Y2hlZCxcclxuICAgICAgaW52b2tlOiAoKSA9PiBtYXRjaGVkICYmIGNvbW1hbmRzW2NvbW1hbmRdISh1c2VySW5wdXQpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJldHVybiB7IG1hdGNoLCBzZWFyY2ggfTtcclxufVxyXG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwidXNlU2VhcmNoUGFyYW1zIiwiTG9jYWxlIiwidXNlQ29tbWFuZCIsImNvbW1hbmRzIiwic2VhcmNoUGFyYW1zIiwic2V0U2VhcmNoUGFyYW1zIiwic2hvdWxkVXBkYXRlIiwiZm9yRWFjaCIsInBhcmFtIiwibmFtZSIsImNvbW1hbmROYW1lIiwiZGVsZXRlIiwiQ2hhdENvbW1hbmRQcmVmaXgiLCJ1c2VDaGF0Q29tbWFuZCIsImV4dHJhY3QiLCJ1c2VySW5wdXQiLCJtYXRjaCIsInNsaWNlIiwic2VhcmNoIiwiaW5wdXQiLCJkZXNjIiwiQ2hhdCIsIkNvbW1hbmRzIiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsImMiLCJzdGFydHNXaXRoIiwibWFwIiwidGl0bGUiLCJjb250ZW50IiwiY29tbWFuZCIsIm1hdGNoZWQiLCJpbnZva2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/command.ts\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/components/input-range.tsx":
/*!****************************************!*\
!*** ./app/components/input-range.tsx ***!
\****************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ InputRange: function() { return /* binding */ InputRange; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _input_range_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./input-range.module.scss */ \"(app-pages-browser)/./app/components/input-range.module.scss\");\n/* harmony import */ var _input_range_module_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_input_range_module_scss__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! clsx */ \"(app-pages-browser)/./node_modules/clsx/dist/clsx.mjs\");\n\n\n\n\nfunction InputRange(param) {\n let { onChange, title, value, className, min, max, step, aria } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_2__[\"default\"])((_input_range_module_scss__WEBPACK_IMPORTED_MODULE_3___default()[\"input-range\"]), className),\n children: [\n title || value,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": aria,\n type: \"range\",\n title: title,\n value: value,\n min: min,\n max: max,\n step: step,\n onChange: onChange\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\input-range.tsx\",\n lineNumber: 29,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\input-range.tsx\",\n lineNumber: 27,\n columnNumber: 5\n }, this);\n}\n_c = InputRange;\nvar _c;\n$RefreshReg$(_c, \"InputRange\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL2lucHV0LXJhbmdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUErQjtBQUNnQjtBQUN2QjtBQWFqQixTQUFTRyxXQUFXLEtBU1Q7UUFUUyxFQUN6QkMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLEtBQUssRUFDTEMsU0FBUyxFQUNUQyxHQUFHLEVBQ0hDLEdBQUcsRUFDSEMsSUFBSSxFQUNKQyxJQUFJLEVBQ1ksR0FUUztJQVV6QixxQkFDRSw4REFBQ0M7UUFBSUwsV0FBV0wsZ0RBQUlBLENBQUNELGdGQUFxQixFQUFFTTs7WUFDekNGLFNBQVNDOzBCQUNWLDhEQUFDTztnQkFDQ0MsY0FBWUg7Z0JBQ1pJLE1BQUs7Z0JBQ0xWLE9BQU9BO2dCQUNQQyxPQUFPQTtnQkFDUEUsS0FBS0E7Z0JBQ0xDLEtBQUtBO2dCQUNMQyxNQUFNQTtnQkFDTk4sVUFBVUE7Ozs7Ozs7Ozs7OztBQUlsQjtLQXpCZ0JEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2FwcC9jb21wb25lbnRzL2lucHV0LXJhbmdlLnRzeD83MDNkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2lucHV0LXJhbmdlLm1vZHVsZS5zY3NzXCI7XHJcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XHJcblxyXG5pbnRlcmZhY2UgSW5wdXRSYW5nZVByb3BzIHtcclxuICBvbkNoYW5nZTogUmVhY3QuQ2hhbmdlRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XHJcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xyXG4gIG1pbjogc3RyaW5nO1xyXG4gIG1heDogc3RyaW5nO1xyXG4gIHN0ZXA6IHN0cmluZztcclxuICBhcmlhOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBJbnB1dFJhbmdlKHtcclxuICBvbkNoYW5nZSxcclxuICB0aXRsZSxcclxuICB2YWx1ZSxcclxuICBjbGFzc05hbWUsXHJcbiAgbWluLFxyXG4gIG1heCxcclxuICBzdGVwLFxyXG4gIGFyaWEsXHJcbn06IElucHV0UmFuZ2VQcm9wcykge1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzeChzdHlsZXNbXCJpbnB1dC1yYW5nZVwiXSwgY2xhc3NOYW1lKX0+XHJcbiAgICAgIHt0aXRsZSB8fCB2YWx1ZX1cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgYXJpYS1sYWJlbD17YXJpYX1cclxuICAgICAgICB0eXBlPVwicmFuZ2VcIlxyXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cclxuICAgICAgICB2YWx1ZT17dmFsdWV9XHJcbiAgICAgICAgbWluPXttaW59XHJcbiAgICAgICAgbWF4PXttYXh9XHJcbiAgICAgICAgc3RlcD17c3RlcH1cclxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XHJcbiAgICAgID48L2lucHV0PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG4iXSwibmFtZXMiOlsiUmVhY3QiLCJzdHlsZXMiLCJjbHN4IiwiSW5wdXRSYW5nZSIsIm9uQ2hhbmdlIiwidGl0bGUiLCJ2YWx1ZSIsImNsYXNzTmFtZSIsIm1pbiIsIm1heCIsInN0ZXAiLCJhcmlhIiwiZGl2IiwiaW5wdXQiLCJhcmlhLWxhYmVsIiwidHlwZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/input-range.tsx\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/components/mask.tsx":
/*!*********************************!*\
!*** ./app/components/mask.tsx ***!
\*********************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ContextPrompts: function() { return /* binding */ ContextPrompts; },\n/* harmony export */ MaskAvatar: function() { return /* binding */ MaskAvatar; },\n/* harmony export */ MaskConfig: function() { return /* binding */ MaskConfig; },\n/* harmony export */ MaskPage: function() { return /* binding */ MaskPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button */ \"(app-pages-browser)/./app/components/button.tsx\");\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./error */ \"(app-pages-browser)/./app/components/error.tsx\");\n/* harmony import */ var _mask_module_scss__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./mask.module.scss */ \"(app-pages-browser)/./app/components/mask.module.scss\");\n/* harmony import */ var _mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_mask_module_scss__WEBPACK_IMPORTED_MODULE_27__);\n/* harmony import */ var _icons_download_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/download.svg */ \"(app-pages-browser)/./app/icons/download.svg\");\n/* harmony import */ var _icons_upload_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/upload.svg */ \"(app-pages-browser)/./app/icons/upload.svg\");\n/* harmony import */ var _icons_edit_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/edit.svg */ \"(app-pages-browser)/./app/icons/edit.svg\");\n/* harmony import */ var _icons_add_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/add.svg */ \"(app-pages-browser)/./app/icons/add.svg\");\n/* harmony import */ var _icons_close_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../icons/close.svg */ \"(app-pages-browser)/./app/icons/close.svg\");\n/* harmony import */ var _icons_delete_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../icons/delete.svg */ \"(app-pages-browser)/./app/icons/delete.svg\");\n/* harmony import */ var _icons_eye_svg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../icons/eye.svg */ \"(app-pages-browser)/./app/icons/eye.svg\");\n/* harmony import */ var _icons_copy_svg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../icons/copy.svg */ \"(app-pages-browser)/./app/icons/copy.svg\");\n/* harmony import */ var _icons_drag_svg__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../icons/drag.svg */ \"(app-pages-browser)/./app/icons/drag.svg\");\n/* harmony import */ var _store_mask__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../store/mask */ \"(app-pages-browser)/./app/store/mask.ts\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../store */ \"(app-pages-browser)/./app/store/index.ts\");\n/* harmony import */ var _client_api__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../client/api */ \"(app-pages-browser)/./app/client/api.ts\");\n/* harmony import */ var _ui_lib__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ui-lib */ \"(app-pages-browser)/./app/components/ui-lib.tsx\");\n/* harmony import */ var _emoji__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./emoji */ \"(app-pages-browser)/./app/components/emoji.tsx\");\n/* harmony import */ var _locales__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../locales */ \"(app-pages-browser)/./app/locales/index.ts\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! react-router-dom */ \"(app-pages-browser)/./node_modules/react-router/dist/index.js\");\n/* harmony import */ var _chat_module_scss__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./chat.module.scss */ \"(app-pages-browser)/./app/components/chat.module.scss\");\n/* harmony import */ var _chat_module_scss__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_chat_module_scss__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils */ \"(app-pages-browser)/./app/utils.ts\");\n/* harmony import */ var _model_config__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./model-config */ \"(app-pages-browser)/./app/components/model-config.tsx\");\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../constant */ \"(app-pages-browser)/./app/constant.ts\");\n/* harmony import */ var _masks__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../masks */ \"(app-pages-browser)/./app/masks/index.ts\");\n/* harmony import */ var _hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @hello-pangea/dnd */ \"(app-pages-browser)/./node_modules/@hello-pangea/dnd/dist/dnd.esm.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! clsx */ \"(app-pages-browser)/./node_modules/clsx/dist/clsx.mjs\");\n\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// drag and drop helper function\nfunction reorder(list, startIndex, endIndex) {\n const result = [\n ...list\n ];\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n return result;\n}\nfunction MaskAvatar(props) {\n return props.avatar !== _store_mask__WEBPACK_IMPORTED_MODULE_12__.DEFAULT_MASK_AVATAR ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_emoji__WEBPACK_IMPORTED_MODULE_16__.Avatar, {\n avatar: props.avatar\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 70,\n columnNumber: 5\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_emoji__WEBPACK_IMPORTED_MODULE_16__.Avatar, {\n model: props.model\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 72,\n columnNumber: 5\n }, this);\n}\n_c = MaskAvatar;\nfunction MaskConfig(props) {\n _s();\n const [showPicker, setShowPicker] = (0,react__WEBPACK_IMPORTED_MODULE_18__.useState)(false);\n const updateConfig = (updater)=>{\n if (props.readonly) return;\n const config = {\n ...props.mask.modelConfig\n };\n updater(config);\n props.updateMask((mask)=>{\n mask.modelConfig = config;\n // if user changed current session mask, it will disable auto sync\n mask.syncGlobalConfig = false;\n });\n };\n const copyMaskLink = ()=>{\n const maskLink = \"\".concat(location.protocol, \"//\").concat(location.host, \"/#\").concat(_constant__WEBPACK_IMPORTED_MODULE_21__.Path.NewChat, \"?mask=\").concat(props.mask.id);\n (0,_utils__WEBPACK_IMPORTED_MODULE_19__.copyToClipboard)(maskLink);\n };\n const globalConfig = (0,_store__WEBPACK_IMPORTED_MODULE_13__.useAppConfig)();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ContextPrompts, {\n context: props.mask.context,\n updateContext: (updater)=>{\n const context = props.mask.context.slice();\n updater(context);\n props.updateMask((mask)=>mask.context = context);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 106,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.List, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Avatar,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.Popover, {\n content: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_emoji__WEBPACK_IMPORTED_MODULE_16__.AvatarPicker, {\n onEmojiClick: (emoji)=>{\n props.updateMask((mask)=>mask.avatar = emoji);\n setShowPicker(false);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 119,\n columnNumber: 15\n }, void 0),\n open: showPicker,\n onClose: ()=>setShowPicker(false),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n tabIndex: 0,\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Avatar,\n onClick: ()=>setShowPicker(true),\n style: {\n cursor: \"pointer\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MaskAvatar, {\n avatar: props.mask.avatar,\n model: props.mask.modelConfig.model\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 135,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 129,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 117,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 116,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Name,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Name,\n type: \"text\",\n value: props.mask.name,\n onInput: (e)=>props.updateMask((mask)=>{\n mask.name = e.currentTarget.value;\n })\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 143,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 142,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.HideContext.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.HideContext.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.HideContext.Title,\n type: \"checkbox\",\n checked: props.mask.hideContext,\n onChange: (e)=>{\n props.updateMask((mask)=>{\n mask.hideContext = e.currentTarget.checked;\n });\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 158,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 154,\n columnNumber: 9\n }, this),\n globalConfig.enableArtifacts && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Artifacts.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Artifacts.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Artifacts.Title,\n type: \"checkbox\",\n checked: props.mask.enableArtifacts !== false,\n onChange: (e)=>{\n props.updateMask((mask)=>{\n mask.enableArtifacts = e.currentTarget.checked;\n });\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 175,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 171,\n columnNumber: 11\n }, this),\n globalConfig.enableCodeFold && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.CodeFold.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.CodeFold.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.CodeFold.Title,\n type: \"checkbox\",\n checked: props.mask.enableCodeFold !== false,\n onChange: (e)=>{\n props.updateMask((mask)=>{\n mask.enableCodeFold = e.currentTarget.checked;\n });\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 192,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 188,\n columnNumber: 11\n }, this),\n !props.shouldSyncFromGlobal ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Share.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Share.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Share.Title,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_copy_svg__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 212,\n columnNumber: 21\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Share.Action,\n onClick: copyMaskLink\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 210,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 206,\n columnNumber: 11\n }, this) : null,\n props.shouldSyncFromGlobal ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Sync.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Sync.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Sync.Title,\n type: \"checkbox\",\n checked: props.mask.syncGlobalConfig,\n onChange: async (e)=>{\n const checked = e.currentTarget.checked;\n if (checked && await (0,_ui_lib__WEBPACK_IMPORTED_MODULE_15__.showConfirm)(_locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Config.Sync.Confirm)) {\n props.updateMask((mask)=>{\n mask.syncGlobalConfig = checked;\n mask.modelConfig = {\n ...globalConfig.modelConfig\n };\n });\n } else if (!checked) {\n props.updateMask((mask)=>{\n mask.syncGlobalConfig = checked;\n });\n }\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 224,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 220,\n columnNumber: 11\n }, this) : null\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 115,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.List, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_model_config__WEBPACK_IMPORTED_MODULE_20__.ModelConfigList, {\n modelConfig: {\n ...props.mask.modelConfig\n },\n updateConfig: updateConfig\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 250,\n columnNumber: 9\n }, this),\n props.extraListItems\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 249,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n}\n_s(MaskConfig, \"zWQlH5qPxwPXp8Z8fkUei3p8ZlU=\", false, function() {\n return [\n _store__WEBPACK_IMPORTED_MODULE_13__.useAppConfig\n ];\n});\n_c1 = MaskConfig;\nfunction ContextPromptItem(props) {\n _s1();\n const [focusingInput, setFocusingInput] = (0,react__WEBPACK_IMPORTED_MODULE_18__.useState)(false);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_chat_module_scss__WEBPACK_IMPORTED_MODULE_24___default()[\"context-prompt-row\"]),\n children: [\n !focusingInput && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_chat_module_scss__WEBPACK_IMPORTED_MODULE_24___default()[\"context-drag\"]),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_drag_svg__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 273,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 272,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.Select, {\n value: props.prompt.role,\n className: (_chat_module_scss__WEBPACK_IMPORTED_MODULE_24___default()[\"context-role\"]),\n onChange: (e)=>props.update({\n ...props.prompt,\n role: e.target.value\n }),\n children: _client_api__WEBPACK_IMPORTED_MODULE_14__.ROLES.map((r)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: r,\n children: r\n }, r, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 286,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 275,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.Input, {\n value: (0,_utils__WEBPACK_IMPORTED_MODULE_19__.getMessageTextContent)(props.prompt),\n type: \"text\",\n className: (_chat_module_scss__WEBPACK_IMPORTED_MODULE_24___default()[\"context-content\"]),\n rows: focusingInput ? 5 : 1,\n onFocus: ()=>setFocusingInput(true),\n onBlur: ()=>{\n var // If the selection is not removed when the user loses focus, some\n // extensions like \"Translate\" will always display a floating bar\n _window_getSelection, _window;\n setFocusingInput(false);\n (_window = window) === null || _window === void 0 ? void 0 : (_window_getSelection = _window.getSelection()) === null || _window_getSelection === void 0 ? void 0 : _window_getSelection.removeAllRanges();\n },\n onInput: (e)=>props.update({\n ...props.prompt,\n content: e.currentTarget.value\n })\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 293,\n columnNumber: 7\n }, this),\n !focusingInput && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_delete_svg__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 314,\n columnNumber: 17\n }, void 0),\n className: (_chat_module_scss__WEBPACK_IMPORTED_MODULE_24___default()[\"context-delete-button\"]),\n onClick: ()=>props.remove(),\n bordered: true\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 313,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 269,\n columnNumber: 5\n }, this);\n}\n_s1(ContextPromptItem, \"lcYpCJi6tJvlK4V640/p0yrVHXs=\");\n_c2 = ContextPromptItem;\nfunction ContextPrompts(props) {\n const context = props.context;\n const addContextPrompt = (prompt, i)=>{\n props.updateContext((context)=>context.splice(i, 0, prompt));\n };\n const removeContextPrompt = (i)=>{\n props.updateContext((context)=>context.splice(i, 1));\n };\n const updateContextPrompt = (i, prompt)=>{\n props.updateContext((context)=>{\n const images = (0,_utils__WEBPACK_IMPORTED_MODULE_19__.getMessageImages)(context[i]);\n context[i] = prompt;\n if (images.length > 0) {\n const text = (0,_utils__WEBPACK_IMPORTED_MODULE_19__.getMessageTextContent)(context[i]);\n const newContext = [\n {\n type: \"text\",\n text\n }\n ];\n for (const img of images){\n newContext.push({\n type: \"image_url\",\n image_url: {\n url: img\n }\n });\n }\n context[i].content = newContext;\n }\n });\n };\n const onDragEnd = (result)=>{\n if (!result.destination) {\n return;\n }\n const newContext = reorder(context, result.source.index, result.destination.index);\n props.updateContext((context)=>{\n context.splice(0, context.length, ...newContext);\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_chat_module_scss__WEBPACK_IMPORTED_MODULE_24___default()[\"context-prompt\"]),\n style: {\n marginBottom: 20\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_25__.DragDropContext, {\n onDragEnd: onDragEnd,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_25__.Droppable, {\n droppableId: \"context-prompt-list\",\n children: (provided)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: provided.innerRef,\n ...provided.droppableProps,\n children: [\n context.map((c, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_hello_pangea_dnd__WEBPACK_IMPORTED_MODULE_25__.Draggable, {\n draggableId: c.id || i.toString(),\n index: i,\n children: (provided)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: provided.innerRef,\n ...provided.draggableProps,\n ...provided.dragHandleProps,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ContextPromptItem, {\n index: i,\n prompt: c,\n update: (prompt)=>updateContextPrompt(i, prompt),\n remove: ()=>removeContextPrompt(i)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 386,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_chat_module_scss__WEBPACK_IMPORTED_MODULE_24___default()[\"context-prompt-insert\"]),\n onClick: ()=>{\n addContextPrompt((0,_store__WEBPACK_IMPORTED_MODULE_13__.createMessage)({\n role: \"user\",\n content: \"\",\n date: new Date().toLocaleString()\n }), i + 1);\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_add_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 405,\n columnNumber: 27\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 392,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 381,\n columnNumber: 23\n }, this)\n }, c.id, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 375,\n columnNumber: 19\n }, this)),\n provided.placeholder\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 373,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 371,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 370,\n columnNumber: 9\n }, this),\n props.context.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_chat_module_scss__WEBPACK_IMPORTED_MODULE_24___default()[\"context-prompt-row\"]),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_add_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 420,\n columnNumber: 21\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Context.Add,\n bordered: true,\n className: (_chat_module_scss__WEBPACK_IMPORTED_MODULE_24___default()[\"context-prompt-button\"]),\n onClick: ()=>addContextPrompt((0,_store__WEBPACK_IMPORTED_MODULE_13__.createMessage)({\n role: \"user\",\n content: \"\",\n date: \"\"\n }), props.context.length)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 419,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 418,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 369,\n columnNumber: 7\n }, this)\n }, void 0, false);\n}\n_c3 = ContextPrompts;\nfunction MaskPage() {\n _s2();\n const navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_26__.useNavigate)();\n const maskStore = (0,_store_mask__WEBPACK_IMPORTED_MODULE_12__.useMaskStore)();\n const chatStore = (0,_store__WEBPACK_IMPORTED_MODULE_13__.useChatStore)();\n const filterLang = maskStore.language;\n const allMasks = maskStore.getAll().filter((m)=>!filterLang || m.lang === filterLang);\n const [searchMasks, setSearchMasks] = (0,react__WEBPACK_IMPORTED_MODULE_18__.useState)([]);\n const [searchText, setSearchText] = (0,react__WEBPACK_IMPORTED_MODULE_18__.useState)(\"\");\n const masks = searchText.length > 0 ? searchMasks : allMasks;\n // refactored already, now it accurate\n const onSearch = (text)=>{\n setSearchText(text);\n if (text.length > 0) {\n const result = allMasks.filter((m)=>m.name.toLowerCase().includes(text.toLowerCase()));\n setSearchMasks(result);\n } else {\n setSearchMasks(allMasks);\n }\n };\n const [editingMaskId, setEditingMaskId] = (0,react__WEBPACK_IMPORTED_MODULE_18__.useState)();\n var _maskStore_get;\n const editingMask = (_maskStore_get = maskStore.get(editingMaskId)) !== null && _maskStore_get !== void 0 ? _maskStore_get : _masks__WEBPACK_IMPORTED_MODULE_22__.BUILTIN_MASK_STORE.get(editingMaskId);\n const closeMaskModal = ()=>setEditingMaskId(undefined);\n const downloadAll = ()=>{\n (0,_utils__WEBPACK_IMPORTED_MODULE_19__.downloadAs)(JSON.stringify(masks.filter((v)=>!v.builtin)), _constant__WEBPACK_IMPORTED_MODULE_21__.FileName.Masks);\n };\n const importFromFile = ()=>{\n (0,_utils__WEBPACK_IMPORTED_MODULE_19__.readFromFile)().then((content)=>{\n try {\n const importMasks = JSON.parse(content);\n if (Array.isArray(importMasks)) {\n for (const mask of importMasks){\n if (mask.name) {\n maskStore.create(mask);\n }\n }\n return;\n }\n //if the content is a single mask.\n if (importMasks.name) {\n maskStore.create(importMasks);\n }\n } catch (e) {}\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_error__WEBPACK_IMPORTED_MODULE_2__.ErrorBoundary, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-page\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-header\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-header-title\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-header-main-title\",\n children: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Page.Title\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 505,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-header-submai-title\",\n children: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Page.SubTitle(allMasks.length)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 508,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 504,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-actions\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-action-button\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_download_svg__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 516,\n columnNumber: 23\n }, void 0),\n bordered: true,\n onClick: downloadAll,\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].UI.Export\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 515,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 514,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-action-button\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_upload_svg__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 524,\n columnNumber: 23\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].UI.Import,\n bordered: true,\n onClick: ()=>importFromFile()\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 523,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 522,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-action-button\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_close_svg__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 532,\n columnNumber: 23\n }, void 0),\n bordered: true,\n onClick: ()=>navigate(-1)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 531,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 530,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 513,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 503,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-page-body\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-filter\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"text\",\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"search-bar\"]),\n placeholder: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Page.Search,\n autoFocus: true,\n onInput: (e)=>onSearch(e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 542,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.Select, {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-filter-lang\"]),\n value: filterLang !== null && filterLang !== void 0 ? filterLang : _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Settings.Lang.All,\n onChange: (e)=>{\n const value = e.currentTarget.value;\n if (value === _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Settings.Lang.All) {\n maskStore.setLanguage(undefined);\n } else {\n maskStore.setLanguage(value);\n }\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Settings.Lang.All,\n children: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Settings.Lang.All\n }, \"all\", false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 561,\n columnNumber: 15\n }, this),\n _locales__WEBPACK_IMPORTED_MODULE_17__.AllLangs.map((lang)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: lang,\n children: _locales__WEBPACK_IMPORTED_MODULE_17__.ALL_LANG_OPTIONS[lang]\n }, lang, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 565,\n columnNumber: 17\n }, this))\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 549,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-create\"]),\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_add_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 573,\n columnNumber: 21\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Page.Create,\n bordered: true,\n onClick: ()=>{\n const createdMask = maskStore.create();\n setEditingMaskId(createdMask.id);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 571,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 541,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: masks.map((m)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-item\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-header\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-icon\"]),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MaskAvatar, {\n avatar: m.avatar,\n model: m.modelConfig.model\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 588,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 587,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-title\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-name\"]),\n children: m.name\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 591,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_23__[\"default\"])((_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-info\"]), \"one-line\"),\n children: \"\".concat(_locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Item.Info(m.context.length), \" / \").concat(_locales__WEBPACK_IMPORTED_MODULE_17__.ALL_LANG_OPTIONS[m.lang], \" / \").concat(m.modelConfig.model)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 592,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 590,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 586,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_mask_module_scss__WEBPACK_IMPORTED_MODULE_27___default()[\"mask-actions\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_add_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 601,\n columnNumber: 27\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Item.Chat,\n onClick: ()=>{\n chatStore.newSession(m);\n navigate(_constant__WEBPACK_IMPORTED_MODULE_21__.Path.Chat);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 600,\n columnNumber: 19\n }, this),\n m.builtin ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_eye_svg__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 610,\n columnNumber: 29\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Item.View,\n onClick: ()=>setEditingMaskId(m.id)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 609,\n columnNumber: 21\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_edit_svg__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 616,\n columnNumber: 29\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Item.Edit,\n onClick: ()=>setEditingMaskId(m.id)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 615,\n columnNumber: 21\n }, this),\n !m.builtin && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_delete_svg__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 623,\n columnNumber: 29\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Item.Delete,\n onClick: async ()=>{\n if (await (0,_ui_lib__WEBPACK_IMPORTED_MODULE_15__.showConfirm)(_locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.Item.DeleteConfirm)) {\n maskStore.delete(m.id);\n }\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 622,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 599,\n columnNumber: 17\n }, this)\n ]\n }, m.id, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 585,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 583,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 540,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 502,\n columnNumber: 7\n }, this),\n editingMask && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"modal-mask\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_15__.Modal, {\n title: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.EditModal.Title(editingMask === null || editingMask === void 0 ? void 0 : editingMask.builtin),\n onClose: closeMaskModal,\n actions: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_download_svg__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 646,\n columnNumber: 23\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.EditModal.Download,\n bordered: true,\n onClick: ()=>(0,_utils__WEBPACK_IMPORTED_MODULE_19__.downloadAs)(JSON.stringify(editingMask), \"\".concat(editingMask.name, \".json\"))\n }, \"export\", false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 645,\n columnNumber: 15\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_1__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_copy_svg__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 659,\n columnNumber: 23\n }, void 0),\n bordered: true,\n text: _locales__WEBPACK_IMPORTED_MODULE_17__[\"default\"].Mask.EditModal.Clone,\n onClick: ()=>{\n navigate(_constant__WEBPACK_IMPORTED_MODULE_21__.Path.Masks);\n maskStore.create(editingMask);\n setEditingMaskId(undefined);\n }\n }, \"copy\", false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 657,\n columnNumber: 15\n }, void 0)\n ],\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MaskConfig, {\n mask: editingMask,\n updateMask: (updater)=>maskStore.updateMask(editingMaskId, updater),\n readonly: editingMask.builtin\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 670,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 641,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 640,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\mask.tsx\",\n lineNumber: 501,\n columnNumber: 5\n }, this);\n}\n_s2(MaskPage, \"DOnUuKXnQN1qY8pHb/nH2l9udRM=\", false, function() {\n return [\n react_router_dom__WEBPACK_IMPORTED_MODULE_26__.useNavigate,\n _store_mask__WEBPACK_IMPORTED_MODULE_12__.useMaskStore,\n _store__WEBPACK_IMPORTED_MODULE_13__.useChatStore\n ];\n});\n_c4 = MaskPage;\nvar _c, _c1, _c2, _c3, _c4;\n$RefreshReg$(_c, \"MaskAvatar\");\n$RefreshReg$(_c1, \"MaskConfig\");\n$RefreshReg$(_c2, \"ContextPromptItem\");\n$RefreshReg$(_c3, \"ContextPrompts\");\n$RefreshReg$(_c4, \"MaskPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL21hc2sudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBc0M7QUFDRTtBQUVBO0FBRVM7QUFDSjtBQUNKO0FBQ0Y7QUFDSTtBQUNFO0FBQ047QUFDRTtBQUNBO0FBRStCO0FBUXREO0FBQ3VDO0FBU3ZDO0FBQzZCO0FBQ3VCO0FBQ3ZCO0FBRUo7QUFDVjtBQU1mO0FBRStCO0FBQ0o7QUFDQztBQU1uQjtBQUNzQjtBQUN6QjtBQUV4QixnQ0FBZ0M7QUFDaEMsU0FBUzhDLFFBQVdDLElBQVMsRUFBRUMsVUFBa0IsRUFBRUMsUUFBZ0I7SUFDakUsTUFBTUMsU0FBUztXQUFJSDtLQUFLO0lBQ3hCLE1BQU0sQ0FBQ0ksUUFBUSxHQUFHRCxPQUFPRSxNQUFNLENBQUNKLFlBQVk7SUFDNUNFLE9BQU9FLE1BQU0sQ0FBQ0gsVUFBVSxHQUFHRTtJQUMzQixPQUFPRDtBQUNUO0FBRU8sU0FBU0csV0FBV0MsS0FBNEM7SUFDckUsT0FBT0EsTUFBTUMsTUFBTSxLQUFLM0MsNkRBQW1CQSxpQkFDekMsOERBQUNhLDJDQUFNQTtRQUFDOEIsUUFBUUQsTUFBTUMsTUFBTTs7Ozs7NkJBRTVCLDhEQUFDOUIsMkNBQU1BO1FBQUMrQixPQUFPRixNQUFNRSxLQUFLOzs7Ozs7QUFFOUI7S0FOZ0JIO0FBUVQsU0FBU0ksV0FBV0gsS0FNMUI7O0lBQ0MsTUFBTSxDQUFDSSxZQUFZQyxjQUFjLEdBQUczQixnREFBUUEsQ0FBQztJQUU3QyxNQUFNNEIsZUFBZSxDQUFDQztRQUNwQixJQUFJUCxNQUFNUSxRQUFRLEVBQUU7UUFFcEIsTUFBTUMsU0FBUztZQUFFLEdBQUdULE1BQU1VLElBQUksQ0FBQ0MsV0FBVztRQUFDO1FBQzNDSixRQUFRRTtRQUNSVCxNQUFNWSxVQUFVLENBQUMsQ0FBQ0Y7WUFDaEJBLEtBQUtDLFdBQVcsR0FBR0Y7WUFDbkIsa0VBQWtFO1lBQ2xFQyxL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QUFXQTtRQUVWakIsc0RBQVlBO1FBQ1pHLGlEQUFZQTs7O01BSmhCNkoiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2NvbXBvbmVudHMvbWFzay50c3g/NmIzOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSBcIi4vYnV0dG9uXCI7XHJcbmltcG9ydCB7IEVycm9yQm91bmRhcnkgfSBmcm9tIFwiLi9lcnJvclwiO1xyXG5cclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9tYXNrLm1vZHVsZS5zY3NzXCI7XHJcblxyXG5pbXBvcnQgRG93bmxvYWRJY29uIGZyb20gXCIuLi9pY29ucy9kb3dubG9hZC5zdmdcIjtcclxuaW1wb3J0IFVwbG9hZEljb24gZnJvbSBcIi4uL2ljb25zL3VwbG9hZC5zdmdcIjtcclxuaW1wb3J0IEVkaXRJY29uIGZyb20gXCIuLi9pY29ucy9lZGl0LnN2Z1wiO1xyXG5pbXBvcnQgQWRkSWNvbiBmcm9tIFwiLi4vaWNvbnMvYWRkLnN2Z1wiO1xyXG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCIuLi9pY29ucy9jbG9zZS5zdmdcIjtcclxuaW1wb3J0IERlbGV0ZUljb24gZnJvbSBcIi4uL2ljb25zL2RlbGV0ZS5zdmdcIjtcclxuaW1wb3J0IEV5ZUljb24gZnJvbSBcIi4uL2ljb25zL2V5ZS5zdmdcIjtcclxuaW1wb3J0IENvcHlJY29uIGZyb20gXCIuLi9pY29ucy9jb3B5LnN2Z1wiO1xyXG5pbXBvcnQgRHJhZ0ljb24gZnJvbSBcIi4uL2ljb25zL2RyYWcuc3ZnXCI7XHJcblxyXG5pbXBvcnQgeyBERUZBVUxUX01BU0tfQVZBVEFSLCBNYXNrLCB1c2VNYXNrU3RvcmUgfSBmcm9tIFwiLi4vc3RvcmUvbWFza1wiO1xyXG5pbXBvcnQge1xyXG4gIENoYXRNZXNzYWdlLFxyXG4gIGNyZWF0ZU1lc3NhZ2UsXHJcbiAgTW9kZWxDb25maWcsXHJcbiAgTW9kZWxUeXBlLFxyXG4gIHVzZUFwcENvbmZpZyxcclxuICB1c2VDaGF0U3RvcmUsXHJcbn0gZnJvbSBcIi4uL3N0b3JlXCI7XHJcbmltcG9ydCB7IE11bHRpbW9kYWxDb250ZW50LCBST0xFUyB9IGZyb20gXCIuLi9jbGllbnQvYXBpXCI7XHJcbmltcG9ydCB7XHJcbiAgSW5wdXQsXHJcbiAgTGlzdCxcclxuICBMaXN0SXRlbSxcclxuICBNb2RhbCxcclxuICBQb3BvdmVyLFxyXG4gIFNlbGVjdCxcclxuICBzaG93Q29uZmlybSxcclxufSBmcm9tIFwiLi91aS1saWJcIjtcclxuaW1wb3J0IHsgQXZhdGFyLCBBdmF0YXJQaWNrZXIgfSBmcm9tIFwiLi9lbW9qaVwiO1xyXG5pbXBvcnQgTG9jYWxlLCB7IEFsbExhbmdzLCBBTExfTEFOR19PUFRJT05TLCBMYW5nIH0gZnJvbSBcIi4uL2xvY2FsZXNcIjtcclxuaW1wb3J0IHsgdXNlTmF2aWdhdGUgfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xyXG5cclxuaW1wb3J0IGNoYXRTdHlsZSBmcm9tIFwiLi9jaGF0Lm1vZHVsZS5zY3NzXCI7XHJcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7XHJcbiAgY29weVRvQ2xpcGJvYXJkLFxyXG4gIGRvd25sb2FkQXMsXHJcbiAgZ2V0TWVzc2FnZUltYWdlcyxcclxuICByZWFkRnJvbUZpbGUsXHJcbn0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7IFVwZGF0ZXIgfSBmcm9tIFwiLi4vdHlwaW5nXCI7XHJcbmltcG9ydCB7IE1vZGVsQ29uZmlnTGlzdCB9IGZyb20gXCIuL21vZGVsLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBGaWxlTmFtZSwgUGF0aCB9IGZyb20gXCIuLi9jb25zdGFudFwiO1xyXG5pbXBvcnQgeyBCVUlMVElOX01BU0tfU1RPUkUgfSBmcm9tIFwiLi4vbWFza3NcIjtcclxuaW1wb3J0IHtcclxuICBEcmFnRHJvcENvbnRleHQsXHJcbiAgRHJvcHBhYmxlLFxyXG4gIERyYWdnYWJsZSxcclxuICBPbkRyYWdFbmRSZXNwb25kZXIsXHJcbn0gZnJvbSBcIkBoZWxsby1wYW5nZWEvZG5kXCI7XHJcbmltcG9ydCB7IGdldE1lc3NhZ2VUZXh0Q29udGVudCB9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xyXG5cclxuLy8gZHJhZyBhbmQgZHJvcCBoZWxwZXIgZnVuY3Rpb25cclxuZnVuY3Rpb24gcmVvcmRlcjxUPihsaXN0OiBUW10sIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlcik6IFRbXSB7XHJcbiAgY29uc3QgcmVzdWx0ID0gWy4uLmxpc3RdO1xyXG4gIGNvbnN0IFtyZW1vdmVkXSA9IHJlc3VsdC5zcGxpY2Uoc3RhcnRJbmRleCwgMSk7XHJcbiAgcmVzdWx0LnNwbGljZShlbmRJbmRleCwgMCwgcmVtb3ZlZCk7XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1hc2tBdmF0YXIocHJvcHM6IHsgYXZhdGFyOiBzdHJpbmc7IG1vZGVsPzogTW9kZWxUeXBlIH0pIHtcclxuICByZXR1cm4gcHJvcHMuYXZhdGFyICE9PSBERUZBVUxUX01BU0tfQVZBVEFSID8gKFxyXG4gICAgPEF2YXRhciBhdmF0YXI9e3Byb3BzLmF2YXRhcn0gLz5cclxuICApIDogKFxyXG4gICAgPEF2YXRhciBtb2RlbD17cHJvcHMubW9kZWx9IC8+XHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1hc2tDb25maWcocHJvcHM6IHtcclxuICBtYXNrOiBNYXNrO1xyXG4gIHVwZGF0ZU1hc2s6IFVwZGF0ZXI8TWFzaz47XHJcbiAgZXh0cmFMaXN0SXRlbXM/OiBKU1guRWxlbWVudDtcclxuICByZWFkb25seT86IGJvb2xlYW47XHJcbiAgc2hvdWxkU3luY0Zyb21HbG9iYWw/OiBib29sZWFuO1xyXG59KSB7XHJcbiAgY29uc3QgW3Nob3dQaWNrZXIsIHNldFNob3dQaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICBjb25zdCB1cGRhdGVDb25maWcgPSAodXBkYXRlcjogKGNvbmZpZzogTW9kZWxDb25maWcpID0+IHZvaWQpID0+IHtcclxuICAgIGlmIChwcm9wcy5yZWFkb25seSkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbmZpZyA9IHsgLi4ucHJvcHMubWFzay5tb2RlbENvbmZpZyB9O1xyXG4gICAgdXBkYXRlcihjb25maWcpO1xyXG4gICAgcHJvcHMudXBkYXRlTWFzaygobWFzaykgPT4ge1xyXG4gICAgICBtYXNrLm1vZGVsQ29uZmlnID0gY29uZmlnO1xyXG4gICAgICAvLyBpZiB1c2VyIGNoYW5nZWQgY3VycmVudCBzZXNzaW9uIG1hc2ssIGl0IHdpbGwgZGlzYWJsZSBhdXRvIHN5bmNcclxuICAgICAgbWFzay5zeW5jR2xvYmFsQ29uZmlnID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBjb25zdCBjb3B5TWFza0xpbmsgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBtYXNrTGluayA9IGAke2xvY2F0aW9uLnByb3RvY29sfS8vJHtsb2NhdGlvbi5ob3N0fS8jJHtQYXRoLk5ld0NoYXR9P21hc2s9JHtwcm9wcy5tYXNrLmlkfWA7XHJcbiAgICBjb3B5VG9DbGlwYm9hcmQobWFza0xpbmspO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IGdsb2JhbENvbmZpZyA9IHVzZUFwcENvbmZpZygpO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPD5cclxuICAgICAgPENvbnRleHRQcm9tcHRzXHJcbiAgICAgICAgY29udGV4dD17cHJvcHMubWFzay5jb250ZXh0fVxyXG4gICAgICAgIHVwZGF0ZUNvbnRleHQ9eyh1cGRhdGVyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gcHJvcHMubWFzay5jb250ZXh0LnNsaWNlKCk7XHJcbiAgICAgICAgICB1cGRhdGVyKGNvbnRleHQpO1xyXG4gICAgICAgICAgcHJvcHMudXBkYXRlTWFzaygobWFzaykgPT4gKG1hc2suY29udGV4dCA9IGNvbnRleHQpKTtcclxuICAgICAgICB9fVxyXG4gICAgICAvPlxyXG5cclxuICAgICAgPExpc3Q+XHJcbiAgICAgICAgPExpc3RJdGVtIHRpdGxlPXtMb2NhbGUuTWFzay5Db25maWcuQXZhdGFyfT5cclxuICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgIGNvbnRlbnQ9e1xyXG4gICAgICAgICAgICAgIDxBdmF0YXJQaWNrZXJcclxuICAgICAgICAgICAgICAgIG9uRW1vamlDbGljaz17KGVtb2ppKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHByb3BzLnVwZGF0ZU1hc2soKG1hc2spID0+IChtYXNrLmF2YXRhciA9IGVtb2ppKSk7XHJcbiAgICAgICAgICAgICAgICAgIHNldFNob3dQaWNrZXIoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA+PC9BdmF0YXJQaWNrZXI+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3Blbj17c2hvd1BpY2tlcn1cclxuICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd1BpY2tlcihmYWxzZSl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICB0YWJJbmRleD17MH1cclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuTWFzay5Db25maWcuQXZhdGFyfVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldFNob3dQaWNrZXIodHJ1ZSl9XHJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPE1hc2tBdmF0YXJcclxuICAgICAgICAgICAgICAgIGF2YXRhcj17cHJvcHMubWFzay5hdmF0YXJ9XHJcbiAgICAgICAgICAgICAgICBtb2RlbD17cHJvcHMubWFzay5tb2RlbENvbmZpZy5tb2RlbH1cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICAgIDxMaXN0SXRlbSB0aXRsZT17TG9jYWxlLk1hc2suQ29uZmlnLk5hbWV9PlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5NYXNrLkNvbmZpZy5OYW1lfVxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIHZhbHVlPXtwcm9wcy5tYXNrLm5hbWV9XHJcbiAgICAgICAgICAgIG9uSW5wdXQ9eyhlKSA9PlxyXG4gICAgICAgICAgICAgIHByb3BzLnVwZGF0ZU1hc2soKG1hc2spID0+IHtcclxuICAgICAgICAgICAgICAgIG1hc2submFtZSA9IGUuY3VycmVudFRhcmdldC52YWx1ZTtcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgICAgdGl0bGU9e0xvY2FsZS5NYXNrLkNvbmZpZy5IaWRlQ29udGV4dC5UaXRsZX1cclxuICAgICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuTWFzay5Db25maWcuSGlkZUNvbnRleHQuU3ViVGl0bGV9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5NYXNrLkNvbmZpZy5IaWRlQ29udGV4dC5UaXRsZX1cclxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgY2hlY2tlZD17cHJvcHMubWFzay5oaWRlQ29udGV4dH1cclxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcHJvcHMudXBkYXRlTWFzaygobWFzaykgPT4ge1xyXG4gICAgICAgICAgICAgICAgbWFzay5oaWRlQ29udGV4dCA9IGUuY3VycmVudFRhcmdldC5jaGVja2VkO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPjwvaW5wdXQ+XHJcbiAgICAgICAgPC9MaXN0SXRlbT5cclxuXHJcbiAgICAgICAge2dsb2JhbENvbmZpZy5lbmFibGVBcnRpZmFjdHMgJiYgKFxyXG4gICAgICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgICAgIHRpdGxlPXtMb2NhbGUuTWFzay5Db25maWcuQXJ0aWZhY3RzLlRpdGxlfVxyXG4gICAgICAgICAgICBzdWJUaXRsZT17TG9jYWxlLk1hc2suQ29uZmlnLkFydGlmYWN0cy5TdWJUaXRsZX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLk1hc2suQ29uZmlnLkFydGlmYWN0cy5UaXRsZX1cclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGNoZWNrZWQ9e3Byb3BzLm1hc2suZW5hYmxlQXJ0aWZhY3RzICE9PSBmYWxzZX1cclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHByb3BzLnVwZGF0ZU1hc2soKG1hc2spID0+IHtcclxuICAgICAgICAgICAgICAgICAgbWFzay5lbmFibGVBcnRpZmFjdHMgPSBlLmN1cnJlbnRUYXJnZXQuY2hlY2tlZDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID48L2lucHV0PlxyXG4gICAgICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgICApfVxyXG4gICAgICAgIHtnbG9iYWxDb25maWcuZW5hYmxlQ29kZUZvbGQgJiYgKFxyXG4gICAgICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgICAgIHRpdGxlPXtMb2NhbGUuTWFzay5Db25maWcuQ29kZUZvbGQuVGl0bGV9XHJcbiAgICAgICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuTWFzay5Db25maWcuQ29kZUZvbGQuU3ViVGl0bGV9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5NYXNrLkNvbmZpZy5Db2RlRm9sZC5UaXRsZX1cclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGNoZWNrZWQ9e3Byb3BzLm1hc2suZW5hYmxlQ29kZUZvbGQgIT09IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcHJvcHMudXBkYXRlTWFzaygobWFzaykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBtYXNrLmVuYWJsZUNvZGVGb2xkID0gZS5jdXJyZW50VGFyZ2V0LmNoZWNrZWQ7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgICAgKX1cclxuXHJcbiAgICAgICAgeyFwcm9wcy5zaG91bGRTeW5jRnJvbUdsb2JhbCA/IChcclxuICAgICAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgICAgICB0aXRsZT17TG9jYWxlLk1hc2suQ29uZmlnLlNoYXJlLlRpdGxlfVxyXG4gICAgICAgICAgICBzdWJUaXRsZT17TG9jYWxlLk1hc2suQ29uZmlnLlNoYXJlLlN1YlRpdGxlfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgICAgIGFyaWE9e0xvY2FsZS5NYXNrLkNvbmZpZy5TaGFyZS5UaXRsZX1cclxuICAgICAgICAgICAgICBpY29uPXs8Q29weUljb24gLz59XHJcbiAgICAgICAgICAgICAgdGV4dD17TG9jYWxlLk1hc2suQ29uZmlnLlNoYXJlLkFjdGlvbn1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXtjb3B5TWFza0xpbmt9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICAgICkgOiBudWxsfVxyXG5cclxuICAgICAgICB7cHJvcHMuc2hvdWxkU3luY0Zyb21HbG9iYWwgPyAoXHJcbiAgICAgICAgICA8TGlzdEl0ZW1cclxuICAgICAgICAgICAgdGl0bGU9e0xvY2FsZS5NYXNrLkNvbmZpZy5TeW5jLlRpdGxlfVxyXG4gICAgICAgICAgICBzdWJUaXRsZT17TG9jYWxlLk1hc2suQ29uZmlnLlN5bmMuU3ViVGl0bGV9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5NYXNrLkNvbmZpZy5TeW5jLlRpdGxlfVxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgY2hlY2tlZD17cHJvcHMubWFzay5zeW5jR2xvYmFsQ29uZmlnfVxyXG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXthc3luYyAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tlZCA9IGUuY3VycmVudFRhcmdldC5jaGVja2VkO1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICBjaGVja2VkICYmXHJcbiAgICAgICAgICAgICAgICAgIChhd2FpdCBzaG93Q29uZmlybShMb2NhbGUuTWFzay5Db25maWcuU3luYy5Db25maXJtKSlcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICBwcm9wcy51cGRhdGVNYXNrKChtYXNrKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFzay5zeW5jR2xvYmFsQ29uZmlnID0gY2hlY2tlZDtcclxuICAgICAgICAgICAgICAgICAgICBtYXNrLm1vZGVsQ29uZmlnID0geyAuLi5nbG9iYWxDb25maWcubW9kZWxDb25maWcgfTtcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFjaGVja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHByb3BzLnVwZGF0ZU1hc2soKG1hc2spID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBtYXNrLnN5bmNHbG9iYWxDb25maWcgPSBjaGVja2VkO1xyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgIDwvTGlzdD5cclxuXHJcbiAgICAgIDxMaXN0PlxyXG4gICAgICAgIDxNb2RlbENvbmZpZ0xpc3RcclxuICAgICAgICAgIG1vZGVsQ29uZmlnPXt7IC4uLnByb3BzLm1hc2subW9kZWxDb25maWcgfX1cclxuICAgICAgICAgIHVwZGF0ZUNvbmZpZz17dXBkYXRlQ29uZmlnfVxyXG4gICAgICAgIC8+XHJcbiAgICAgICAge3Byb3BzLmV4dHJhTGlzdEl0ZW1zfVxyXG4gICAgICA8L0xpc3Q+XHJcbiAgICA8Lz5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBDb250ZXh0UHJvbXB0SXRlbShwcm9wczoge1xyXG4gIGluZGV4OiBudW1iZXI7XHJcbiAgcHJvbXB0OiBDaGF0TWVzc2FnZTtcclxuICB1cGRhdGU6IChwcm9tcHQ6IENoYXRNZXNzYWdlKSA9PiB2b2lkO1xyXG4gIHJlbW92ZTogKCkgPT4gdm9pZDtcclxufSkge1xyXG4gIGNvbnN0IFtmb2N1c2luZ0lucHV0LCBzZXRGb2N1c2luZ0lucHV0XSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPXtjaGF0U3R5bGVbXCJjb250ZXh0LXByb21wdC1yb3dcIl19PlxyXG4gICAgICB7IWZvY3VzaW5nSW5wdXQgJiYgKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2hhdFN0eWxlW1wiY29udGV4dC1kcmFnXCJdfT5cclxuICAgICAgICAgICAgPERyYWdJY29uIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgICAgdmFsdWU9e3Byb3BzLnByb21wdC5yb2xlfVxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NoYXRTdHlsZVtcImNvbnRleHQtcm9sZVwiXX1cclxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxyXG4gICAgICAgICAgICAgIHByb3BzLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAuLi5wcm9wcy5wcm9tcHQsXHJcbiAgICAgICAgICAgICAgICByb2xlOiBlLnRhcmdldC52YWx1ZSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7Uk9MRVMubWFwKChyKSA9PiAoXHJcbiAgICAgICAgICAgICAgPG9wdGlvbiBrZXk9e3J9IHZhbHVlPXtyfT5cclxuICAgICAgICAgICAgICAgIHtyfVxyXG4gICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICApKX1cclxuICAgICAgICAgIDwvU2VsZWN0PlxyXG4gICAgICAgIDwvPlxyXG4gICAgICApfVxyXG4gICAgICA8SW5wdXRcclxuICAgICAgICB2YWx1ZT17Z2V0TWVzc2FnZVRleHRDb250ZW50KHByb3BzLnByb21wdCl9XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2hhdFN0eWxlW1wiY29udGV4dC1jb250ZW50XCJdfVxyXG4gICAgICAgIHJvd3M9e2ZvY3VzaW5nSW5wdXQgPyA1IDogMX1cclxuICAgICAgICBvbkZvY3VzPXsoKSA9PiBzZXRGb2N1c2luZ0lucHV0KHRydWUpfVxyXG4gICAgICAgIG9uQmx1cj17KCkgPT4ge1xyXG4gICAgICAgICAgc2V0Rm9jdXNpbmdJbnB1dChmYWxzZSk7XHJcbiAgICAgICAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIGlzIG5vdCByZW1vdmVkIHdoZW4gdGhlIHVzZXIgbG9zZXMgZm9jdXMsIHNvbWVcclxuICAgICAgICAgIC8vIGV4dGVuc2lvbnMgbGlrZSBcIlRyYW5zbGF0ZVwiIHdpbGwgYWx3YXlzIGRpc3BsYXkgYSBmbG9hdGluZyBiYXJcclxuICAgICAgICAgIHdpbmRvdz8uZ2V0U2VsZWN0aW9uKCk/LnJlbW92ZUFsbFJhbmdlcygpO1xyXG4gICAgICAgIH19XHJcbiAgICAgICAgb25JbnB1dD17KGUpID0+XHJcbiAgICAgICAgICBwcm9wcy51cGRhdGUoe1xyXG4gICAgICAgICAgICAuLi5wcm9wcy5wcm9tcHQsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGUuY3VycmVudFRhcmdldC52YWx1ZSBhcyBhbnksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgLz5cclxuICAgICAgeyFmb2N1c2luZ0lucHV0ICYmIChcclxuICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgaWNvbj17PERlbGV0ZUljb24gLz59XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NoYXRTdHlsZVtcImNvbnRleHQtZGVsZXRlLWJ1dHRvblwiXX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHByb3BzLnJlbW92ZSgpfVxyXG4gICAgICAgICAgYm9yZGVyZWRcclxuICAgICAgICAvPlxyXG4gICAgICApfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENvbnRleHRQcm9tcHRzKHByb3BzOiB7XHJcbiAgY29udGV4dDogQ2hhdE1lc3NhZ2VbXTtcclxuICB1cGRhdGVDb250ZXh0OiAodXBkYXRlcjogKGNvbnRleHQ6IENoYXRNZXNzYWdlW10pID0+IHZvaWQpID0+IHZvaWQ7XHJcbn0pIHtcclxuICBjb25zdCBjb250ZXh0ID0gcHJvcHMuY29udGV4dDtcclxuXHJcbiAgY29uc3QgYWRkQ29udGV4dFByb21wdCA9IChwcm9tcHQ6IENoYXRNZXNzYWdlLCBpOiBudW1iZXIpID0+IHtcclxuICAgIHByb3BzLnVwZGF0ZUNvbnRleHQoKGNvbnRleHQpID0+IGNvbnRleHQuc3BsaWNlKGksIDAsIHByb21wdCkpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHJlbW92ZUNvbnRleHRQcm9tcHQgPSAoaTogbnVtYmVyKSA9PiB7XHJcbiAgICBwcm9wcy51cGRhdGVDb250ZXh0KChjb250ZXh0KSA9PiBjb250ZXh0LnNwbGljZShpLCAxKSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgdXBkYXRlQ29udGV4dFByb21wdCA9IChpOiBudW1iZXIsIHByb21wdDogQ2hhdE1lc3NhZ2UpID0+IHtcclxuICAgIHByb3BzLnVwZGF0ZUNvbnRleHQoKGNvbnRleHQpID0+IHtcclxuICAgICAgY29uc3QgaW1hZ2VzID0gZ2V0TWVzc2FnZUltYWdlcyhjb250ZXh0W2ldKTtcclxuICAgICAgY29udGV4dFtpXSA9IHByb21wdDtcclxuICAgICAgaWYgKGltYWdlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgdGV4dCA9IGdldE1lc3NhZ2VUZXh0Q29udGVudChjb250ZXh0W2ldKTtcclxuICAgICAgICBjb25zdCBuZXdDb250ZXh0OiBNdWx0aW1vZGFsQ29udGVudFtdID0gW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQgfV07XHJcbiAgICAgICAgZm9yIChjb25zdCBpbWcgb2YgaW1hZ2VzKSB7XHJcbiAgICAgICAgICBuZXdDb250ZXh0LnB1c2goeyB0eXBlOiBcImltYWdlX3VybFwiLCBpbWFnZV91cmw6IHsgdXJsOiBpbWcgfSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dFtpXS5jb250ZW50ID0gbmV3Q29udGV4dDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3Qgb25EcmFnRW5kOiBPbkRyYWdFbmRSZXNwb25kZXIgPSAocmVzdWx0KSA9PiB7XHJcbiAgICBpZiAoIXJlc3VsdC5kZXN0aW5hdGlvbikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdDb250ZXh0ID0gcmVvcmRlcihcclxuICAgICAgY29udGV4dCxcclxuICAgICAgcmVzdWx0LnNvdXJjZS5pbmRleCxcclxuICAgICAgcmVzdWx0LmRlc3RpbmF0aW9uLmluZGV4LFxyXG4gICAgKTtcclxuICAgIHByb3BzLnVwZGF0ZUNvbnRleHQoKGNvbnRleHQpID0+IHtcclxuICAgICAgY29udGV4dC5zcGxpY2UoMCwgY29udGV4dC5sZW5ndGgsIC4uLm5ld0NvbnRleHQpO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDw+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjaGF0U3R5bGVbXCJjb250ZXh0LXByb21wdFwiXX0gc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fT5cclxuICAgICAgICA8RHJhZ0Ryb3BDb250ZXh0IG9uRHJhZ0VuZD17b25EcmFnRW5kfT5cclxuICAgICAgICAgIDxEcm9wcGFibGUgZHJvcHBhYmxlSWQ9XCJjb250ZXh0LXByb21wdC1saXN0XCI+XHJcbiAgICAgICAgICAgIHsocHJvdmlkZWQpID0+IChcclxuICAgICAgICAgICAgICA8ZGl2IHJlZj17cHJvdmlkZWQuaW5uZXJSZWZ9IHsuLi5wcm92aWRlZC5kcm9wcGFibGVQcm9wc30+XHJcbiAgICAgICAgICAgICAgICB7Y29udGV4dC5tYXAoKGMsIGkpID0+IChcclxuICAgICAgICAgICAgICAgICAgPERyYWdnYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgIGRyYWdnYWJsZUlkPXtjLmlkIHx8IGkudG9TdHJpbmcoKX1cclxuICAgICAgICAgICAgICAgICAgICBpbmRleD17aX1cclxuICAgICAgICAgICAgICAgICAgICBrZXk9e2MuaWR9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7KHByb3ZpZGVkKSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17cHJvdmlkZWQuaW5uZXJSZWZ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm92aWRlZC5kcmFnZ2FibGVQcm9wc31cclxuICAgICAgICAgICAgICAgICAgICAgICAgey4uLnByb3ZpZGVkLmRyYWdIYW5kbGVQcm9wc31cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPENvbnRleHRQcm9tcHRJdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2l9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0PXtjfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZT17KHByb21wdCkgPT4gdXBkYXRlQ29udGV4dFByb21wdChpLCBwcm9tcHQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZT17KCkgPT4gcmVtb3ZlQ29udGV4dFByb21wdChpKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2hhdFN0eWxlW1wiY29udGV4dC1wcm9tcHQtaW5zZXJ0XCJdfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbnRleHRQcm9tcHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU6IFwidXNlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKS50b0xvY2FsZVN0cmluZygpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArIDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRkSWNvbiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvRHJhZ2dhYmxlPlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICB7cHJvdmlkZWQucGxhY2Vob2xkZXJ9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8L0Ryb3BwYWJsZT5cclxuICAgICAgICA8L0RyYWdEcm9wQ29udGV4dD5cclxuXHJcbiAgICAgICAge3Byb3BzLmNvbnRleHQubGVuZ3RoID09PSAwICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjaGF0U3R5bGVbXCJjb250ZXh0LXByb21wdC1yb3dcIl19PlxyXG4gICAgICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgICAgIGljb249ezxBZGRJY29uIC8+fVxyXG4gICAgICAgICAgICAgIHRleHQ9e0xvY2FsZS5Db250ZXh0LkFkZH1cclxuICAgICAgICAgICAgICBib3JkZXJlZFxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2hhdFN0eWxlW1wiY29udGV4dC1wcm9tcHQtYnV0dG9uXCJdfVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICAgICAgICBhZGRDb250ZXh0UHJvbXB0KFxyXG4gICAgICAgICAgICAgICAgICBjcmVhdGVNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICByb2xlOiBcInVzZXJcIixcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcIlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGU6IFwiXCIsXHJcbiAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICBwcm9wcy5jb250ZXh0Lmxlbmd0aCxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvPlxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNYXNrUGFnZSgpIHtcclxuICBjb25zdCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XHJcblxyXG4gIGNvbnN0IG1hc2tTdG9yZSA9IHVzZU1hc2tTdG9yZSgpO1xyXG4gIGNvbnN0IGNoYXRTdG9yZSA9IHVzZUNoYXRTdG9yZSgpO1xyXG5cclxuICBjb25zdCBmaWx0ZXJMYW5nID0gbWFza1N0b3JlLmxhbmd1YWdlO1xyXG5cclxuICBjb25zdCBhbGxNYXNrcyA9IG1hc2tTdG9yZVxyXG4gICAgLmdldEFsbCgpXHJcbiAgICAuZmlsdGVyKChtKSA9PiAhZmlsdGVyTGFuZyB8fCBtLmxhbmcgPT09IGZpbHRlckxhbmcpO1xyXG5cclxuICBjb25zdCBbc2VhcmNoTWFza3MsIHNldFNlYXJjaE1hc2tzXSA9IHVzZVN0YXRlPE1hc2tbXT4oW10pO1xyXG4gIGNvbnN0IFtzZWFyY2hUZXh0LCBzZXRTZWFyY2hUZXh0XSA9IHVzZVN0YXRlKFwiXCIpO1xyXG4gIGNvbnN0IG1hc2tzID0gc2VhcmNoVGV4dC5sZW5ndGggPiAwID8gc2VhcmNoTWFza3MgOiBhbGxNYXNrcztcclxuXHJcbiAgLy8gcmVmYWN0b3JlZCBhbHJlYWR5LCBub3cgaXQgYWNjdXJhdGVcclxuICBjb25zdCBvblNlYXJjaCA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgIHNldFNlYXJjaFRleHQodGV4dCk7XHJcbiAgICBpZiAodGV4dC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGFsbE1hc2tzLmZpbHRlcigobSkgPT5cclxuICAgICAgICBtLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXh0LnRvTG93ZXJDYXNlKCkpLFxyXG4gICAgICApO1xyXG4gICAgICBzZXRTZWFyY2hNYXNrcyhyZXN1bHQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0U2VhcmNoTWFza3MoYWxsTWFza3MpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IFtlZGl0aW5nTWFza0lkLCBzZXRFZGl0aW5nTWFza0lkXSA9IHVzZVN0YXRlPHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcclxuICBjb25zdCBlZGl0aW5nTWFzayA9XHJcbiAgICBtYXNrU3RvcmUuZ2V0KGVkaXRpbmdNYXNrSWQpID8/IEJVSUxUSU5fTUFTS19TVE9SRS5nZXQoZWRpdGluZ01hc2tJZCk7XHJcbiAgY29uc3QgY2xvc2VNYXNrTW9kYWwgPSAoKSA9PiBzZXRFZGl0aW5nTWFza0lkKHVuZGVmaW5lZCk7XHJcblxyXG4gIGNvbnN0IGRvd25sb2FkQWxsID0gKCkgPT4ge1xyXG4gICAgZG93bmxvYWRBcyhKU09OLnN0cmluZ2lmeShtYXNrcy5maWx0ZXIoKHYpID0+ICF2LmJ1aWx0aW4pKSwgRmlsZU5hbWUuTWFza3MpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IGltcG9ydEZyb21GaWxlID0gKCkgPT4ge1xyXG4gICAgcmVhZEZyb21GaWxlKCkudGhlbigoY29udGVudCkgPT4ge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGltcG9ydE1hc2tzID0gSlNPTi5wYXJzZShjb250ZW50KTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbXBvcnRNYXNrcykpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgbWFzayBvZiBpbXBvcnRNYXNrcykge1xyXG4gICAgICAgICAgICBpZiAobWFzay5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgbWFza1N0b3JlLmNyZWF0ZShtYXNrKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL2lmIHRoZSBjb250ZW50IGlzIGEgc2luZ2xlIG1hc2suXHJcbiAgICAgICAgaWYgKGltcG9ydE1hc2tzLm5hbWUpIHtcclxuICAgICAgICAgIG1hc2tTdG9yZS5jcmVhdGUoaW1wb3J0TWFza3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCB7fVxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxFcnJvckJvdW5kYXJ5PlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wibWFzay1wYWdlXCJdfT5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1oZWFkZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2luZG93LWhlYWRlci10aXRsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1oZWFkZXItbWFpbi10aXRsZVwiPlxyXG4gICAgICAgICAgICAgIHtMb2NhbGUuTWFzay5QYWdlLlRpdGxlfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3aW5kb3ctaGVhZGVyLXN1Ym1haS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgIHtMb2NhbGUuTWFzay5QYWdlLlN1YlRpdGxlKGFsbE1hc2tzLmxlbmd0aCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3aW5kb3ctYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1hY3Rpb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgIGljb249ezxEb3dubG9hZEljb24gLz59XHJcbiAgICAgICAgICAgICAgICBib3JkZXJlZFxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRBbGx9XHJcbiAgICAgICAgICAgICAgICB0ZXh0PXtMb2NhbGUuVUkuRXhwb3J0fVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1hY3Rpb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgIGljb249ezxVcGxvYWRJY29uIC8+fVxyXG4gICAgICAgICAgICAgICAgdGV4dD17TG9jYWxlLlVJLkltcG9ydH1cclxuICAgICAgICAgICAgICAgIGJvcmRlcmVkXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBpbXBvcnRGcm9tRmlsZSgpfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndpbmRvdy1hY3Rpb24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgIGljb249ezxDbG9zZUljb24gLz59XHJcbiAgICAgICAgICAgICAgICBib3JkZXJlZFxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGUoLTEpfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJtYXNrLXBhZ2UtYm9keVwiXX0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wibWFzay1maWx0ZXJcIl19PlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJzZWFyY2gtYmFyXCJdfVxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtMb2NhbGUuTWFzay5QYWdlLlNlYXJjaH1cclxuICAgICAgICAgICAgICBhdXRvRm9jdXNcclxuICAgICAgICAgICAgICBvbklucHV0PXsoZSkgPT4gb25TZWFyY2goZS5jdXJyZW50VGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPFNlbGVjdFxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wibWFzay1maWx0ZXItbGFuZ1wiXX1cclxuICAgICAgICAgICAgICB2YWx1ZT17ZmlsdGVyTGFuZyA/PyBMb2NhbGUuU2V0dGluZ3MuTGFuZy5BbGx9XHJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGUuY3VycmVudFRhcmdldC52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gTG9jYWxlLlNldHRpbmdzLkxhbmcuQWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIG1hc2tTdG9yZS5zZXRMYW5ndWFnZSh1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgbWFza1N0b3JlLnNldExhbmd1YWdlKHZhbHVlIGFzIExhbmcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8b3B0aW9uIGtleT1cImFsbFwiIHZhbHVlPXtMb2NhbGUuU2V0dGluZ3MuTGFuZy5BbGx9PlxyXG4gICAgICAgICAgICAgICAge0xvY2FsZS5TZXR0aW5ncy5MYW5nLkFsbH1cclxuICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICB7QWxsTGFuZ3MubWFwKChsYW5nKSA9PiAoXHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPXtsYW5nfSBrZXk9e2xhbmd9PlxyXG4gICAgICAgICAgICAgICAgICB7QUxMX0xBTkdfT1BUSU9OU1tsYW5nXX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICA8L1NlbGVjdD5cclxuXHJcbiAgICAgICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJtYXNrLWNyZWF0ZVwiXX1cclxuICAgICAgICAgICAgICBpY29uPXs8QWRkSWNvbiAvPn1cclxuICAgICAgICAgICAgICB0ZXh0PXtMb2NhbGUuTWFzay5QYWdlLkNyZWF0ZX1cclxuICAgICAgICAgICAgICBib3JkZXJlZFxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWRNYXNrID0gbWFza1N0b3JlLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgc2V0RWRpdGluZ01hc2tJZChjcmVhdGVkTWFzay5pZCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIHttYXNrcy5tYXAoKG0pID0+IChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wibWFzay1pdGVtXCJdfSBrZXk9e20uaWR9PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcIm1hc2staGVhZGVyXCJdfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcIm1hc2staWNvblwiXX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPE1hc2tBdmF0YXIgYXZhdGFyPXttLmF2YXRhcn0gbW9kZWw9e20ubW9kZWxDb25maWcubW9kZWx9IC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wibWFzay10aXRsZVwiXX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcIm1hc2stbmFtZVwiXX0+e20ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzeChzdHlsZXNbXCJtYXNrLWluZm9cIl0sIFwib25lLWxpbmVcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgICAge2Ake0xvY2FsZS5NYXNrLkl0ZW0uSW5mbyhtLmNvbnRleHQubGVuZ3RoKX0gLyAke1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBBTExfTEFOR19PUFRJT05TW20ubGFuZ11cclxuICAgICAgICAgICAgICAgICAgICAgIH0gLyAke20ubW9kZWxDb25maWcubW9kZWx9YH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJtYXNrLWFjdGlvbnNcIl19PlxyXG4gICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGljb249ezxBZGRJY29uIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIHRleHQ9e0xvY2FsZS5NYXNrLkl0ZW0uQ2hhdH1cclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGF0U3RvcmUubmV3U2Vzc2lvbihtKTtcclxuICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRlKFBhdGguQ2hhdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAge20uYnVpbHRpbiA/IChcclxuICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17PEV5ZUljb24gLz59XHJcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0PXtMb2NhbGUuTWFzay5JdGVtLlZpZXd9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRFZGl0aW5nTWFza0lkKG0uaWQpfVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIGljb249ezxFZGl0SWNvbiAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ9e0xvY2FsZS5NYXNrLkl0ZW0uRWRpdH1cclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEVkaXRpbmdNYXNrSWQobS5pZCl9XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgeyFtLmJ1aWx0aW4gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPXs8RGVsZXRlSWNvbiAvPn1cclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ9e0xvY2FsZS5NYXNrLkl0ZW0uRGVsZXRlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17YXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXdhaXQgc2hvd0NvbmZpcm0oTG9jYWxlLk1hc2suSXRlbS5EZWxldGVDb25maXJtKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2tTdG9yZS5kZWxldGUobS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApKX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIHtlZGl0aW5nTWFzayAmJiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2RhbC1tYXNrXCI+XHJcbiAgICAgICAgICA8TW9kYWxcclxuICAgICAgICAgICAgdGl0bGU9e0xvY2FsZS5NYXNrLkVkaXRNb2RhbC5UaXRsZShlZGl0aW5nTWFzaz8uYnVpbHRpbil9XHJcbiAgICAgICAgICAgIG9uQ2xvc2U9e2Nsb3NlTWFza01vZGFsfVxyXG4gICAgICAgICAgICBhY3Rpb25zPXtbXHJcbiAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgIGljb249ezxEb3dubG9hZEljb24gLz59XHJcbiAgICAgICAgICAgICAgICB0ZXh0PXtMb2NhbGUuTWFzay5FZGl0TW9kYWwuRG93bmxvYWR9XHJcbiAgICAgICAgICAgICAgICBrZXk9XCJleHBvcnRcIlxyXG4gICAgICAgICAgICAgICAgYm9yZGVyZWRcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICAgICAgICAgIGRvd25sb2FkQXMoXHJcbiAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZWRpdGluZ01hc2spLFxyXG4gICAgICAgICAgICAgICAgICAgIGAke2VkaXRpbmdNYXNrLm5hbWV9Lmpzb25gLFxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgLz4sXHJcbiAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgIGtleT1cImNvcHlcIlxyXG4gICAgICAgICAgICAgICAgaWNvbj17PENvcHlJY29uIC8+fVxyXG4gICAgICAgICAgICAgICAgYm9yZGVyZWRcclxuICAgICAgICAgICAgICAgIHRleHQ9e0xvY2FsZS5NYXNrLkVkaXRNb2RhbC5DbG9uZX1cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgbmF2aWdhdGUoUGF0aC5NYXNrcyk7XHJcbiAgICAgICAgICAgICAgICAgIG1hc2tTdG9yZS5jcmVhdGUoZWRpdGluZ01hc2spO1xyXG4gICAgICAgICAgICAgICAgICBzZXRFZGl0aW5nTWFza0lkKHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8+LFxyXG4gICAgICAgICAgICBdfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8TWFza0NvbmZpZ1xyXG4gICAgICAgICAgICAgIG1hc2s9e2VkaXRpbmdNYXNrfVxyXG4gICAgICAgICAgICAgIHVwZGF0ZU1hc2s9eyh1cGRhdGVyKSA9PlxyXG4gICAgICAgICAgICAgICAgbWFza1N0b3JlLnVwZGF0ZU1hc2soZWRpdGluZ01hc2tJZCEsIHVwZGF0ZXIpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJlYWRvbmx5PXtlZGl0aW5nTWFzay5idWlsdGlufVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9Nb2RhbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKX1cclxuICAgIDwvRXJyb3JCb3VuZGFyeT5cclxuICApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJJY29uQnV0dG9uIiwiRXJyb3JCb3VuZGFyeSIsInN0eWxlcyIsIkRvd25sb2FkSWNvbiIsIlVwbG9hZEljb24iLCJFZGl0SWNvbiIsIkFkZEljb24iLCJDbG9zZUljb24iLCJEZWxldGVJY29uIiwiRXllSWNvbiIsIkNvcHlJY29uIiwiRHJhZ0ljb24iLCJERUZBVUxUX01BU0tfQVZBVEFSIiwidXNlTWFza1N0b3JlIiwiY3JlYXRlTWVzc2FnZSIsInVzZUFwcENvbmZpZyIsInVzZUNoYXRTdG9yZSIsIlJPTEVTIiwiSW5wdXQiLCJMaXN0IiwiTGlzdEl0ZW0iLCJNb2RhbCIsIlBvcG92ZXIiLCJTZWxlY3QiLCJzaG93Q29uZmlybSIsIkF2YXRhciIsIkF2YXRhclBpY2tlciIsIkxvY2FsZSIsIkFsbExhbmdzIiwiQUxMX0xBTkdfT1BUSU9OUyIsInVzZU5hdmlnYXRlIiwiY2hhdFN0eWxlIiwidXNlU3RhdGUiLCJjb3B5VG9DbGlwYm9hcmQiLCJkb3dubG9hZEFzIiwiZ2V0TWVzc2FnZUltYWdlcyIsInJlYWRGcm9tRmlsZSIsIk1vZGVsQ29uZmlnTGlzdCIsIkZpbGVOYW1lIiwiUGF0aCIsIkJVSUxUSU5fTUFTS19TVE9SRSIsIkRyYWdEcm9wQ29udGV4dCIsIkRyb3BwYWJsZSIsIkRyYWdnYWJsZSIsImdldE1lc3NhZ2VUZXh0Q29udGVudCIsImNsc3giLCJyZW9yZGVyIiwibGlzdCIsInN0YXJ0SW5kZXgiLCJlbmRJbmRleCIsInJlc3VsdCIsInJlbW92ZWQiLCJzcGxpY2UiLCJNYXNrQXZhdGFyIiwicHJvcHMiLCJhdmF0YXIiLCJtb2RlbCIsIk1hc2tDb25maWciLCJzaG93UGlja2VyIiwic2V0U2hvd1BpY2tlciIsInVwZGF0ZUNvbmZpZyIsInVwZGF0ZXIiLCJyZWFkb25seSIsImNvbmZpZyIsIm1hc2siLCJtb2RlbENvbmZpZyIsInVwZGF0ZU1hc2siLCJzeW5jR2xvYmFsQ29uZmlnIiwiY29weU1hc2tMaW5rIiwibWFza0xpbmsiLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaG9zdCIsIk5ld0NoYXQiLCJpZCIsImdsb2JhbENvbmZpZyIsIkNvbnRleHRQcm9tcHRzIiwiY29udGV4dCIsInVwZGF0ZUNvbnRleHQiLCJzbGljZSIsInRpdGxlIiwiTWFzayIsIkNvbmZpZyIsImNvbnRlbnQiLCJvbkVtb2ppQ2xpY2siLCJlbW9qaSIsIm9wZW4iLCJvbkNsb3NlIiwiZGl2IiwidGFiSW5kZXgiLCJhcmlhLWxhYmVsIiwib25DbGljayIsInN0eWxlIiwiY3Vyc29yIiwiTmFtZSIsImlucHV0IiwidHlwZSIsInZhbHVlIiwibmFtZSIsIm9uSW5wdXQiLCJlIiwiY3VycmVudFRhcmdldCIsIkhpZGVDb250ZXh0IiwiVGl0bGUiLCJzdWJUaXRsZSIsIlN1YlRpdGxlIiwiY2hlY2tlZCIsImhpZGVDb250ZXh0Iiwib25DaGFuZ2UiLCJlbmFibGVBcnRpZmFjdHMiLCJBcnRpZmFjdHMiLCJlbmFibGVDb2RlRm9sZCIsIkNvZGVGb2xkIiwic2hvdWxkU3luY0Zyb21HbG9iYWwiLCJTaGFyZSIsImFyaWEiLCJpY29uIiwidGV4dCIsIkFjdGlvbiIsIlN5bmMiLCJDb25maXJtIiwiZXh0cmFMaXN0SXRlbXMiLCJDb250ZXh0UHJvbXB0SXRlbSIsImZvY3VzaW5nSW5wdXQiLCJzZXRGb2N1c2luZ0lucHV0IiwiY2xhc3NOYW1lIiwicHJvbXB0Iiwicm9sZSIsInVwZGF0ZSIsInRhcmdldCIsIm1hcCIsInIiLCJvcHRpb24iLCJyb3dzIiwib25Gb2N1cyIsIm9uQmx1ciIsIndpbmRvdyIsImdldFNlbGVjdGlvbiIsInJlbW92ZUFsbFJhbmdlcyIsInJlbW92ZSIsImJvcmRlcmVkIiwiYWRkQ29udGV4dFByb21wdCIsImkiLCJyZW1vdmVDb250ZXh0UHJvbXB0IiwidXBkYXRlQ29udGV4dFByb21wdCIsImltYWdlcyIsImxlbmd0aCIsIm5ld0NvbnRleHQiLCJpbWciLCJwdXNoIiwiaW1hZ2VfdXJsIiwidXJsIiwib25EcmFnRW5kIiwiZGVzdGluYXRpb24iLCJzb3VyY2UiLCJpbmRleCIsIm1hcmdpbkJvdHRvbSIsImRyb3BwYWJsZUlkIiwicHJvdmlkZWQiLCJyZWYiLCJpbm5lclJlZiIsImRyb3BwYWJsZVByb3BzIiwiYyIsImRyYWdnYWJsZUlkIiwidG9TdHJpbmciLCJkcmFnZ2FibGVQcm9wcyIsImRyYWdIYW5kbGVQcm9wcyIsImRhdGUiLCJEYXRlIiwidG9Mb2NhbGVTdHJpbmciLCJwbGFjZWhvbGRlciIsIkNvbnRleHQiLCJBZGQiLCJNYXNrUGFnZSIsIm5hdmlnYXRlIiwibWFza1N0b3JlIiwiY2hhdFN0b3JlIiwiZmlsdGVyTGFuZyIsImxhbmd1YWdlIiwiYWxsTWFza3MiLCJnZXRBbGwiLCJmaWx0ZXIiLCJtIiwibGFuZyIsInNlYXJjaE1hc2tzIiwic2V0U2VhcmNoTWFza3MiLCJzZWFyY2hUZXh0Iiwic2V0U2VhcmNoVGV4dCIsIm1hc2tzIiwib25TZWFyY2giLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZWRpdGluZ01hc2tJZCIsInNldEVkaXRpbmdNYXNrSWQiLCJlZGl0aW5nTWFzayIsImdldCIsImNsb3NlTWFza01vZGFsIiwidW5kZWZpbmVkIiwiZG93bmxvYWRBbGwiLCJKU09OIiwic3RyaW5naWZ5IiwidiIsImJ1aWx0aW4iLCJNYXNrcyIsImltcG9ydEZyb21GaWxlIiwidGhlbiIsImltcG9ydE1hc2tzIiwicGFyc2UiLCJBcnJheSIsImlzQXJyYXkiLCJjcmVhdGUiLCJQYWdlIiwiVUkiLCJFeHBvcnQiLCJJbXBvcnQiLCJTZWFyY2giLCJhdXRvRm9jdXMiLCJTZXR0aW5ncyIsIkxhbmciLCJBbGwiLCJzZXRMYW5ndWFnZSIsIkNyZWF0ZSIsImNyZWF0ZWRNYXNrIiwiSXRlbSIsIkluZm8iLCJDaGF0IiwibmV3U2Vzc2lvbiIsIlZpZXciLCJFZGl0IiwiRGVsZXRlIiwiRGVsZXRlQ29uZmlybSIsImRlbGV0ZSIsIkVkaXRNb2RhbCIsImFjdGlvbnMiLCJEb3dubG9hZCIsIkNsb25lIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/mask.tsx\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/components/model-config.tsx":
/*!*****************************************!*\
!*** ./app/components/model-config.tsx ***!
\*****************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ModelConfigList: function() { return /* binding */ ModelConfigList; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var _app_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/app/constant */ \"(app-pages-browser)/./app/constant.ts\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../store */ \"(app-pages-browser)/./app/store/index.ts\");\n/* harmony import */ var _locales__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../locales */ \"(app-pages-browser)/./app/locales/index.ts\");\n/* harmony import */ var _input_range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./input-range */ \"(app-pages-browser)/./app/components/input-range.tsx\");\n/* harmony import */ var _ui_lib__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./ui-lib */ \"(app-pages-browser)/./app/components/ui-lib.tsx\");\n/* harmony import */ var _utils_hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/hooks */ \"(app-pages-browser)/./app/utils/hooks.ts\");\n/* harmony import */ var _barrel_optimize_names_groupBy_lodash_es__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! __barrel_optimize__?names=groupBy!=!lodash-es */ \"(app-pages-browser)/./node_modules/lodash-es/groupBy.js\");\n/* harmony import */ var _model_config_module_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./model-config.module.scss */ \"(app-pages-browser)/./app/components/model-config.module.scss\");\n/* harmony import */ var _model_config_module_scss__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_model_config_module_scss__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _utils_model__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/model */ \"(app-pages-browser)/./app/utils/model.ts\");\n\nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\n\n\nfunction ModelConfigList(props) {\n var _props_modelConfig, _props_modelConfig1, _props_modelConfig_temperature, _props_modelConfig2, _props_modelConfig_presence_penalty, _props_modelConfig_frequency_penalty;\n _s();\n const allModels = (0,_utils_hooks__WEBPACK_IMPORTED_MODULE_6__.useAllModels)();\n const groupModels = (0,_barrel_optimize_names_groupBy_lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(allModels.filter((v)=>v.available), \"provider.providerName\");\n const value = \"\".concat(props.modelConfig.model, \"@\").concat((_props_modelConfig = props.modelConfig) === null || _props_modelConfig === void 0 ? void 0 : _props_modelConfig.providerName);\n const compressModelValue = \"\".concat(props.modelConfig.compressModel, \"@\").concat((_props_modelConfig1 = props.modelConfig) === null || _props_modelConfig1 === void 0 ? void 0 : _props_modelConfig1.compressProviderName);\n var _props_modelConfig_top_p;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.Model,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.Select, {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.Model,\n value: value,\n align: \"left\",\n onChange: (e)=>{\n const [model, providerName] = (0,_utils_model__WEBPACK_IMPORTED_MODULE_7__.getModelProvider)(e.currentTarget.value);\n props.updateConfig((config)=>{\n config.model = _store__WEBPACK_IMPORTED_MODULE_2__.ModalConfigValidator.model(model);\n config.providerName = providerName;\n });\n },\n children: Object.keys(groupModels).map((providerName, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"optgroup\", {\n label: providerName,\n children: groupModels[providerName].map((v, i)=>{\n var _v_provider;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"\".concat(v.name, \"@\").concat((_v_provider = v.provider) === null || _v_provider === void 0 ? void 0 : _v_provider.providerName),\n children: v.displayName\n }, i, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 44,\n columnNumber: 17\n }, this);\n })\n }, index, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 42,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 26,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.Temperature.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.Temperature.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_input_range__WEBPACK_IMPORTED_MODULE_4__.InputRange, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.Temperature.Title,\n value: (_props_modelConfig_temperature = props.modelConfig.temperature) === null || _props_modelConfig_temperature === void 0 ? void 0 : _props_modelConfig_temperature.toFixed(1),\n min: \"0\",\n max: \"1\" // lets limit it to 0-1\n ,\n step: \"0.1\",\n onChange: (e)=>{\n props.updateConfig((config)=>config.temperature = _store__WEBPACK_IMPORTED_MODULE_2__.ModalConfigValidator.temperature(e.currentTarget.valueAsNumber));\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 56,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 52,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.TopP.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.TopP.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_input_range__WEBPACK_IMPORTED_MODULE_4__.InputRange, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.TopP.Title,\n value: ((_props_modelConfig_top_p = props.modelConfig.top_p) !== null && _props_modelConfig_top_p !== void 0 ? _props_modelConfig_top_p : 1).toFixed(1),\n min: \"0\",\n max: \"1\",\n step: \"0.1\",\n onChange: (e)=>{\n props.updateConfig((config)=>config.top_p = _store__WEBPACK_IMPORTED_MODULE_2__.ModalConfigValidator.top_p(e.currentTarget.valueAsNumber));\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 76,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 72,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.MaxTokens.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.MaxTokens.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.MaxTokens.Title,\n type: \"number\",\n min: 1024,\n max: 512000,\n value: props.modelConfig.max_tokens,\n onChange: (e)=>props.updateConfig((config)=>config.max_tokens = _store__WEBPACK_IMPORTED_MODULE_2__.ModalConfigValidator.max_tokens(e.currentTarget.valueAsNumber))\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 96,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 92,\n columnNumber: 7\n }, this),\n ((_props_modelConfig2 = props.modelConfig) === null || _props_modelConfig2 === void 0 ? void 0 : _props_modelConfig2.providerName) == _app_constant__WEBPACK_IMPORTED_MODULE_1__.ServiceProvider.Google ? null : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.PresencePenalty.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.PresencePenalty.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_input_range__WEBPACK_IMPORTED_MODULE_4__.InputRange, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.PresencePenalty.Title,\n value: (_props_modelConfig_presence_penalty = props.modelConfig.presence_penalty) === null || _props_modelConfig_presence_penalty === void 0 ? void 0 : _props_modelConfig_presence_penalty.toFixed(1),\n min: \"-2\",\n max: \"2\",\n step: \"0.1\",\n onChange: (e)=>{\n props.updateConfig((config)=>config.presence_penalty = _store__WEBPACK_IMPORTED_MODULE_2__.ModalConfigValidator.presence_penalty(e.currentTarget.valueAsNumber));\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 119,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 115,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.FrequencyPenalty.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.FrequencyPenalty.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_input_range__WEBPACK_IMPORTED_MODULE_4__.InputRange, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.FrequencyPenalty.Title,\n value: (_props_modelConfig_frequency_penalty = props.modelConfig.frequency_penalty) === null || _props_modelConfig_frequency_penalty === void 0 ? void 0 : _props_modelConfig_frequency_penalty.toFixed(1),\n min: \"-2\",\n max: \"2\",\n step: \"0.1\",\n onChange: (e)=>{\n props.updateConfig((config)=>config.frequency_penalty = _store__WEBPACK_IMPORTED_MODULE_2__.ModalConfigValidator.frequency_penalty(e.currentTarget.valueAsNumber));\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 141,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 137,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.InjectSystemPrompts.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.InjectSystemPrompts.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.InjectSystemPrompts.Title,\n type: \"checkbox\",\n checked: props.modelConfig.enableInjectSystemPrompts,\n onChange: (e)=>props.updateConfig((config)=>config.enableInjectSystemPrompts = e.currentTarget.checked)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 163,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 159,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.InputTemplate.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.InputTemplate.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.InputTemplate.Title,\n type: \"text\",\n value: props.modelConfig.template,\n onChange: (e)=>props.updateConfig((config)=>config.template = e.currentTarget.value)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 181,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 177,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.HistoryCount.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.HistoryCount.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_input_range__WEBPACK_IMPORTED_MODULE_4__.InputRange, {\n aria: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.HistoryCount.Title,\n title: props.modelConfig.historyMessageCount.toString(),\n value: props.modelConfig.historyMessageCount,\n min: \"0\",\n max: \"64\",\n step: \"1\",\n onChange: (e)=>props.updateConfig((config)=>config.historyMessageCount = e.target.valueAsNumber)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 198,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 194,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.CompressThreshold.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.CompressThreshold.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.CompressThreshold.Title,\n type: \"number\",\n min: 500,\n max: 4000,\n value: props.modelConfig.compressMessageLengthThreshold,\n onChange: (e)=>props.updateConfig((config)=>config.compressMessageLengthThreshold = e.currentTarget.valueAsNumber)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 217,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 213,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Memory.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Memory.Send,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Memory.Title,\n type: \"checkbox\",\n checked: props.modelConfig.sendMemory,\n onChange: (e)=>props.updateConfig((config)=>config.sendMemory = e.currentTarget.checked)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 233,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 232,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.ListItem, {\n title: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.CompressModel.Title,\n subTitle: _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.CompressModel.SubTitle,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_5__.Select, {\n className: (_model_config_module_scss__WEBPACK_IMPORTED_MODULE_9___default()[\"select-compress-model\"]),\n \"aria-label\": _locales__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Settings.CompressModel.Title,\n value: compressModelValue,\n onChange: (e)=>{\n const [model, providerName] = (0,_utils_model__WEBPACK_IMPORTED_MODULE_7__.getModelProvider)(e.currentTarget.value);\n props.updateConfig((config)=>{\n config.compressModel = _store__WEBPACK_IMPORTED_MODULE_2__.ModalConfigValidator.model(model);\n config.compressProviderName = providerName;\n });\n },\n children: allModels.filter((v)=>v.available).map((v, i)=>{\n var _v_provider, _v_provider1;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"option\", {\n value: \"\".concat(v.name, \"@\").concat((_v_provider = v.provider) === null || _v_provider === void 0 ? void 0 : _v_provider.providerName),\n children: [\n v.displayName,\n \"(\",\n (_v_provider1 = v.provider) === null || _v_provider1 === void 0 ? void 0 : _v_provider1.providerName,\n \")\"\n ]\n }, i, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 265,\n columnNumber: 15\n }, this);\n })\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 248,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\model-config.tsx\",\n lineNumber: 244,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true);\n}\n_s(ModelConfigList, \"fKFWrcGJd4BbJiDjy7FItUe96w0=\", false, function() {\n return [\n _utils_hooks__WEBPACK_IMPORTED_MODULE_6__.useAllModels\n ];\n});\n_c = ModelConfigList;\nvar _c;\n$RefreshReg$(_c, \"ModelConfigList\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL21vZGVsLWNvbmZpZy50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUQ7QUFDWTtBQUU3QjtBQUNXO0FBQ0M7QUFDRTtBQUNWO0FBQ1k7QUFDRTtBQUUzQyxTQUFTVSxnQkFBZ0JDLEtBRy9CO1FBTTZDQSxvQkFDcUJBLHFCQW9DbERBLGdDQXVEVkEscUJBUWNBLHFDQXNCQUE7O0lBL0huQixNQUFNQyxZQUFZTiwwREFBWUE7SUFDOUIsTUFBTU8sY0FBY04sb0ZBQU9BLENBQ3pCSyxVQUFVRSxNQUFNLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsU0FBUyxHQUNuQztJQUVGLE1BQU1DLFFBQVEsVUFBR04sTUFBTU8sV0FBVyxDQUFDQyxLQUFLLEVBQUMsS0FBbUMsUUFBaENSLHFCQUFBQSxNQUFNTyxXQUFXLGNBQWpCUCx5Q0FBQUEsbUJBQW1CUyxZQUFZO0lBQzNFLE1BQU1DLHFCQUFxQixVQUFHVixNQUFNTyxXQUFXLENBQUNJLGFBQWEsRUFBQyxLQUEyQyxRQUF4Q1gsc0JBQUFBLE1BQU1PLFdBQVcsY0FBakJQLDBDQUFBQSxvQkFBbUJZLG9CQUFvQjtRQXdEeEZaO0lBdERoQixxQkFDRTs7MEJBQ0UsOERBQUNQLDZDQUFRQTtnQkFBQ29CLE9BQU90QixnREFBTUEsQ0FBQ3VCLFFBQVEsQ0FBQ0MsS0FBSzswQkFDcEMsNEVBQUNyQiwyQ0FBTUE7b0JBQ0xzQixjQUFZekIsZ0RBQU1BLENBQUN1QixRQUFRLENBQUNDLEtBQUs7b0JBQ2pDVCxPQUFPQTtvQkFDUFcsT0FBTTtvQkFDTkMsVUFBVSxDQUFDQzt3QkFDVCxNQUFNLENBQUNYLE9BQU9DLGFBQWEsR0FBR1gsOERBQWdCQSxDQUM1Q3FCLEVBQUVDLGFBQWEsQ0FBQ2QsS0FBSzt3QkFFdkJOLE1BQU1xQixZQUFZLENBQUMsQ0FBQ0M7NEJBQ2xCQSxPQUFPZCxLQUFLLEdBQUdsQix3REFBb0JBLENBQUNrQixLQUFLLENBQUNB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QUFBQSxFQUFFNEIsUUFBUSxjQUFWNUIsa0NBQUFBLFlBQVlLLFlBQVk7O2dDQUNqREwsRUFBRTZCLFdBQVc7Z0NBQUM7aUNBQUU3QixlQUFBQSxFQUFFNEIsUUFBUSxjQUFWNUIsbUNBQUFBLGFBQVlLLFlBQVk7Z0NBQUM7OzJCQURpQm9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRM0U7R0FyUWdCOUI7O1FBSUlKLHNEQUFZQTs7O0tBSmhCSSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvY29tcG9uZW50cy9tb2RlbC1jb25maWcudHN4PzhlMDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VydmljZVByb3ZpZGVyIH0gZnJvbSBcIkAvYXBwL2NvbnN0YW50XCI7XHJcbmltcG9ydCB7IE1vZGFsQ29uZmlnVmFsaWRhdG9yLCBNb2RlbENvbmZpZyB9IGZyb20gXCIuLi9zdG9yZVwiO1xyXG5cclxuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi4vbG9jYWxlc1wiO1xyXG5pbXBvcnQgeyBJbnB1dFJhbmdlIH0gZnJvbSBcIi4vaW5wdXQtcmFuZ2VcIjtcclxuaW1wb3J0IHsgTGlzdEl0ZW0sIFNlbGVjdCB9IGZyb20gXCIuL3VpLWxpYlwiO1xyXG5pbXBvcnQgeyB1c2VBbGxNb2RlbHMgfSBmcm9tIFwiLi4vdXRpbHMvaG9va3NcIjtcclxuaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9tb2RlbC1jb25maWcubW9kdWxlLnNjc3NcIjtcclxuaW1wb3J0IHsgZ2V0TW9kZWxQcm92aWRlciB9IGZyb20gXCIuLi91dGlscy9tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE1vZGVsQ29uZmlnTGlzdChwcm9wczoge1xyXG4gIG1vZGVsQ29uZmlnOiBNb2RlbENvbmZpZztcclxuICB1cGRhdGVDb25maWc6ICh1cGRhdGVyOiAoY29uZmlnOiBNb2RlbENvbmZpZykgPT4gdm9pZCkgPT4gdm9pZDtcclxufSkge1xyXG4gIGNvbnN0IGFsbE1vZGVscyA9IHVzZUFsbE1vZGVscygpO1xyXG4gIGNvbnN0IGdyb3VwTW9kZWxzID0gZ3JvdXBCeShcclxuICAgIGFsbE1vZGVscy5maWx0ZXIoKHYpID0+IHYuYXZhaWxhYmxlKSxcclxuICAgIFwicHJvdmlkZXIucHJvdmlkZXJOYW1lXCIsXHJcbiAgKTtcclxuICBjb25zdCB2YWx1ZSA9IGAke3Byb3BzLm1vZGVsQ29uZmlnLm1vZGVsfUAke3Byb3BzLm1vZGVsQ29uZmlnPy5wcm92aWRlck5hbWV9YDtcclxuICBjb25zdCBjb21wcmVzc01vZGVsVmFsdWUgPSBgJHtwcm9wcy5tb2RlbENvbmZpZy5jb21wcmVzc01vZGVsfUAke3Byb3BzLm1vZGVsQ29uZmlnPy5jb21wcmVzc1Byb3ZpZGVyTmFtZX1gO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPD5cclxuICAgICAgPExpc3RJdGVtIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuTW9kZWx9PlxyXG4gICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5Nb2RlbH1cclxuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cclxuICAgICAgICAgIGFsaWduPVwibGVmdFwiXHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgW21vZGVsLCBwcm92aWRlck5hbWVdID0gZ2V0TW9kZWxQcm92aWRlcihcclxuICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQudmFsdWUsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHByb3BzLnVwZGF0ZUNvbmZpZygoY29uZmlnKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uZmlnLm1vZGVsID0gTW9kYWxDb25maWdWYWxpZGF0b3IubW9kZWwobW9kZWwpO1xyXG4gICAgICAgICAgICAgIGNvbmZpZy5wcm92aWRlck5hbWUgPSBwcm92aWRlck5hbWUgYXMgU2VydmljZVByb3ZpZGVyO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge09iamVjdC5rZXlzKGdyb3VwTW9kZWxzKS5tYXAoKHByb3ZpZGVyTmFtZSwgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgPG9wdGdyb3VwIGxhYmVsPXtwcm92aWRlck5hbWV9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgIHtncm91cE1vZGVsc1twcm92aWRlck5hbWVdLm1hcCgodiwgaSkgPT4gKFxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT17YCR7di5uYW1lfUAke3YucHJvdmlkZXI/LnByb3ZpZGVyTmFtZX1gfSBrZXk9e2l9PlxyXG4gICAgICAgICAgICAgICAgICB7di5kaXNwbGF5TmFtZX1cclxuICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICA8L29wdGdyb3VwPlxyXG4gICAgICAgICAgKSl9XHJcbiAgICAgICAgPC9TZWxlY3Q+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuVGVtcGVyYXR1cmUuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5UZW1wZXJhdHVyZS5TdWJUaXRsZX1cclxuICAgICAgPlxyXG4gICAgICAgIDxJbnB1dFJhbmdlXHJcbiAgICAgICAgICBhcmlhPXtMb2NhbGUuU2V0dGluZ3MuVGVtcGVyYXR1cmUuVGl0bGV9XHJcbiAgICAgICAgICB2YWx1ZT17cHJvcHMubW9kZWxDb25maWcudGVtcGVyYXR1cmU/LnRvRml4ZWQoMSl9XHJcbiAgICAgICAgICBtaW49XCIwXCJcclxuICAgICAgICAgIG1heD1cIjFcIiAvLyBsZXRzIGxpbWl0IGl0IHRvIDAtMVxyXG4gICAgICAgICAgc3RlcD1cIjAuMVwiXHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgcHJvcHMudXBkYXRlQ29uZmlnKFxyXG4gICAgICAgICAgICAgIChjb25maWcpID0+XHJcbiAgICAgICAgICAgICAgICAoY29uZmlnLnRlbXBlcmF0dXJlID0gTW9kYWxDb25maWdWYWxpZGF0b3IudGVtcGVyYXR1cmUoXHJcbiAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC52YWx1ZUFzTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID48L0lucHV0UmFuZ2U+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuVG9wUC5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLlRvcFAuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8SW5wdXRSYW5nZVxyXG4gICAgICAgICAgYXJpYT17TG9jYWxlLlNldHRpbmdzLlRvcFAuVGl0bGV9XHJcbiAgICAgICAgICB2YWx1ZT17KHByb3BzLm1vZGVsQ29uZmlnLnRvcF9wID8/IDEpLnRvRml4ZWQoMSl9XHJcbiAgICAgICAgICBtaW49XCIwXCJcclxuICAgICAgICAgIG1heD1cIjFcIlxyXG4gICAgICAgICAgc3RlcD1cIjAuMVwiXHJcbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgcHJvcHMudXBkYXRlQ29uZmlnKFxyXG4gICAgICAgICAgICAgIChjb25maWcpID0+XHJcbiAgICAgICAgICAgICAgICAoY29uZmlnLnRvcF9wID0gTW9kYWxDb25maWdWYWxpZGF0b3IudG9wX3AoXHJcbiAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC52YWx1ZUFzTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID48L0lucHV0UmFuZ2U+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuTWF4VG9rZW5zLlRpdGxlfVxyXG4gICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuTWF4VG9rZW5zLlN1YlRpdGxlfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuTWF4VG9rZW5zLlRpdGxlfVxyXG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICBtaW49ezEwMjR9XHJcbiAgICAgICAgICBtYXg9ezUxMjAwMH1cclxuICAgICAgICAgIHZhbHVlPXtwcm9wcy5tb2RlbENvbmZpZy5tYXhfdG9rZW5zfVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxyXG4gICAgICAgICAgICBwcm9wcy51cGRhdGVDb25maWcoXHJcbiAgICAgICAgICAgICAgKGNvbmZpZykgPT5cclxuICAgICAgICAgICAgICAgIChjb25maWcubWF4X3Rva2VucyA9IE1vZGFsQ29uZmlnVmFsaWRhdG9yLm1heF90b2tlbnMoXHJcbiAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC52YWx1ZUFzTnVtYmVyLFxyXG4gICAgICAgICAgICAgICAgKSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9pbnB1dD5cclxuICAgICAgPC9MaXN0SXRlbT5cclxuXHJcbiAgICAgIHtwcm9wcy5tb2RlbENvbmZpZz8ucHJvdmlkZXJOYW1lID09IFNlcnZpY2VQcm92aWRlci5Hb29nbGUgPyBudWxsIDogKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8TGlzdEl0ZW1cclxuICAgICAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5QcmVzZW5jZVBlbmFsdHkuVGl0bGV9XHJcbiAgICAgICAgICAgIHN1YlRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuUHJlc2VuY2VQZW5hbHR5LlN1YlRpdGxlfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8SW5wdXRSYW5nZVxyXG4gICAgICAgICAgICAgIGFyaWE9e0xvY2FsZS5TZXR0aW5ncy5QcmVzZW5jZVBlbmFsdHkuVGl0bGV9XHJcbiAgICAgICAgICAgICAgdmFsdWU9e3Byb3BzLm1vZGVsQ29uZmlnLnByZXNlbmNlX3BlbmFsdHk/LnRvRml4ZWQoMSl9XHJcbiAgICAgICAgICAgICAgbWluPVwiLTJcIlxyXG4gICAgICAgICAgICAgIG1heD1cIjJcIlxyXG4gICAgICAgICAgICAgIHN0ZXA9XCIwLjFcIlxyXG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcHJvcHMudXBkYXRlQ29uZmlnKFxyXG4gICAgICAgICAgICAgICAgICAoY29uZmlnKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIChjb25maWcucHJlc2VuY2VfcGVuYWx0eSA9XHJcbiAgICAgICAgICAgICAgICAgICAgICBNb2RhbENvbmZpZ1ZhbGlkYXRvci5wcmVzZW5jZV9wZW5hbHR5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQudmFsdWVBc051bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+PC9JbnB1dFJhbmdlPlxyXG4gICAgICAgICAgPC9MaXN0SXRlbT5cclxuXHJcbiAgICAgICAgICA8TGlzdEl0ZW1cclxuICAgICAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5GcmVxdWVuY3lQZW5hbHR5LlRpdGxlfVxyXG4gICAgICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkZyZXF1ZW5jeVBlbmFsdHkuU3ViVGl0bGV9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxJbnB1dFJhbmdlXHJcbiAgICAgICAgICAgICAgYXJpYT17TG9jYWxlLlNldHRpbmdzLkZyZXF1ZW5jeVBlbmFsdHkuVGl0bGV9XHJcbiAgICAgICAgICAgICAgdmFsdWU9e3Byb3BzLm1vZGVsQ29uZmlnLmZyZXF1ZW5jeV9wZW5hbHR5Py50b0ZpeGVkKDEpfVxyXG4gICAgICAgICAgICAgIG1pbj1cIi0yXCJcclxuICAgICAgICAgICAgICBtYXg9XCIyXCJcclxuICAgICAgICAgICAgICBzdGVwPVwiMC4xXCJcclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHByb3BzLnVwZGF0ZUNvbmZpZyhcclxuICAgICAgICAgICAgICAgICAgKGNvbmZpZykgPT5cclxuICAgICAgICAgICAgICAgICAgICAoY29uZmlnLmZyZXF1ZW5jeV9wZW5hbHR5ID1cclxuICAgICAgICAgICAgICAgICAgICAgIE1vZGFsQ29uZmlnVmFsaWRhdG9yLmZyZXF1ZW5jeV9wZW5hbHR5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnRUYXJnZXQudmFsdWVBc051bWJlcixcclxuICAgICAgICAgICAgICAgICAgICAgICkpLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+PC9JbnB1dFJhbmdlPlxyXG4gICAgICAgICAgPC9MaXN0SXRlbT5cclxuXHJcbiAgICAgICAgICA8TGlzdEl0ZW1cclxuICAgICAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5JbmplY3RTeXN0ZW1Qcm9tcHRzLlRpdGxlfVxyXG4gICAgICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkluamVjdFN5c3RlbVByb21wdHMuU3ViVGl0bGV9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5JbmplY3RTeXN0ZW1Qcm9tcHRzLlRpdGxlfVxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgY2hlY2tlZD17cHJvcHMubW9kZWxDb25maWcuZW5hYmxlSW5qZWN0U3lzdGVtUHJvbXB0c31cclxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+XHJcbiAgICAgICAgICAgICAgICBwcm9wcy51cGRhdGVDb25maWcoXHJcbiAgICAgICAgICAgICAgICAgIChjb25maWcpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgKGNvbmZpZy5lbmFibGVJbmplY3RTeXN0ZW1Qcm9tcHRzID1cclxuICAgICAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC5jaGVja2VkKSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgID48L2lucHV0PlxyXG4gICAgICAgICAgPC9MaXN0SXRlbT5cclxuXHJcbiAgICAgICAgICA8TGlzdEl0ZW1cclxuICAgICAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5JbnB1dFRlbXBsYXRlLlRpdGxlfVxyXG4gICAgICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLklucHV0VGVtcGxhdGUuU3ViVGl0bGV9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5JbnB1dFRlbXBsYXRlLlRpdGxlfVxyXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICB2YWx1ZT17cHJvcHMubW9kZWxDb25maWcudGVtcGxhdGV9XHJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxyXG4gICAgICAgICAgICAgICAgcHJvcHMudXBkYXRlQ29uZmlnKFxyXG4gICAgICAgICAgICAgICAgICAoY29uZmlnKSA9PiAoY29uZmlnLnRlbXBsYXRlID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgID48L2lucHV0PlxyXG4gICAgICAgICAgPC9MaXN0SXRlbT5cclxuICAgICAgICA8Lz5cclxuICAgICAgKX1cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5IaXN0b3J5Q291bnQuVGl0bGV9XHJcbiAgICAgICAgc3ViVGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5IaXN0b3J5Q291bnQuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8SW5wdXRSYW5nZVxyXG4gICAgICAgICAgYXJpYT17TG9jYWxlLlNldHRpbmdzLkhpc3RvcnlDb3VudC5UaXRsZX1cclxuICAgICAgICAgIHRpdGxlPXtwcm9wcy5tb2RlbENvbmZpZy5oaXN0b3J5TWVzc2FnZUNvdW50LnRvU3RyaW5nKCl9XHJcbiAgICAgICAgICB2YWx1ZT17cHJvcHMubW9kZWxDb25maWcuaGlzdG9yeU1lc3NhZ2VDb3VudH1cclxuICAgICAgICAgIG1pbj1cIjBcIlxyXG4gICAgICAgICAgbWF4PVwiNjRcIlxyXG4gICAgICAgICAgc3RlcD1cIjFcIlxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxyXG4gICAgICAgICAgICBwcm9wcy51cGRhdGVDb25maWcoXHJcbiAgICAgICAgICAgICAgKGNvbmZpZykgPT4gKGNvbmZpZy5oaXN0b3J5TWVzc2FnZUNvdW50ID0gZS50YXJnZXQudmFsdWVBc051bWJlciksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH1cclxuICAgICAgICA+PC9JbnB1dFJhbmdlPlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG5cclxuICAgICAgPExpc3RJdGVtXHJcbiAgICAgICAgdGl0bGU9e0xvY2FsZS5TZXR0aW5ncy5Db21wcmVzc1RocmVzaG9sZC5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkNvbXByZXNzVGhyZXNob2xkLlN1YlRpdGxlfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBhcmlhLWxhYmVsPXtMb2NhbGUuU2V0dGluZ3MuQ29tcHJlc3NUaHJlc2hvbGQuVGl0bGV9XHJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgIG1pbj17NTAwfVxyXG4gICAgICAgICAgbWF4PXs0MDAwfVxyXG4gICAgICAgICAgdmFsdWU9e3Byb3BzLm1vZGVsQ29uZmlnLmNvbXByZXNzTWVzc2FnZUxlbmd0aFRocmVzaG9sZH1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT5cclxuICAgICAgICAgICAgcHJvcHMudXBkYXRlQ29uZmlnKFxyXG4gICAgICAgICAgICAgIChjb25maWcpID0+XHJcbiAgICAgICAgICAgICAgICAoY29uZmlnLmNvbXByZXNzTWVzc2FnZUxlbmd0aFRocmVzaG9sZCA9XHJcbiAgICAgICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC52YWx1ZUFzTnVtYmVyKSxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgID48L2lucHV0PlxyXG4gICAgICA8L0xpc3RJdGVtPlxyXG4gICAgICA8TGlzdEl0ZW0gdGl0bGU9e0xvY2FsZS5NZW1vcnkuVGl0bGV9IHN1YlRpdGxlPXtMb2NhbGUuTWVtb3J5LlNlbmR9PlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgYXJpYS1sYWJlbD17TG9jYWxlLk1lbW9yeS5UaXRsZX1cclxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICBjaGVja2VkPXtwcm9wcy5tb2RlbENvbmZpZy5zZW5kTWVtb3J5fVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PlxyXG4gICAgICAgICAgICBwcm9wcy51cGRhdGVDb25maWcoXHJcbiAgICAgICAgICAgICAgKGNvbmZpZykgPT4gKGNvbmZpZy5zZW5kTWVtb3J5ID0gZS5jdXJyZW50VGFyZ2V0LmNoZWNrZWQpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPjwvaW5wdXQ+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICAgIDxMaXN0SXRlbVxyXG4gICAgICAgIHRpdGxlPXtMb2NhbGUuU2V0dGluZ3MuQ29tcHJlc3NNb2RlbC5UaXRsZX1cclxuICAgICAgICBzdWJUaXRsZT17TG9jYWxlLlNldHRpbmdzLkNvbXByZXNzTW9kZWwuU3ViVGl0bGV9XHJcbiAgICAgID5cclxuICAgICAgICA8U2VsZWN0XHJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcInNlbGVjdC1jb21wcmVzcy1tb2RlbFwiXX1cclxuICAgICAgICAgIGFyaWEtbGFiZWw9e0xvY2FsZS5TZXR0aW5ncy5Db21wcmVzc01vZGVsLlRpdGxlfVxyXG4gICAgICAgICAgdmFsdWU9e2NvbXByZXNzTW9kZWxWYWx1ZX1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBbbW9kZWwsIHByb3ZpZGVyTmFtZV0gPSBnZXRNb2RlbFByb3ZpZGVyKFxyXG4gICAgICAgICAgICAgIGUuY3VycmVudFRhcmdldC52YWx1ZSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcHJvcHMudXBkYXRlQ29uZmlnKChjb25maWcpID0+IHtcclxuICAgICAgICAgICAgICBjb25maWcuY29tcHJlc3NNb2RlbCA9IE1vZGFsQ29uZmlnVmFsaWRhdG9yLm1vZGVsKG1vZGVsKTtcclxuICAgICAgICAgICAgICBjb25maWcuY29tcHJlc3NQcm92aWRlck5hbWUgPSBwcm92aWRlck5hbWUgYXMgU2VydmljZVByb3ZpZGVyO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2FsbE1vZGVsc1xyXG4gICAgICAgICAgICAuZmlsdGVyKCh2KSA9PiB2LmF2YWlsYWJsZSlcclxuICAgICAgICAgICAgLm1hcCgodiwgaSkgPT4gKFxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9e2Ake3YubmFtZX1AJHt2LnByb3ZpZGVyPy5wcm92aWRlck5hbWV9YH0ga2V5PXtpfT5cclxuICAgICAgICAgICAgICAgIHt2LmRpc3BsYXlOYW1lfSh7di5wcm92aWRlcj8ucHJvdmlkZXJOYW1lfSlcclxuICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgPC9TZWxlY3Q+XHJcbiAgICAgIDwvTGlzdEl0ZW0+XHJcbiAgICA8Lz5cclxuICApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJTZXJ2aWNlUHJvdmlkZXIiLCJNb2RhbENvbmZpZ1ZhbGlkYXRvciIsIkxvY2FsZSIsIklucHV0UmFuZ2UiLCJMaXN0SXRlbSIsIlNlbGVjdCIsInVzZUFsbE1vZGVscyIsImdyb3VwQnkiLCJzdHlsZXMiLCJnZXRNb2RlbFByb3ZpZGVyIiwiTW9kZWxDb25maWdMaXN0IiwicHJvcHMiLCJhbGxNb2RlbHMiLCJncm91cE1vZGVscyIsImZpbHRlciIsInYiLCJhdmFpbGFibGUiLCJ2YWx1ZSIsIm1vZGVsQ29uZmlnIiwibW9kZWwiLCJwcm92aWRlck5hbWUiLCJjb21wcmVzc01vZGVsVmFsdWUiLCJjb21wcmVzc01vZGVsIiwiY29tcHJlc3NQcm92aWRlck5hbWUiLCJ0aXRsZSIsIlNldHRpbmdzIiwiTW9kZWwiLCJhcmlhLWxhYmVsIiwiYWxpZ24iLCJvbkNoYW5nZSIsImUiLCJjdXJyZW50VGFyZ2V0IiwidXBkYXRlQ29uZmlnIiwiY29uZmlnIiwiT2JqZWN0Iiwia2V5cyIsIm1hcCIsImluZGV4Iiwib3B0Z3JvdXAiLCJsYWJlbCIsImkiLCJvcHRpb24iLCJuYW1lIiwicHJvdmlkZXIiLCJkaXNwbGF5TmFtZSIsIlRlbXBlcmF0dXJlIiwiVGl0bGUiLCJzdWJUaXRsZSIsIlN1YlRpdGxlIiwiYXJpYSIsInRlbXBlcmF0dXJlIiwidG9GaXhlZCIsIm1pbiIsIm1heCIsInN0ZXAiLCJ2YWx1ZUFzTnVtYmVyIiwiVG9wUCIsInRvcF9wIiwiTWF4VG9rZW5zIiwiaW5wdXQiLCJ0eXBlIiwibWF4X3Rva2VucyIsIkdvb2dsZSIsIlByZXNlbmNlUGVuYWx0eSIsInByZXNlbmNlX3BlbmFsdHkiLCJGcmVxdWVuY3lQZW5hbHR5IiwiZnJlcXVlbmN5X3BlbmFsdHkiLCJJbmplY3RTeXN0ZW1Qcm9tcHRzIiwiY2hlY2tlZCIsImVuYWJsZUluamVjdFN5c3RlbVByb21wdHMiLCJJbnB1dFRlbXBsYXRlIiwidGVtcGxhdGUiLCJIaXN0b3J5Q291bnQiLCJoaXN0b3J5TWVzc2FnZUNvdW50IiwidG9TdHJpbmciLCJ0YXJnZXQiLCJDb21wcmVzc1RocmVzaG9sZCIsImNvbXByZXNzTWVzc2FnZUxlbmd0aFRocmVzaG9sZCIsIk1lbW9yeSIsIlNlbmQiLCJzZW5kTWVtb3J5IiwiQ29tcHJlc3NNb2RlbCIsImNsYXNzTmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/model-config.tsx\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/components/new-chat.tsx":
/*!*************************************!*\
!*** ./app/components/new-chat.tsx ***!
\*************************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ NewChat: function() { return /* binding */ NewChat; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constant */ \"(app-pages-browser)/./app/constant.ts\");\n/* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./button */ \"(app-pages-browser)/./app/components/button.tsx\");\n/* harmony import */ var _emoji__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emoji */ \"(app-pages-browser)/./app/components/emoji.tsx\");\n/* harmony import */ var _new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./new-chat.module.scss */ \"(app-pages-browser)/./app/components/new-chat.module.scss\");\n/* harmony import */ var _new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _icons_left_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/left.svg */ \"(app-pages-browser)/./app/icons/left.svg\");\n/* harmony import */ var _icons_lightning_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/lightning.svg */ \"(app-pages-browser)/./app/icons/lightning.svg\");\n/* harmony import */ var _icons_eye_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../icons/eye.svg */ \"(app-pages-browser)/./app/icons/eye.svg\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! react-router-dom */ \"(app-pages-browser)/./node_modules/react-router/dist/index.js\");\n/* harmony import */ var _store_mask__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../store/mask */ \"(app-pages-browser)/./app/store/mask.ts\");\n/* harmony import */ var _locales__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../locales */ \"(app-pages-browser)/./app/locales/index.ts\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../store */ \"(app-pages-browser)/./app/store/index.ts\");\n/* harmony import */ var _mask__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./mask */ \"(app-pages-browser)/./app/components/mask.tsx\");\n/* harmony import */ var _command__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../command */ \"(app-pages-browser)/./app/command.ts\");\n/* harmony import */ var _ui_lib__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./ui-lib */ \"(app-pages-browser)/./app/components/ui-lib.tsx\");\n/* harmony import */ var _masks__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../masks */ \"(app-pages-browser)/./app/masks/index.ts\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! clsx */ \"(app-pages-browser)/./node_modules/clsx/dist/clsx.mjs\");\n\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction MaskItem(props) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default().mask),\n onClick: props.onClick,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_mask__WEBPACK_IMPORTED_MODULE_11__.MaskAvatar, {\n avatar: props.mask.avatar,\n model: props.mask.modelConfig.model\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 24,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_15__[\"default\"])((_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default()[\"mask-name\"]), \"one-line\"),\n children: props.mask.name\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 28,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 23,\n columnNumber: 5\n }, this);\n}\n_c = MaskItem;\nfunction useMaskGroup(masks) {\n _s();\n const [groups, setGroups] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const computeGroup = ()=>{\n const appBody = document.getElementById(_constant__WEBPACK_IMPORTED_MODULE_2__.SlotID.AppBody);\n if (!appBody || masks.length === 0) return;\n const rect = appBody.getBoundingClientRect();\n const maxWidth = rect.width;\n const maxHeight = rect.height * 0.6;\n const maskItemWidth = 120;\n const maskItemHeight = 50;\n const randomMask = ()=>masks[Math.floor(Math.random() * masks.length)];\n let maskIndex = 0;\n const nextMask = ()=>masks[maskIndex++ % masks.length];\n const rows = Math.ceil(maxHeight / maskItemHeight);\n const cols = Math.ceil(maxWidth / maskItemWidth);\n const newGroups = new Array(rows).fill(0).map((_, _i)=>new Array(cols).fill(0).map((_, j)=>j < 1 || j > cols - 2 ? randomMask() : nextMask()));\n setGroups(newGroups);\n };\n computeGroup();\n window.addEventListener(\"resize\", computeGroup);\n return ()=>window.removeEventListener(\"resize\", computeGroup);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return groups;\n}\n_s(useMaskGroup, \"UbUkkKKaTwVY7PWotTfxor2xXvY=\");\nfunction NewChat() {\n _s1();\n const chatStore = (0,_store__WEBPACK_IMPORTED_MODULE_10__.useChatStore)();\n const maskStore = (0,_store_mask__WEBPACK_IMPORTED_MODULE_8__.useMaskStore)();\n const masks = maskStore.getAll();\n const groups = useMaskGroup(masks);\n const navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_17__.useNavigate)();\n const config = (0,_store__WEBPACK_IMPORTED_MODULE_10__.useAppConfig)();\n const maskRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const { state } = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_17__.useLocation)();\n const startChat = (mask)=>{\n setTimeout(()=>{\n chatStore.newSession(mask);\n navigate(_constant__WEBPACK_IMPORTED_MODULE_2__.Path.Chat);\n }, 10);\n };\n (0,_command__WEBPACK_IMPORTED_MODULE_12__.useCommand)({\n mask: (id)=>{\n try {\n var _maskStore_get;\n const mask = (_maskStore_get = maskStore.get(id)) !== null && _maskStore_get !== void 0 ? _maskStore_get : _masks__WEBPACK_IMPORTED_MODULE_14__.BUILTIN_MASK_STORE.get(id);\n startChat(mask !== null && mask !== void 0 ? mask : undefined);\n } catch (e) {\n console.error(\"[New Chat] failed to create chat from mask id=\", id);\n }\n }\n });\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (maskRef.current) {\n maskRef.current.scrollLeft = (maskRef.current.scrollWidth - maskRef.current.clientWidth) / 2;\n }\n }, [\n groups\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default()[\"new-chat\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default()[\"mask-header\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_3__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_left_svg__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 120,\n columnNumber: 17\n }, void 0),\n text: _locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].NewChat.Return,\n onClick: ()=>navigate(_constant__WEBPACK_IMPORTED_MODULE_2__.Path.Home)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 119,\n columnNumber: 9\n }, this),\n !(state === null || state === void 0 ? void 0 : state.fromHome) && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_3__.IconButton, {\n text: _locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].NewChat.NotShow,\n onClick: async ()=>{\n if (await (0,_ui_lib__WEBPACK_IMPORTED_MODULE_13__.showConfirm)(_locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].NewChat.ConfirmNoShow)) {\n startChat();\n config.update((config)=>config.dontShowMaskSplashScreen = true);\n }\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 125,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 118,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default()[\"mask-cards\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default()[\"mask-card\"]),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_emoji__WEBPACK_IMPORTED_MODULE_4__.EmojiAvatar, {\n avatar: \"1f606\",\n size: 24\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 140,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 139,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default()[\"mask-card\"]),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_emoji__WEBPACK_IMPORTED_MODULE_4__.EmojiAvatar, {\n avatar: \"1f916\",\n size: 24\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 143,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 142,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default()[\"mask-card\"]),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_emoji__WEBPACK_IMPORTED_MODULE_4__.EmojiAvatar, {\n avatar: \"1f479\",\n size: 24\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 146,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 145,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 138,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default().title),\n children: _locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].NewChat.Title\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 150,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default()[\"sub-title\"]),\n children: _locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].NewChat.SubTitle\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 151,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default().actions),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_3__.IconButton, {\n text: _locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].NewChat.More,\n onClick: ()=>navigate(_constant__WEBPACK_IMPORTED_MODULE_2__.Path.Masks),\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_eye_svg__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 157,\n columnNumber: 17\n }, void 0),\n bordered: true,\n shadow: true\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 154,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_3__.IconButton, {\n text: _locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].NewChat.Skip,\n onClick: ()=>startChat(),\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_lightning_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 165,\n columnNumber: 17\n }, void 0),\n type: \"primary\",\n shadow: true,\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default().skip)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 162,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 153,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default().masks),\n ref: maskRef,\n children: groups.map((masks, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_new_chat_module_scss__WEBPACK_IMPORTED_MODULE_16___default()[\"mask-row\"]),\n children: masks.map((mask, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MaskItem, {\n mask: mask,\n onClick: ()=>startChat(mask)\n }, index, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 176,\n columnNumber: 15\n }, this))\n }, i, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 174,\n columnNumber: 11\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 172,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\new-chat.tsx\",\n lineNumber: 117,\n columnNumber: 5\n }, this);\n}\n_s1(NewChat, \"zJvHOUgXrkZ090IUPFYAtsEejjY=\", false, function() {\n return [\n _store__WEBPACK_IMPORTED_MODULE_10__.useChatStore,\n _store_mask__WEBPACK_IMPORTED_MODULE_8__.useMaskStore,\n useMaskGroup,\n react_router_dom__WEBPACK_IMPORTED_MODULE_17__.useNavigate,\n _store__WEBPACK_IMPORTED_MODULE_10__.useAppConfig,\n react_router_dom__WEBPACK_IMPORTED_MODULE_17__.useLocation,\n _command__WEBPACK_IMPORTED_MODULE_12__.useCommand\n ];\n});\n_c1 = NewChat;\nvar _c, _c1;\n$RefreshReg$(_c, \"MaskItem\");\n$RefreshReg$(_c1, \"NewChat\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9jb21wb25lbnRzL25ldy1jaGF0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFvRDtBQUNUO0FBQ0w7QUFDQTtBQUNNO0FBRUg7QUFDVTtBQUNaO0FBRXFCO0FBQ1Q7QUFDbkI7QUFDc0I7QUFDbEI7QUFDSTtBQUNEO0FBQ087QUFDdEI7QUFFeEIsU0FBU3NCLFNBQVNDLEtBQTJDO0lBQzNELHFCQUNFLDhEQUFDQztRQUFJQyxXQUFXbEIsb0VBQWM7UUFBRW1CLFNBQVNILE1BQU1HLE9BQU87OzBCQUNwRCw4REFBQ1QsOENBQVVBO2dCQUNUVSxRQUFRSixNQUFNSyxJQUFJLENBQUNELE1BQU07Z0JBQ3pCRSxPQUFPTixNQUFNSyxJQUFJLENBQUNFLFdBQVcsQ0FBQ0QsS0FBSzs7Ozs7OzBCQUVyQyw4REFBQ0w7Z0JBQUlDLFdBQVdKLGlEQUFJQSxDQUFDZCw0RUFBbUIsRUFBRTswQkFDdkNnQixNQUFNSyxJQUFJLENBQUNHLElBQUk7Ozs7Ozs7Ozs7OztBQUl4QjtLQVpTVDtBQWNULFNBQVNVLGFBQWFDLEtBQWE7O0lBQ2pDLE1BQU0sQ0FBQ0MsUUFBUUMsVUFBVSxHQUFHakMsK0NBQVFBLENBQVcsRUFBRTtJQUVqREYsZ0RBQVNBLENBQUM7UUFDUixNQUFNb0MsZUFBZTtZQUNuQixNQUFNQyxVQUFVQyxTQUFTQyxjQUFjLENBQUNuQyw2Q0FBTUEsQ0FBQ29DLE9BQU87WUFDdEQsSUFBSSxDQUFDSCxXQUFXSixNQUFNUSxNQUFNLEtBQUssR0FBRztZQUVwQyxNQUFNQyxPQUFPTCxRQUFRTSxxQkFBcUI7WUFDMUMsTUFBTUMsV0FBV0YsS0FBS0csS0FBSztZQUMzQixNQUFNQyxZQUFZSixLQUFLSyxNQUFNLEdBQUc7WUFDaEMsTUFBTUMsZ0JBQWdCO1lBQ3RCLE1BQU1DLGlCQUFpQjtZQUV2QixNQUFNQyxhQUFhLElBQU1qQixLQUFLLENBQUNrQixLQUFLQyxLQUFLLENBQUNELEtBQUtFLE1BQU0sS0FBS3BCLE1BQU1RLE1BQU0sRUFBRTtZQUN4RSxJQUFJYSxZQUFZO1lBQ2hCLE1BQU1DLFdBQVcsSUFBTXRCLEtBQUssQ0FBQ3FCLGNBQWNyQixNQUFNUSxNQUFNLENBQUM7WUFFeEQsTUFBTWUsT0FBT0wsS0FBS00sSUFBSSxDQUFDWCxZQUFZRztZQUNuQyxNQUFNUyxPQUFPUCxLQUFLTSxJQUFJLENBQUNiLFdBQVdJO1lBRWxDLE1BQU1XLFlBQVksSUFBSUMsTUFBTUosTUFDekJLLElBQUksQ0FBQyxHQUNMQyxHQUFHLENBQUMsQ0FBQ0MsR0FBR0MsS0FDUCxJQUFJSixNQUFNRixNQUNQRyxJQUFJLENBQUMsR0FDTEMsR0FBRyxDQUFDLENBQUNDLEdBQUdFLElBQU9BLElBQUksS0FBS0EsSUFBSVAsT0FBTyxJQUFJUixlQUFlSztZQUc3RHBCLFVBQVV3QjtRQUNaO1FBRUF2QjtRQUVBOEIsT0FBT0MsZ0JBQWdCLENBQUMsVUFBVS9CO1FBQ2xDLE9BQU8sSUFBTThCLE9BQU9FLG1CQUFtQixDQUFDLFVBQVVoQztJQUNsRCx1REFBdUQ7SUFDekQsR0FBRyxFQUFFO0lBRUwsT0FBT0Y7QUFDVDtHQXhDU0Y7QUEwQ0YsU0FBU3FDOztJQUNkLE1BQU1DLFlBQVl0RCxxREFBWUE7SUFDOUIsTUFBTXVELFlBQVkxRCx5REFBWUE7SUFFOUIsTUFBTW9CLFFBQVFzQyxVQUFVQyxNQUFNO0lBQzlCLE1BQU10QyxTQUFTRixhQUFhQztJQUU1QixNQUFNd0MsV0FBVzdELDhEQUFXQTtJQUM1QixNQUFNOEQsU0FBUzNELHFEQUFZQTtJQUUzQixNQUFNNEQsVUFBVTFFLDZDQUFNQSxDQUFpQjtJQUV2QyxNQUFNLEVBQUUyRSxLQUFLLEVBQUUsR0FBR2pFLDhEQUFXQTtJQUU3QixNQUFNa0UsWUFBWSxDQUFDakQ7UUFDakJrRCxXQUFXO1lBQ1RSLFVBQVVTLFVBQVUsQ0FBQ25EO1lBQ3JCNkMsU0FBU3RFLDJDQUFJQSxDQUFDNkUsSUFBSTtRQUNwQixHQUFHO0lBQ0w7SUFFQTlELHFEQUFVQSxDQUFDO1FBQ1RVLE1BQU0sQ0FBQ3FEO1lBQ0wsSUFBSTtvQkFDV1Y7Z0JBQWIsTUFBTTNDLE9BQU8yQyxDQUFBQSxpQkFBQUEsVUFBVVcsR0FBRyxDQUFDRCxpQkFBZFYsNEJBQUFBLGlCQUFxQm5ELHVEQUFrQkEsQ0FBQzhELEdBQUcsQ0FBQ0Q7Z0JBQ3pESixVQUFVakQsaUJBQUFBLGtCQUFBQSxPQUFRdUQ7WUFDcEIsRUFBRSxVQUFNO2dCQUNOQyxRQUFRQyxLQUFLLENBQUMsa0RBQWtESjtZQUNsRTtRQUNGO0lBQ0Y7SUFFQWpGLGdEQUFTQSxDQUFDO1FBQ1IsSUFBSTJFLFFBQVFXLE9BQU8sRUFBRTtZQUNuQlgsUUFBUVcsT0FBTyxDQUFDQyxVQUFVLEdBQ3hCLENBQUNaLFFBQVFXLE9BQU8sQ0FBQ0UsV0FBVyxHQUFHYixRQUFRVyxPQUFPLENBQUNHLFdBQVcsSUFBSTtRQUNsRTtJQUNGLEdBQUc7UUFBQ3ZEO0tBQU87SUFFWCxxQkFDRSw4REFBQ1Y7UUFBSUMsV0FBV2xCLDJFQUFrQjs7MEJBQ2hDLDhEQUFDaUI7Z0JBQUlDLFdBQVdsQiw4RUFBcUI7O2tDQUNuQyw4REFBQ0YsK0NBQVVBO3dCQUNUcUYsb0JBQU0sOERBQUNsRix1REFBUUE7Ozs7O3dCQUNmbUYsTUFBTTdFLGdEQUFNQSxDQUFDdUQsT0FBTyxDQUFDdUIsTUFBTTt3QkFDM0JsRSxTQUFTLElBQU0rQyxTQUFTdEUsMkNBQUlBLENBQUMwRixJQUFJOzs7Ozs7b0JBRWxDLEVBQUNqQixrQkFBQUEsNEJBQUFBLE1BQU9rQixRQUFRLG1CQUNmLDhEQUFDekYsK0NBQVVBO3dCQUNUc0YsTUFBTTdFLGdEQUFNQSxDQUFDdUQsT0FBTyxDQUFDMEIsT0FBTzt3QkFDNUJyRSxTQUFTOzRCQUNQLElBQUksTUFBTVAscURBQVdBLENBQUNMLGdEQUFNQSxDQUFDdUQsT0FBTyxDQUFDMkIsYUFBYSxHQUFHO2dDQUNuRG5CO2dDQUNBSCxPQUFPdUIsTUFBTSxDQUNYLENBQUN2QixTQUFZQSxPQUFPd0Isd0JBQXdCLEdBQUc7NEJBRW5EO3dCQUNGOzs7Ozs7Ozs7Ozs7MEJBSU4sOERBQUMxRTtnQkFBSUMsV0FBV2xCLDZFQUFvQjs7a0NBQ2xDLDhEQUFDaUI7d0JBQUlDLFdBQVdsQiw0RUFBbUI7a0NBQ2pDLDRFQUFDRCwrQ0FBV0E7NEJBQUNxQixRQUFPOzRCQUFRd0UsTUFBTTs7Ozs7Ozs7Ozs7a0NBRXBDLDhEQUFDM0U7d0JBQUlDLFdBQVdsQiw0RUFBbUI7a0NBQ2pDLDRFQUFDRCwrQ0FBV0E7NEJBQUNxQixRQUFPOzRCQUFRd0UsTUFBTTs7Ozs7Ozs7Ozs7a0NBRXBDLDhEQUFDM0U7d0JBQUlDLFdBQVdsQiw0RUFBbUI7a0NBQ2pDLDRFQUFDRCwrQ0FBV0E7NEJBQUNxQixRQUFPOzRCQUFRd0UsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBSXRDLDhEQUFDM0U7Z0JBQUlDLFdBQVdsQixxRUFBZTswQkFBR08sZ0RBQU1BLENBQUN1RCxPQUFPLENBQUMrQixLQUFLOzs7Ozs7MEJBQ3RELDhEQUFDNUU7Z0JBQUlDLFdBQVdsQiw0RUFBbUI7MEJBQUdPLGdEQUFNQSxDQUFDdUQsT0FBTyxDQUFDZ0MsUUFBUTs7Ozs7OzBCQUU3RCw4REFBQzdFO2dCQUFJQyxXQUFXbEIsdUVBQWlCOztrQ0FDL0IsOERBQUNGLCtDQUFVQTt3QkFDVHNGLE1BQU03RSxnREFBTUEsQ0FBQ3VELE9BQU8sQ0FBQ2lDLElBQUk7d0JBQ3pCNUUsU0FBUyxJQUFNK0MsU0FBU3RFLDJDQUFJQSxDQUFDb0csS0FBSzt3QkFDbENiLG9CQUFNLDhEQUFDaEYsc0RBQU9BOzs7Ozt3QkFDZDhGLFFBQVE7d0JBQ1JDLE1BQU07Ozs7OztrQ0FHUiw4REFBQ3BHLCtDQUFVQTt3QkFDVHNGLE1BQU03RSxnREFBTUEsQ0FBQ3VELE9BQU8sQ0FBQ3FDLElBQUk7d0JBQ3pCaEYsU0FBUyxJQUFNbUQ7d0JBQ2ZhLG9CQUFNLDhEQUFDakYsNERBQWFBOzs7Ozt3QkFDcEJrRyxNQUFLO3dCQUNMRixNQUFNO3dCQUNOaEYsV0FBV2xCLG9FQUFjOzs7Ozs7Ozs7Ozs7MEJBSTdCLDhEQUFDaUI7Z0JBQUlDLFdBQVdsQixxRUFBZTtnQkFBRXFHLEtBQUtqQzswQkFDbkN6QyxPQUFPNEIsR0FBRyxDQUFDLENBQUM3QixPQUFPNEUsa0JBQ2xCLDhEQUFDckY7d0JBQVlDLFdBQVdsQiwyRUFBa0I7a0NBQ3ZDMEIsTUFBTTZCLEdBQUcsQ0FBQyxDQUFDbEMsTUFBTWtGLHNCQUNoQiw4REFBQ3hGO2dDQUVDTSxNQUFNQTtnQ0FDTkYsU0FBUyxJQUFNbUQsVUFBVWpEOytCQUZwQmtGOzs7Ozt1QkFIREQ7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhcEI7SUE5R2dCeEM7O1FBQ0lyRCxpREFBWUE7UUFDWkgscURBQVlBO1FBR2ZtQjtRQUVFcEIsMERBQVdBO1FBQ2JHLGlEQUFZQTtRQUlUSiwwREFBV0E7UUFTN0JPLGlEQUFVQTs7O01BckJJbUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2NvbXBvbmVudHMvbmV3LWNoYXQudHN4PzcwMmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFBhdGgsIFNsb3RJRCB9IGZyb20gXCIuLi9jb25zdGFudFwiO1xyXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSBcIi4vYnV0dG9uXCI7XHJcbmltcG9ydCB7IEVtb2ppQXZhdGFyIH0gZnJvbSBcIi4vZW1vamlcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9uZXctY2hhdC5tb2R1bGUuc2Nzc1wiO1xyXG5cclxuaW1wb3J0IExlZnRJY29uIGZyb20gXCIuLi9pY29ucy9sZWZ0LnN2Z1wiO1xyXG5pbXBvcnQgTGlnaHRuaW5nSWNvbiBmcm9tIFwiLi4vaWNvbnMvbGlnaHRuaW5nLnN2Z1wiO1xyXG5pbXBvcnQgRXllSWNvbiBmcm9tIFwiLi4vaWNvbnMvZXllLnN2Z1wiO1xyXG5cclxuaW1wb3J0IHsgdXNlTG9jYXRpb24sIHVzZU5hdmlnYXRlIH0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcclxuaW1wb3J0IHsgTWFzaywgdXNlTWFza1N0b3JlIH0gZnJvbSBcIi4uL3N0b3JlL21hc2tcIjtcclxuaW1wb3J0IExvY2FsZSBmcm9tIFwiLi4vbG9jYWxlc1wiO1xyXG5pbXBvcnQgeyB1c2VBcHBDb25maWcsIHVzZUNoYXRTdG9yZSB9IGZyb20gXCIuLi9zdG9yZVwiO1xyXG5pbXBvcnQgeyBNYXNrQXZhdGFyIH0gZnJvbSBcIi4vbWFza1wiO1xyXG5pbXBvcnQgeyB1c2VDb21tYW5kIH0gZnJvbSBcIi4uL2NvbW1hbmRcIjtcclxuaW1wb3J0IHsgc2hvd0NvbmZpcm0gfSBmcm9tIFwiLi91aS1saWJcIjtcclxuaW1wb3J0IHsgQlVJTFRJTl9NQVNLX1NUT1JFIH0gZnJvbSBcIi4uL21hc2tzXCI7XHJcbmltcG9ydCBjbHN4IGZyb20gXCJjbHN4XCI7XHJcblxyXG5mdW5jdGlvbiBNYXNrSXRlbShwcm9wczogeyBtYXNrOiBNYXNrOyBvbkNsaWNrPzogKCkgPT4gdm9pZCB9KSB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJtYXNrXCJdfSBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfT5cclxuICAgICAgPE1hc2tBdmF0YXJcclxuICAgICAgICBhdmF0YXI9e3Byb3BzLm1hc2suYXZhdGFyfVxyXG4gICAgICAgIG1vZGVsPXtwcm9wcy5tYXNrLm1vZGVsQ29uZmlnLm1vZGVsfVxyXG4gICAgICAvPlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzeChzdHlsZXNbXCJtYXNrLW5hbWVcIl0sIFwib25lLWxpbmVcIil9PlxyXG4gICAgICAgIHtwcm9wcy5tYXNrLm5hbWV9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gdXNlTWFza0dyb3VwKG1hc2tzOiBNYXNrW10pIHtcclxuICBjb25zdCBbZ3JvdXBzLCBzZXRHcm91cHNdID0gdXNlU3RhdGU8TWFza1tdW10+KFtdKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNvbXB1dGVHcm91cCA9ICgpID0+IHtcclxuICAgICAgY29uc3QgYXBwQm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFNsb3RJRC5BcHBCb2R5KTtcclxuICAgICAgaWYgKCFhcHBCb2R5IHx8IG1hc2tzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgcmVjdCA9IGFwcEJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gcmVjdC53aWR0aDtcclxuICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gcmVjdC5oZWlnaHQgKiAwLjY7XHJcbiAgICAgIGNvbnN0IG1hc2tJdGVtV2lkdGggPSAxMjA7XHJcbiAgICAgIGNvbnN0IG1hc2tJdGVtSGVpZ2h0ID0gNTA7XHJcblxyXG4gICAgICBjb25zdCByYW5kb21NYXNrID0gKCkgPT4gbWFza3NbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbWFza3MubGVuZ3RoKV07XHJcbiAgICAgIGxldCBtYXNrSW5kZXggPSAwO1xyXG4gICAgICBjb25zdCBuZXh0TWFzayA9ICgpID0+IG1hc2tzW21hc2tJbmRleCsrICUgbWFza3MubGVuZ3RoXTtcclxuXHJcbiAgICAgIGNvbnN0IHJvd3MgPSBNYXRoLmNlaWwobWF4SGVpZ2h0IC8gbWFza0l0ZW1IZWlnaHQpO1xyXG4gICAgICBjb25zdCBjb2xzID0gTWF0aC5jZWlsKG1heFdpZHRoIC8gbWFza0l0ZW1XaWR0aCk7XHJcblxyXG4gICAgICBjb25zdCBuZXdHcm91cHMgPSBuZXcgQXJyYXkocm93cylcclxuICAgICAgICAuZmlsbCgwKVxyXG4gICAgICAgIC5tYXAoKF8sIF9pKSA9PlxyXG4gICAgICAgICAgbmV3IEFycmF5KGNvbHMpXHJcbiAgICAgICAgICAgIC5maWxsKDApXHJcbiAgICAgICAgICAgIC5tYXAoKF8sIGopID0+IChqIDwgMSB8fCBqID4gY29scyAtIDIgPyByYW5kb21NYXNrKCkgOiBuZXh0TWFzaygpKSksXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIHNldEdyb3VwcyhuZXdHcm91cHMpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb21wdXRlR3JvdXAoKTtcclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCBjb21wdXRlR3JvdXApO1xyXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIGNvbXB1dGVHcm91cCk7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXHJcbiAgfSwgW10pO1xyXG5cclxuICByZXR1cm4gZ3JvdXBzO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gTmV3Q2hhdCgpIHtcclxuICBjb25zdCBjaGF0U3RvcmUgPSB1c2VDaGF0U3RvcmUoKTtcclxuICBjb25zdCBtYXNrU3RvcmUgPSB1c2VNYXNrU3RvcmUoKTtcclxuXHJcbiAgY29uc3QgbWFza3MgPSBtYXNrU3RvcmUuZ2V0QWxsKCk7XHJcbiAgY29uc3QgZ3JvdXBzID0gdXNlTWFza0dyb3VwKG1hc2tzKTtcclxuXHJcbiAgY29uc3QgbmF2aWdhdGUgPSB1c2VOYXZpZ2F0ZSgpO1xyXG4gIGNvbnN0IGNvbmZpZyA9IHVzZUFwcENvbmZpZygpO1xyXG5cclxuICBjb25zdCBtYXNrUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcclxuXHJcbiAgY29uc3QgeyBzdGF0ZSB9ID0gdXNlTG9jYXRpb24oKTtcclxuXHJcbiAgY29uc3Qgc3RhcnRDaGF0ID0gKG1hc2s/OiBNYXNrKSA9PiB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY2hhdFN0b3JlLm5ld1Nlc3Npb24obWFzayk7XHJcbiAgICAgIG5hdmlnYXRlKFBhdGguQ2hhdCk7XHJcbiAgICB9LCAxMCk7XHJcbiAgfTtcclxuXHJcbiAgdXNlQ29tbWFuZCh7XHJcbiAgICBtYXNrOiAoaWQpID0+IHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBtYXNrID0gbWFza1N0b3JlLmdldChpZCkgPz8gQlVJTFRJTl9NQVNLX1NUT1JFLmdldChpZCk7XHJcbiAgICAgICAgc3RhcnRDaGF0KG1hc2sgPz8gdW5kZWZpbmVkKTtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIltOZXcgQ2hhdF0gZmFpbGVkIHRvIGNyZWF0ZSBjaGF0IGZyb20gbWFzayBpZD1cIiwgaWQpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gIH0pO1xyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKG1hc2tSZWYuY3VycmVudCkge1xyXG4gICAgICBtYXNrUmVmLmN1cnJlbnQuc2Nyb2xsTGVmdCA9XHJcbiAgICAgICAgKG1hc2tSZWYuY3VycmVudC5zY3JvbGxXaWR0aCAtIG1hc2tSZWYuY3VycmVudC5jbGllbnRXaWR0aCkgLyAyO1xyXG4gICAgfVxyXG4gIH0sIFtncm91cHNdKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJuZXctY2hhdFwiXX0+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJtYXNrLWhlYWRlclwiXX0+XHJcbiAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgIGljb249ezxMZWZ0SWNvbiAvPn1cclxuICAgICAgICAgIHRleHQ9e0xvY2FsZS5OZXdDaGF0LlJldHVybn1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG5hdmlnYXRlKFBhdGguSG9tZSl9XHJcbiAgICAgICAgPjwvSWNvbkJ1dHRvbj5cclxuICAgICAgICB7IXN0YXRlPy5mcm9tSG9tZSAmJiAoXHJcbiAgICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgICB0ZXh0PXtMb2NhbGUuTmV3Q2hhdC5Ob3RTaG93fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXthc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGF3YWl0IHNob3dDb25maXJtKExvY2FsZS5OZXdDaGF0LkNvbmZpcm1Ob1Nob3cpKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydENoYXQoKTtcclxuICAgICAgICAgICAgICAgIGNvbmZpZy51cGRhdGUoXHJcbiAgICAgICAgICAgICAgICAgIChjb25maWcpID0+IChjb25maWcuZG9udFNob3dNYXNrU3BsYXNoU2NyZWVuID0gdHJ1ZSksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID48L0ljb25CdXR0b24+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJtYXNrLWNhcmRzXCJdfT5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1wibWFzay1jYXJkXCJdfT5cclxuICAgICAgICAgIDxFbW9qaUF2YXRhciBhdmF0YXI9XCIxZjYwNlwiIHNpemU9ezI0fSAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJtYXNrLWNhcmRcIl19PlxyXG4gICAgICAgICAgPEVtb2ppQXZhdGFyIGF2YXRhcj1cIjFmOTE2XCIgc2l6ZT17MjR9IC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcIm1hc2stY2FyZFwiXX0+XHJcbiAgICAgICAgICA8RW1vamlBdmF0YXIgYXZhdGFyPVwiMWY0NzlcIiBzaXplPXsyNH0gLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzW1widGl0bGVcIl19PntMb2NhbGUuTmV3Q2hhdC5UaXRsZX08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcInN1Yi10aXRsZVwiXX0+e0xvY2FsZS5OZXdDaGF0LlN1YlRpdGxlfTwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImFjdGlvbnNcIl19PlxyXG4gICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICB0ZXh0PXtMb2NhbGUuTmV3Q2hhdC5Nb3JlfVxyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGUoUGF0aC5NYXNrcyl9XHJcbiAgICAgICAgICBpY29uPXs8RXllSWNvbiAvPn1cclxuICAgICAgICAgIGJvcmRlcmVkXHJcbiAgICAgICAgICBzaGFkb3dcclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgdGV4dD17TG9jYWxlLk5ld0NoYXQuU2tpcH1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHN0YXJ0Q2hhdCgpfVxyXG4gICAgICAgICAgaWNvbj17PExpZ2h0bmluZ0ljb24gLz59XHJcbiAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICBzaGFkb3dcclxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzW1wic2tpcFwiXX1cclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJtYXNrc1wiXX0gcmVmPXttYXNrUmVmfT5cclxuICAgICAgICB7Z3JvdXBzLm1hcCgobWFza3MsIGkpID0+IChcclxuICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9e3N0eWxlc1tcIm1hc2stcm93XCJdfT5cclxuICAgICAgICAgICAge21hc2tzLm1hcCgobWFzaywgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgICA8TWFza0l0ZW1cclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBtYXNrPXttYXNrfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc3RhcnRDaGF0KG1hc2spfVxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJQYXRoIiwiU2xvdElEIiwiSWNvbkJ1dHRvbiIsIkVtb2ppQXZhdGFyIiwic3R5bGVzIiwiTGVmdEljb24iLCJMaWdodG5pbmdJY29uIiwiRXllSWNvbiIsInVzZUxvY2F0aW9uIiwidXNlTmF2aWdhdGUiLCJ1c2VNYXNrU3RvcmUiLCJMb2NhbGUiLCJ1c2VBcHBDb25maWciLCJ1c2VDaGF0U3RvcmUiLCJNYXNrQXZhdGFyIiwidXNlQ29tbWFuZCIsInNob3dDb25maXJtIiwiQlVJTFRJTl9NQVNLX1NUT1JFIiwiY2xzeCIsIk1hc2tJdGVtIiwicHJvcHMiLCJkaXYiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwiYXZhdGFyIiwibWFzayIsIm1vZGVsIiwibW9kZWxDb25maWciLCJuYW1lIiwidXNlTWFza0dyb3VwIiwibWFza3MiLCJncm91cHMiLCJzZXRHcm91cHMiLCJjb21wdXRlR3JvdXAiLCJhcHBCb2R5IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIkFwcEJvZHkiLCJsZW5ndGgiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibWF4V2lkdGgiLCJ3aWR0aCIsIm1heEhlaWdodCIsImhlaWdodCIsIm1hc2tJdGVtV2lkdGgiLCJtYXNrSXRlbUhlaWdodCIsInJhbmRvbU1hc2siLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJtYXNrSW5kZXgiLCJuZXh0TWFzayIsInJvd3MiLCJjZWlsIiwiY29scyIsIm5ld0dyb3VwcyIsIkFycmF5IiwiZmlsbCIsIm1hcCIsIl8iLCJfaSIsImoiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIk5ld0NoYXQiLCJjaGF0U3RvcmUiLCJtYXNrU3RvcmUiLCJnZXRBbGwiLCJuYXZpZ2F0ZSIsImNvbmZpZyIsIm1hc2tSZWYiLCJzdGF0ZSIsInN0YXJ0Q2hhdCIsInNldFRpbWVvdXQiLCJuZXdTZXNzaW9uIiwiQ2hhdCIsImlkIiwiZ2V0IiwidW5kZWZpbmVkIiwiY29uc29sZSIsImVycm9yIiwiY3VycmVudCIsInNjcm9sbExlZnQiLCJzY3JvbGxXaWR0aCIsImNsaWVudFdpZHRoIiwiaWNvbiIsInRleHQiLCJSZXR1cm4iLCJIb21lIiwiZnJvbUhvbWUiLCJOb3RTaG93IiwiQ29uZmlybU5vU2hvdyIsInVwZGF0ZSIsImRvbnRTaG93TWFza1NwbGFzaFNjcmVlbiIsInNpemUiLCJUaXRsZSIsIlN1YlRpdGxlIiwiTW9yZSIsIk1hc2tzIiwiYm9yZGVyZWQiLCJzaGFkb3ciLCJTa2lwIiwidHlwZSIsInJlZiIsImkiLCJpbmRleCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/components/new-chat.tsx\n"));
/***/ }),
/***/ "(app-pages-browser)/./app/utils/hooks.ts":
/*!****************************!*\
!*** ./app/utils/hooks.ts ***!
\****************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useAllModels: function() { return /* binding */ useAllModels; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../store */ \"(app-pages-browser)/./app/store/index.ts\");\n/* harmony import */ var _model__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./model */ \"(app-pages-browser)/./app/utils/model.ts\");\n\n\n\nfunction useAllModels() {\n const accessStore = (0,_store__WEBPACK_IMPORTED_MODULE_1__.useAccessStore)();\n const configStore = (0,_store__WEBPACK_IMPORTED_MODULE_1__.useAppConfig)();\n const models = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>{\n return (0,_model__WEBPACK_IMPORTED_MODULE_2__.collectModelsWithDefaultModel)(configStore.models, [\n configStore.customModels,\n accessStore.customModels\n ].join(\",\"), accessStore.defaultModel);\n }, [\n accessStore.customModels,\n accessStore.defaultModel,\n configStore.customModels,\n configStore.models\n ]);\n return models;\n}\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC91dGlscy9ob29rcy50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFnQztBQUN3QjtBQUNBO0FBRWpELFNBQVNJO0lBQ2QsTUFBTUMsY0FBY0osc0RBQWNBO0lBQ2xDLE1BQU1LLGNBQWNKLG9EQUFZQTtJQUNoQyxNQUFNSyxTQUFTUCw4Q0FBT0EsQ0FBQztRQUNyQixPQUFPRyxxRUFBNkJBLENBQ2xDRyxZQUFZQyxNQUFNLEVBQ2xCO1lBQUNELFlBQVlFLFlBQVk7WUFBRUgsWUFBWUcsWUFBWTtTQUFDLENBQUNDLElBQUksQ0FBQyxNQUMxREosWUFBWUssWUFBWTtJQUU1QixHQUFHO1FBQ0RMLFlBQVlHLFlBQVk7UUFDeEJILFlBQVlLLFlBQVk7UUFDeEJKLFlBQVlFLFlBQVk7UUFDeEJGLFlBQVlDLE1BQU07S0FDbkI7SUFFRCxPQUFPQTtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2FwcC91dGlscy9ob29rcy50cz9mOWU4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgdXNlQWNjZXNzU3RvcmUsIHVzZUFwcENvbmZpZyB9IGZyb20gXCIuLi9zdG9yZVwiO1xyXG5pbXBvcnQgeyBjb2xsZWN0TW9kZWxzV2l0aERlZmF1bHRNb2RlbCB9IGZyb20gXCIuL21vZGVsXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdXNlQWxsTW9kZWxzKCkge1xyXG4gIGNvbnN0IGFjY2Vzc1N0b3JlID0gdXNlQWNjZXNzU3RvcmUoKTtcclxuICBjb25zdCBjb25maWdTdG9yZSA9IHVzZUFwcENvbmZpZygpO1xyXG4gIGNvbnN0IG1vZGVscyA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgcmV0dXJuIGNvbGxlY3RNb2RlbHNXaXRoRGVmYXVsdE1vZGVsKFxyXG4gICAgICBjb25maWdTdG9yZS5tb2RlbHMsXHJcbiAgICAgIFtjb25maWdTdG9yZS5jdXN0b21Nb2RlbHMsIGFjY2Vzc1N0b3JlLmN1c3RvbU1vZGVsc10uam9pbihcIixcIiksXHJcbiAgICAgIGFjY2Vzc1N0b3JlLmRlZmF1bHRNb2RlbCxcclxuICAgICk7XHJcbiAgfSwgW1xyXG4gICAgYWNjZXNzU3RvcmUuY3VzdG9tTW9kZWxzLFxyXG4gICAgYWNjZXNzU3RvcmUuZGVmYXVsdE1vZGVsLFxyXG4gICAgY29uZmlnU3RvcmUuY3VzdG9tTW9kZWxzLFxyXG4gICAgY29uZmlnU3RvcmUubW9kZWxzLFxyXG4gIF0pO1xyXG5cclxuICByZXR1cm4gbW9kZWxzO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlQWNjZXNzU3RvcmUiLCJ1c2VBcHBDb25maWciLCJjb2xsZWN0TW9kZWxzV2l0aERlZmF1bHRNb2RlbCIsInVzZUFsbE1vZGVscyIsImFjY2Vzc1N0b3JlIiwiY29uZmlnU3RvcmUiLCJtb2RlbHMiLCJjdXN0b21Nb2RlbHMiLCJqb2luIiwiZGVmYXVsdE1vZGVsIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/utils/hooks.ts\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/defineProperty.js":
/*!*******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/esm/defineProperty.js ***!
\*******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ _defineProperty; }\n/* harmony export */ });\n/* harmony import */ var _toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toPropertyKey.js */ \"(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js\");\n\nfunction _defineProperty(e, r, t) {\n return (r = (0,_toPropertyKey_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUErQztBQUMvQyxTQUFTQyxnQkFBZ0JDLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxDQUFDO0lBQzlCLE9BQU8sQ0FBQ0QsSUFBSUgsNkRBQWFBLENBQUNHLEVBQUMsS0FBTUQsSUFBSUcsT0FBT0MsY0FBYyxDQUFDSixHQUFHQyxHQUFHO1FBQy9ESSxPQUFPSDtRQUNQSSxZQUFZLENBQUM7UUFDYkMsY0FBYyxDQUFDO1FBQ2ZDLFVBQVUsQ0FBQztJQUNiLEtBQUtSLENBQUMsQ0FBQ0MsRUFBRSxHQUFHQyxHQUFHRjtBQUNqQjtBQUNzQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanM/NDJiNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdG9Qcm9wZXJ0eUtleSBmcm9tIFwiLi90b1Byb3BlcnR5S2V5LmpzXCI7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxuZXhwb3J0IHsgX2RlZmluZVByb3BlcnR5IGFzIGRlZmF1bHQgfTsiXSwibmFtZXMiOlsidG9Qcm9wZXJ0eUtleSIsIl9kZWZpbmVQcm9wZXJ0eSIsImUiLCJyIiwidCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/defineProperty.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/extends.js":
/*!************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***!
\************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ _extends; }\n/* harmony export */ });\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function(n) {\n for(var e = 1; e < arguments.length; e++){\n var t = arguments[e];\n for(var r in t)({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQTtJQUNQLE9BQU9BLFdBQVdDLE9BQU9DLE1BQU0sR0FBR0QsT0FBT0MsTUFBTSxDQUFDQyxJQUFJLEtBQUssU0FBVUMsQ0FBQztRQUNsRSxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUMsVUFBVUMsTUFBTSxFQUFFRixJQUFLO1lBQ3pDLElBQUlHLElBQUlGLFNBQVMsQ0FBQ0QsRUFBRTtZQUNwQixJQUFLLElBQUlJLEtBQUtELEVBQUcsQ0FBQyxDQUFDLEdBQUdFLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDSCxHQUFHQyxNQUFPTCxDQUFBQSxDQUFDLENBQUNLLEVBQUUsR0FBR0QsQ0FBQyxDQUFDQyxFQUFFO1FBQ2pFO1FBQ0EsT0FBT0w7SUFDVCxHQUFHSixTQUFTWSxLQUFLLENBQUMsTUFBTU47QUFDMUI7QUFDK0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanM/OGVjMiJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgcmV0dXJuIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKG4pIHtcbiAgICBmb3IgKHZhciBlID0gMTsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKykge1xuICAgICAgdmFyIHQgPSBhcmd1bWVudHNbZV07XG4gICAgICBmb3IgKHZhciByIGluIHQpICh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfSwgX2V4dGVuZHMuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbn1cbmV4cG9ydCB7IF9leHRlbmRzIGFzIGRlZmF1bHQgfTsiXSwibmFtZXMiOlsiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwibiIsImUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ0IiwiciIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/extends.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js":
/*!******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js ***!
\******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ _objectSpread2; }\n/* harmony export */ });\n/* harmony import */ var _defineProperty_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defineProperty.js */ \"(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function(r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for(var r = 1; r < arguments.length; r++){\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n (0,_defineProperty_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQWlEO0FBQ2pELFNBQVNDLFFBQVFDLENBQUMsRUFBRUMsQ0FBQztJQUNuQixJQUFJQyxJQUFJQyxPQUFPQyxJQUFJLENBQUNKO0lBQ3BCLElBQUlHLE9BQU9FLHFCQUFxQixFQUFFO1FBQ2hDLElBQUlDLElBQUlILE9BQU9FLHFCQUFxQixDQUFDTDtRQUNyQ0MsS0FBTUssQ0FBQUEsSUFBSUEsRUFBRUMsTUFBTSxDQUFDLFNBQVVOLENBQUM7WUFDNUIsT0FBT0UsT0FBT0ssd0JBQXdCLENBQUNSLEdBQUdDLEdBQUdRLFVBQVU7UUFDekQsRUFBQyxHQUFJUCxFQUFFUSxJQUFJLENBQUNDLEtBQUssQ0FBQ1QsR0FBR0k7SUFDdkI7SUFDQSxPQUFPSjtBQUNUO0FBQ0EsU0FBU1UsZUFBZVosQ0FBQztJQUN2QixJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVksVUFBVUMsTUFBTSxFQUFFYixJQUFLO1FBQ3pDLElBQUlDLElBQUksUUFBUVcsU0FBUyxDQUFDWixFQUFFLEdBQUdZLFNBQVMsQ0FBQ1osRUFBRSxHQUFHLENBQUM7UUFDL0NBLElBQUksSUFBSUYsUUFBUUksT0FBT0QsSUFBSSxDQUFDLEdBQUdhLE9BQU8sQ0FBQyxTQUFVZCxDQUFDO1lBQ2hESCw4REFBY0EsQ0FBQ0UsR0FBR0MsR0FBR0MsQ0FBQyxDQUFDRCxFQUFFO1FBQzNCLEtBQUtFLE9BQU9hLHlCQUF5QixHQUFHYixPQUFPYyxnQkFBZ0IsQ0FBQ2pCLEdBQUdHLE9BQU9hLHlCQUF5QixDQUFDZCxNQUFNSCxRQUFRSSxPQUFPRCxJQUFJYSxPQUFPLENBQUMsU0FBVWQsQ0FBQztZQUM5SUUsT0FBT0wsY0FBYyxDQUFDRSxHQUFHQyxHQUFHRSxPQUFPSyx3QkFBd0IsQ0FBQ04sR0FBR0Q7UUFDakU7SUFDRjtJQUNBLE9BQU9EO0FBQ1Q7QUFDcUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanM/M2IxNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSBcIi4vZGVmaW5lUHJvcGVydHkuanNcIjtcbmZ1bmN0aW9uIG93bktleXMoZSwgcikge1xuICB2YXIgdCA9IE9iamVjdC5rZXlzKGUpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBvID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICByICYmIChvID0gby5maWx0ZXIoZnVuY3Rpb24gKHIpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsIHIpLmVudW1lcmFibGU7XG4gICAgfSkpLCB0LnB1c2guYXBwbHkodCwgbyk7XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkMihlKSB7XG4gIGZvciAodmFyIHIgPSAxOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKSB7XG4gICAgdmFyIHQgPSBudWxsICE9IGFyZ3VtZW50c1tyXSA/IGFyZ3VtZW50c1tyXSA6IHt9O1xuICAgIHIgJSAyID8gb3duS2V5cyhPYmplY3QodCksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eShlLCByLCB0W3JdKTtcbiAgICB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpIDogb3duS2V5cyhPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24gKHIpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIHIpKTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZTtcbn1cbmV4cG9ydCB7IF9vYmplY3RTcHJlYWQyIGFzIGRlZmF1bHQgfTsiXSwibmFtZXMiOlsiZGVmaW5lUHJvcGVydHkiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZDIiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js":
/*!*********************************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***!
\*********************************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ _objectWithoutPropertiesLoose; }\n/* harmony export */ });\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for(var n in r)if (({}).hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSw4QkFBOEJDLENBQUMsRUFBRUMsQ0FBQztJQUN6QyxJQUFJLFFBQVFELEdBQUcsT0FBTyxDQUFDO0lBQ3ZCLElBQUlFLElBQUksQ0FBQztJQUNULElBQUssSUFBSUMsS0FBS0gsRUFBRyxJQUFJLEVBQUMsR0FBRUksY0FBYyxDQUFDQyxJQUFJLENBQUNMLEdBQUdHLElBQUk7UUFDakQsSUFBSUYsRUFBRUssUUFBUSxDQUFDSCxJQUFJO1FBQ25CRCxDQUFDLENBQUNDLEVBQUUsR0FBR0gsQ0FBQyxDQUFDRyxFQUFFO0lBQ2I7SUFDQSxPQUFPRDtBQUNUO0FBQ29EIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzP2U5YTUiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoZS5pbmNsdWRlcyhuKSkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiciIsImUiLCJ0IiwibiIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluY2x1ZGVzIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js":
/*!****************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js ***!
\****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ toPrimitive; }\n/* harmony export */ });\n/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ \"(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/typeof.js\");\n\nfunction toPrimitive(t, r) {\n if (\"object\" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFrQztBQUNsQyxTQUFTQyxZQUFZQyxDQUFDLEVBQUVDLENBQUM7SUFDdkIsSUFBSSxZQUFZSCxzREFBT0EsQ0FBQ0UsTUFBTSxDQUFDQSxHQUFHLE9BQU9BO0lBQ3pDLElBQUlFLElBQUlGLENBQUMsQ0FBQ0csT0FBT0osV0FBVyxDQUFDO0lBQzdCLElBQUksS0FBSyxNQUFNRyxHQUFHO1FBQ2hCLElBQUlFLElBQUlGLEVBQUVHLElBQUksQ0FBQ0wsR0FBR0MsS0FBSztRQUN2QixJQUFJLFlBQVlILHNEQUFPQSxDQUFDTSxJQUFJLE9BQU9BO1FBQ25DLE1BQU0sSUFBSUUsVUFBVTtJQUN0QjtJQUNBLE9BQU8sQ0FBQyxhQUFhTCxJQUFJTSxTQUFTQyxNQUFLLEVBQUdSO0FBQzVDO0FBQ2tDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcz8zZTYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbmV4cG9ydCB7IHRvUHJpbWl0aXZlIGFzIGRlZmF1bHQgfTsiXSwibmFtZXMiOlsiX3R5cGVvZiIsInRvUHJpbWl0aXZlIiwidCIsInIiLCJlIiwiU3ltYm9sIiwiaSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js":
/*!******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js ***!
\******************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ toPropertyKey; }\n/* harmony export */ });\n/* harmony import */ var _typeof_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typeof.js */ \"(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/typeof.js\");\n/* harmony import */ var _toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toPrimitive.js */ \"(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js\");\n\n\nfunction toPropertyKey(t) {\n var i = (0,_toPrimitive_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(t, \"string\");\n return \"symbol\" == (0,_typeof_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(i) ? i : i + \"\";\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFrQztBQUNTO0FBQzNDLFNBQVNFLGNBQWNDLENBQUM7SUFDdEIsSUFBSUMsSUFBSUgsMkRBQVdBLENBQUNFLEdBQUc7SUFDdkIsT0FBTyxZQUFZSCxzREFBT0EsQ0FBQ0ksS0FBS0EsSUFBSUEsSUFBSTtBQUMxQztBQUNvQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcz8xY2JmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IHRvUHJpbWl0aXZlIGZyb20gXCIuL3RvUHJpbWl0aXZlLmpzXCI7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbmV4cG9ydCB7IHRvUHJvcGVydHlLZXkgYXMgZGVmYXVsdCB9OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwidG9QcmltaXRpdmUiLCJ0b1Byb3BlcnR5S2V5IiwidCIsImkiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/typeof.js":
/*!***********************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/esm/typeof.js ***!
\***********************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ _typeof; }\n/* harmony export */ });\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n return typeof o;\n } : function(o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFFBQVFDLENBQUM7SUFDaEI7SUFFQSxPQUFPRCxVQUFVLGNBQWMsT0FBT0UsVUFBVSxZQUFZLE9BQU9BLE9BQU9DLFFBQVEsR0FBRyxTQUFVRixDQUFDO1FBQzlGLE9BQU8sT0FBT0E7SUFDaEIsSUFBSSxTQUFVQSxDQUFDO1FBQ2IsT0FBT0EsS0FBSyxjQUFjLE9BQU9DLFVBQVVELEVBQUVHLFdBQVcsS0FBS0YsVUFBVUQsTUFBTUMsT0FBT0csU0FBUyxHQUFHLFdBQVcsT0FBT0o7SUFDcEgsR0FBR0QsUUFBUUM7QUFDYjtBQUM4QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzP2IwZmEiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgX3R5cGVvZihvKTtcbn1cbmV4cG9ydCB7IF90eXBlb2YgYXMgZGVmYXVsdCB9OyJdLCJuYW1lcyI6WyJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/@babel/runtime/helpers/esm/typeof.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/lodash-es/_arrayAggregator.js":
/*!****************************************************!*\
!*** ./node_modules/lodash-es/_arrayAggregator.js ***!
\****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */ function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1, length = array == null ? 0 : array.length;\n while(++index < length){\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (arrayAggregator);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5QWdncmVnYXRvci5qcyIsIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztDQVNDLEdBQ0QsU0FBU0EsZ0JBQWdCQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXO0lBQzNELElBQUlDLFFBQVEsQ0FBQyxHQUNUQyxTQUFTTCxTQUFTLE9BQU8sSUFBSUEsTUFBTUssTUFBTTtJQUU3QyxNQUFPLEVBQUVELFFBQVFDLE9BQVE7UUFDdkIsSUFBSUMsUUFBUU4sS0FBSyxDQUFDSSxNQUFNO1FBQ3hCSCxPQUFPRSxhQUFhRyxPQUFPSixTQUFTSSxRQUFRTjtJQUM5QztJQUNBLE9BQU9HO0FBQ1Q7QUFFQSwrREFBZUosZUFBZUEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hcnJheUFnZ3JlZ2F0b3IuanM/MDFlZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUFnZ3JlZ2F0b3JgIGZvciBhcnJheXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5QWdncmVnYXRvcihhcnJheSwgc2V0dGVyLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICBzZXR0ZXIoYWNjdW11bGF0b3IsIHZhbHVlLCBpdGVyYXRlZSh2YWx1ZSksIGFycmF5KTtcbiAgfVxuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFycmF5QWdncmVnYXRvcjtcbiJdLCJuYW1lcyI6WyJhcnJheUFnZ3JlZ2F0b3IiLCJhcnJheSIsInNldHRlciIsIml0ZXJhdGVlIiwiYWNjdW11bGF0b3IiLCJpbmRleCIsImxlbmd0aCIsInZhbHVlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lodash-es/_arrayAggregator.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/lodash-es/_baseAggregator.js":
/*!***************************************************!*\
!*** ./node_modules/lodash-es/_baseAggregator.js ***!
\***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _baseEach_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_baseEach.js */ \"(app-pages-browser)/./node_modules/lodash-es/_baseEach.js\");\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */ function baseAggregator(collection, setter, iteratee, accumulator) {\n (0,_baseEach_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseAggregator);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VBZ2dyZWdhdG9yLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDO0FBRXRDOzs7Ozs7Ozs7O0NBVUMsR0FDRCxTQUFTQyxlQUFlQyxVQUFVLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxXQUFXO0lBQy9ETCx3REFBUUEsQ0FBQ0UsWUFBWSxTQUFTSSxLQUFLLEVBQUVDLEdBQUcsRUFBRUwsVUFBVTtRQUNsREMsT0FBT0UsYUFBYUMsT0FBT0YsU0FBU0UsUUFBUUo7SUFDOUM7SUFDQSxPQUFPRztBQUNUO0FBRUEsK0RBQWVKLGNBQWNBLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUFnZ3JlZ2F0b3IuanM/Y2VlNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUVhY2ggZnJvbSAnLi9fYmFzZUVhY2guanMnO1xuXG4vKipcbiAqIEFnZ3JlZ2F0ZXMgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gIG9uIGBhY2N1bXVsYXRvcmAgd2l0aCBrZXlzIHRyYW5zZm9ybWVkXG4gKiBieSBgaXRlcmF0ZWVgIGFuZCB2YWx1ZXMgc2V0IGJ5IGBzZXR0ZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICovXG5mdW5jdGlvbiBiYXNlQWdncmVnYXRvcihjb2xsZWN0aW9uLCBzZXR0ZXIsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgc2V0dGVyKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaXRlcmF0ZWUodmFsdWUpLCBjb2xsZWN0aW9uKTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUFnZ3JlZ2F0b3I7XG4iXSwibmFtZXMiOlsiYmFzZUVhY2giLCJiYXNlQWdncmVnYXRvciIsImNvbGxlY3Rpb24iLCJzZXR0ZXIiLCJpdGVyYXRlZSIsImFjY3VtdWxhdG9yIiwidmFsdWUiLCJrZXkiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lodash-es/_baseAggregator.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/lodash-es/_baseEach.js":
/*!*********************************************!*\
!*** ./node_modules/lodash-es/_baseEach.js ***!
\*********************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _baseForOwn_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseForOwn.js */ \"(app-pages-browser)/./node_modules/lodash-es/_baseForOwn.js\");\n/* harmony import */ var _createBaseEach_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_createBaseEach.js */ \"(app-pages-browser)/./node_modules/lodash-es/_createBaseEach.js\");\n\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */ var baseEach = (0,_createBaseEach_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_baseForOwn_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n/* harmony default export */ __webpack_exports__[\"default\"] = (baseEach);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VFYWNoLmpzIiwibWFwcGluZ3MiOiI7OztBQUEwQztBQUNRO0FBRWxEOzs7Ozs7O0NBT0MsR0FDRCxJQUFJRSxXQUFXRCw4REFBY0EsQ0FBQ0Qsc0RBQVVBO0FBRXhDLCtEQUFlRSxRQUFRQSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VFYWNoLmpzP2E2ODUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGJhc2VGb3JPd24gZnJvbSAnLi9fYmFzZUZvck93bi5qcyc7XG5pbXBvcnQgY3JlYXRlQmFzZUVhY2ggZnJvbSAnLi9fY3JlYXRlQmFzZUVhY2guanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICovXG52YXIgYmFzZUVhY2ggPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duKTtcblxuZXhwb3J0IGRlZmF1bHQgYmFzZUVhY2g7XG4iXSwibmFtZXMiOlsiYmFzZUZvck93biIsImNyZWF0ZUJhc2VFYWNoIiwiYmFzZUVhY2giXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lodash-es/_baseEach.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/lodash-es/_createAggregator.js":
/*!*****************************************************!*\
!*** ./node_modules/lodash-es/_createAggregator.js ***!
\*****************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _arrayAggregator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_arrayAggregator.js */ \"(app-pages-browser)/./node_modules/lodash-es/_arrayAggregator.js\");\n/* harmony import */ var _baseAggregator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_baseAggregator.js */ \"(app-pages-browser)/./node_modules/lodash-es/_baseAggregator.js\");\n/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_baseIteratee.js */ \"(app-pages-browser)/./node_modules/lodash-es/_baseIteratee.js\");\n/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray.js */ \"(app-pages-browser)/./node_modules/lodash-es/isArray.js\");\n\n\n\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */ function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection) ? _arrayAggregator_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] : _baseAggregator_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"], accumulator = initializer ? initializer() : {};\n return func(collection, setter, (0,_baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(iteratee, 2), accumulator);\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (createAggregator);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NyZWF0ZUFnZ3JlZ2F0b3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBb0Q7QUFDRjtBQUNKO0FBQ1g7QUFFbkM7Ozs7Ozs7Q0FPQyxHQUNELFNBQVNJLGlCQUFpQkMsTUFBTSxFQUFFQyxXQUFXO0lBQzNDLE9BQU8sU0FBU0MsVUFBVSxFQUFFQyxRQUFRO1FBQ2xDLElBQUlDLE9BQU9OLHVEQUFPQSxDQUFDSSxjQUFjUCwyREFBZUEsR0FBR0MsMERBQWNBLEVBQzdEUyxjQUFjSixjQUFjQSxnQkFBZ0IsQ0FBQztRQUVqRCxPQUFPRyxLQUFLRixZQUFZRixRQUFRSCw0REFBWUEsQ0FBQ00sVUFBVSxJQUFJRTtJQUM3RDtBQUNGO0FBRUEsK0RBQWVOLGdCQUFnQkEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jcmVhdGVBZ2dyZWdhdG9yLmpzPzgyMTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFycmF5QWdncmVnYXRvciBmcm9tICcuL19hcnJheUFnZ3JlZ2F0b3IuanMnO1xuaW1wb3J0IGJhc2VBZ2dyZWdhdG9yIGZyb20gJy4vX2Jhc2VBZ2dyZWdhdG9yLmpzJztcbmltcG9ydCBiYXNlSXRlcmF0ZWUgZnJvbSAnLi9fYmFzZUl0ZXJhdGVlLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uZ3JvdXBCeWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpbml0aWFsaXplcl0gVGhlIGFjY3VtdWxhdG9yIG9iamVjdCBpbml0aWFsaXplci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFnZ3JlZ2F0b3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFnZ3JlZ2F0b3Ioc2V0dGVyLCBpbml0aWFsaXplcikge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUFnZ3JlZ2F0b3IgOiBiYXNlQWdncmVnYXRvcixcbiAgICAgICAgYWNjdW11bGF0b3IgPSBpbml0aWFsaXplciA/IGluaXRpYWxpemVyKCkgOiB7fTtcblxuICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIHNldHRlciwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYWNjdW11bGF0b3IpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVBZ2dyZWdhdG9yO1xuIl0sIm5hbWVzIjpbImFycmF5QWdncmVnYXRvciIsImJhc2VBZ2dyZWdhdG9yIiwiYmFzZUl0ZXJhdGVlIiwiaXNBcnJheSIsImNyZWF0ZUFnZ3JlZ2F0b3IiLCJzZXR0ZXIiLCJpbml0aWFsaXplciIsImNvbGxlY3Rpb24iLCJpdGVyYXRlZSIsImZ1bmMiLCJhY2N1bXVsYXRvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lodash-es/_createAggregator.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/lodash-es/_createBaseEach.js":
/*!***************************************************!*\
!*** ./node_modules/lodash-es/_createBaseEach.js ***!
\***************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArrayLike.js */ \"(app-pages-browser)/./node_modules/lodash-es/isArrayLike.js\");\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */ function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!(0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection);\n while(fromRight ? index-- : ++index < length){\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (createBaseEach);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NyZWF0ZUJhc2VFYWNoLmpzIiwibWFwcGluZ3MiOiI7O0FBQTJDO0FBRTNDOzs7Ozs7O0NBT0MsR0FDRCxTQUFTQyxlQUFlQyxRQUFRLEVBQUVDLFNBQVM7SUFDekMsT0FBTyxTQUFTQyxVQUFVLEVBQUVDLFFBQVE7UUFDbEMsSUFBSUQsY0FBYyxNQUFNO1lBQ3RCLE9BQU9BO1FBQ1Q7UUFDQSxJQUFJLENBQUNKLDJEQUFXQSxDQUFDSSxhQUFhO1lBQzVCLE9BQU9GLFNBQVNFLFlBQVlDO1FBQzlCO1FBQ0EsSUFBSUMsU0FBU0YsV0FBV0UsTUFBTSxFQUMxQkMsUUFBUUosWUFBWUcsU0FBUyxDQUFDLEdBQzlCRSxXQUFXQyxPQUFPTDtRQUV0QixNQUFRRCxZQUFZSSxVQUFVLEVBQUVBLFFBQVFELE9BQVM7WUFDL0MsSUFBSUQsU0FBU0csUUFBUSxDQUFDRCxNQUFNLEVBQUVBLE9BQU9DLGNBQWMsT0FBTztnQkFDeEQ7WUFDRjtRQUNGO1FBQ0EsT0FBT0o7SUFDVDtBQUNGO0FBRUEsK0RBQWVILGNBQWNBLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlQmFzZUVhY2guanM/MTg4ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUJhc2VFYWNoO1xuIl0sIm5hbWVzIjpbImlzQXJyYXlMaWtlIiwiY3JlYXRlQmFzZUVhY2giLCJlYWNoRnVuYyIsImZyb21SaWdodCIsImNvbGxlY3Rpb24iLCJpdGVyYXRlZSIsImxlbmd0aCIsImluZGV4IiwiaXRlcmFibGUiLCJPYmplY3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lodash-es/_createBaseEach.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/lodash-es/groupBy.js":
/*!*******************************************!*\
!*** ./node_modules/lodash-es/groupBy.js ***!
\*******************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _baseAssignValue_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_baseAssignValue.js */ \"(app-pages-browser)/./node_modules/lodash-es/_baseAssignValue.js\");\n/* harmony import */ var _createAggregator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_createAggregator.js */ \"(app-pages-browser)/./node_modules/lodash-es/_createAggregator.js\");\n\n\n/** Used for built-in method references. */ var objectProto = Object.prototype;\n/** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */ var groupBy = (0,_createAggregator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n (0,_baseAssignValue_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(result, key, [\n value\n ]);\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (groupBy);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZ3JvdXBCeS5qcyIsIm1hcHBpbmdzIjoiOzs7QUFBb0Q7QUFDRTtBQUV0RCx5Q0FBeUMsR0FDekMsSUFBSUUsY0FBY0MsT0FBT0MsU0FBUztBQUVsQyw4Q0FBOEMsR0FDOUMsSUFBSUMsaUJBQWlCSCxZQUFZRyxjQUFjO0FBRS9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0JDLEdBQ0QsSUFBSUMsVUFBVUwsZ0VBQWdCQSxDQUFDLFNBQVNNLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxHQUFHO0lBQ3hELElBQUlKLGVBQWVLLElBQUksQ0FBQ0gsUUFBUUUsTUFBTTtRQUNwQ0YsTUFBTSxDQUFDRSxJQUFJLENBQUNFLElBQUksQ0FBQ0g7SUFDbkIsT0FBTztRQUNMUiwrREFBZUEsQ0FBQ08sUUFBUUUsS0FBSztZQUFDRDtTQUFNO0lBQ3RDO0FBQ0Y7QUFFQSwrREFBZUYsT0FBT0EsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbG9kYXNoLWVzL2dyb3VwQnkuanM/MTE3NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYmFzZUFzc2lnblZhbHVlIGZyb20gJy4vX2Jhc2VBc3NpZ25WYWx1ZS5qcyc7XG5pbXBvcnQgY3JlYXRlQWdncmVnYXRvciBmcm9tICcuL19jcmVhdGVBZ2dyZWdhdG9yLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgb3JkZXIgb2YgZ3JvdXBlZCB2YWx1ZXNcbiAqIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gYGNvbGxlY3Rpb25gLiBUaGUgY29ycmVzcG9uZGluZ1xuICogdmFsdWUgb2YgZWFjaCBrZXkgaXMgYW4gYXJyYXkgb2YgZWxlbWVudHMgcmVzcG9uc2libGUgZm9yIGdlbmVyYXRpbmcgdGhlXG4gKiBrZXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29tcG9zZWQgYWdncmVnYXRlIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5ncm91cEJ5KFs2LjEsIDQuMiwgNi4zXSwgTWF0aC5mbG9vcik7XG4gKiAvLyA9PiB7ICc0JzogWzQuMl0sICc2JzogWzYuMSwgNi4zXSB9XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmdyb3VwQnkoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sICdsZW5ndGgnKTtcbiAqIC8vID0+IHsgJzMnOiBbJ29uZScsICd0d28nXSwgJzUnOiBbJ3RocmVlJ10gfVxuICovXG52YXIgZ3JvdXBCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwga2V5KSkge1xuICAgIHJlc3VsdFtrZXldLnB1c2godmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgW3ZhbHVlXSk7XG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBncm91cEJ5O1xuIl0sIm5hbWVzIjpbImJhc2VBc3NpZ25WYWx1ZSIsImNyZWF0ZUFnZ3JlZ2F0b3IiLCJvYmplY3RQcm90byIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiZ3JvdXBCeSIsInJlc3VsdCIsInZhbHVlIiwia2V5IiwiY2FsbCIsInB1c2giXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lodash-es/groupBy.js\n"));
/***/ }),
/***/ "(app-pages-browser)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js":
/*!****************************************************************!*\
!*** ./node_modules/tiny-invariant/dist/esm/tiny-invariant.js ***!
\****************************************************************/
/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) {
"use strict";
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ invariant; }\n/* harmony export */ });\nvar isProduction = \"development\" === \"production\";\nvar prefix = \"Invariant failed\";\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === \"function\" ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy90aW55LWludmFyaWFudC9kaXN0L2VzbS90aW55LWludmFyaWFudC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBSUEsZUFBZUMsa0JBQXlCO0FBQzVDLElBQUlDLFNBQVM7QUFDYixTQUFTQyxVQUFVQyxTQUFTLEVBQUVDLE9BQU87SUFDakMsSUFBSUQsV0FBVztRQUNYO0lBQ0o7SUFDQSxJQUFJSixjQUFjO1FBQ2QsTUFBTSxJQUFJTSxNQUFNSjtJQUNwQjtJQUNBLElBQUlLLFdBQVcsT0FBT0YsWUFBWSxhQUFhQSxZQUFZQTtJQUMzRCxJQUFJRyxRQUFRRCxXQUFXLEdBQUdFLE1BQU0sQ0FBQ1AsUUFBUSxNQUFNTyxNQUFNLENBQUNGLFlBQVlMO0lBQ2xFLE1BQU0sSUFBSUksTUFBTUU7QUFDcEI7QUFFZ0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL3RpbnktaW52YXJpYW50L2Rpc3QvZXNtL3RpbnktaW52YXJpYW50LmpzPzJiMjQiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzUHJvZHVjdGlvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbic7XG52YXIgcHJlZml4ID0gJ0ludmFyaWFudCBmYWlsZWQnO1xuZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNQcm9kdWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihwcmVmaXgpO1xuICAgIH1cbiAgICB2YXIgcHJvdmlkZWQgPSB0eXBlb2YgbWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJyA/IG1lc3NhZ2UoKSA6IG1lc3NhZ2U7XG4gICAgdmFyIHZhbHVlID0gcHJvdmlkZWQgPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiOiBcIikuY29uY2F0KHByb3ZpZGVkKSA6IHByZWZpeDtcbiAgICB0aHJvdyBuZXcgRXJyb3IodmFsdWUpO1xufVxuXG5leHBvcnQgeyBpbnZhcmlhbnQgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbImlzUHJvZHVjdGlvbiIsInByb2Nlc3MiLCJwcmVmaXgiLCJpbnZhcmlhbnQiLCJjb25kaXRpb24iLCJtZXNzYWdlIiwiRXJyb3IiLCJwcm92aWRlZCIsInZhbHVlIiwiY29uY2F0IiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/tiny-invariant/dist/esm/tiny-invariant.js\n"));
/***/ })
}]);