{"version":3,"file":"hooks.36a6d822.js","sources":["../../../frontend/features/common/components/Input/index.js","../../../frontend/features/common/components/Radio/index.js","../../../frontend/features/common/components/RadioGroup/index.js","../../../frontend/features/ideation/components/base/TextAreaInput/index.js","../../../frontend/features/common/components/YoutubeEmbedder/index.js","../../../frontend/features/engagement/enums/InputType.js","../../../frontend/features/engagement/components/inputs/ButtonSelectInput/Option/index.js","../../../frontend/features/engagement/components/inputs/ButtonSelectInput/index.js","../../../frontend/features/engagement/components/inputs/CardSelectInput/Card/index.js","../../../frontend/features/engagement/components/inputs/CardSelectInput/index.js","../../../frontend/features/engagement/components/inputs/RadioSelectInput/index.js","../../../node_modules/react-leaflet/esm/hooks.js"],"sourcesContent":["/* eslint-disable react/prop-types */\n// Libraries\nimport React, { forwardRef } from 'react';\nimport classNames from 'classnames';\n\nconst Input = forwardRef(({ className, ariaLabel, ...props }, ref) => (\n  <input\n    type=\"text\"\n    aria-label={ariaLabel}\n    className={classNames(className, 'input is-medium')}\n    {...props}\n    ref={ref}\n  />\n));\n\nexport default Input;\n","// Libraries\nimport React from 'react';\nimport classNames from 'classnames';\n\nconst Radio = ({ className, type, checked, ...props }) => (\n  <input\n    tabIndex={0}\n    aria-checked={checked}\n    checked={checked}\n    className={classNames(className, 'radio__control-input')}\n    type=\"radio\"\n    {...props}\n  />\n);\n\nexport default Radio;\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { withTranslation } from 'react-i18next';\n\n// Utilities\nimport { generateHtmlIdForLabel } from '../../utils/helpers';\n\n// Components\nimport Radio from '../Radio';\n\nexport class RadioGroup extends PureComponent {\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      selectedOption: props.initialValue,\n    };\n  }\n\n  getOptionClickHandler = (id) => () => {\n    const { onChange } = this.props;\n    const { selectedOption } = this.state;\n\n    if (selectedOption !== id) {\n      this.setState({\n        selectedOption: id,\n      });\n\n      if (onChange) {\n        onChange(id);\n      }\n    }\n  };\n\n  renderOption = ({ id, label }) => {\n    const { selectedOption } = this.state;\n    const { t } = this.props;\n    const htmlId = generateHtmlIdForLabel(`${label}-${id}`);\n\n    return (\n      <div key={id} className=\"radio\">\n        <label htmlFor={htmlId} className=\"radio__control-label is-primary-color\">\n          <Radio\n            id={htmlId}\n            checked={selectedOption === id}\n            onChange={this.getOptionClickHandler(id)}\n          />\n          <div className=\"radio__control-display\" />\n          {t(label, { defaultValue: label })}\n        </label>\n      </div>\n    );\n  };\n\n  render() {\n    const { options } = this.props;\n\n    return (\n      <div className=\"radio-group\" role=\"group\" tabIndex={0}>\n        {options.map(this.renderOption)}\n      </div>\n    );\n  }\n}\n\nRadioGroup.propTypes = {\n  t: PropTypes.func.isRequired,\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n      label: PropTypes.string.isRequired,\n    })\n  ).isRequired,\n  initialValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  onChange: PropTypes.func,\n};\n\nRadioGroup.defaultProps = {\n  initialValue: null,\n  onChange: null,\n};\n\nexport default withTranslation()(RadioGroup);\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useTranslation } from 'react-i18next';\n\nconst TextAreaInput = ({\n  id,\n  name,\n  label,\n  register,\n  validations,\n  renderHelpItems,\n  error,\n  placeholder,\n}) => {\n  const { t } = useTranslation();\n\n  return (\n    <div className=\"input-section\">\n      <label className=\"label is-primary-color\" htmlFor={id}>\n        {label}\n        {validations.required ? ' *' : ''}\n      </label>\n      <textarea\n        id={id}\n        aria-label={label}\n        className={classNames('textarea input is-medium', { 'is-danger': error })}\n        placeholder={placeholder}\n        {...register(name, validations)}\n      />\n      {renderHelpItems()}\n      {error && <span className=\"input-error\">{t(error.message)}</span>}\n    </div>\n  );\n};\n\nTextAreaInput.propTypes = {\n  id: PropTypes.string.isRequired,\n  name: PropTypes.string.isRequired,\n  register: PropTypes.func.isRequired,\n  label: PropTypes.string.isRequired,\n  validations: PropTypes.objectOf(PropTypes.any),\n  renderHelpItems: PropTypes.func,\n  error: PropTypes.shape({ message: PropTypes.string.isRequired }),\n  placeholder: PropTypes.string,\n};\n\nTextAreaInput.defaultProps = {\n  validations: {},\n  renderHelpItems: () => {},\n  error: null,\n  placeholder: '',\n};\n\nexport default TextAreaInput;\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst YoutubeEmbedder = ({ id }) => (\n  <div className=\"youtube-embedder\">\n    <div className=\"video-embedder\">\n      <iframe\n        title=\"Youtube video\"\n        src={`https://www.youtube.com/embed/${id}?rel=0`}\n        frameBorder=\"0\"\n        allowFullScreen\n      />\n    </div>\n  </div>\n);\n\nYoutubeEmbedder.propTypes = {\n  id: PropTypes.string.isRequired,\n};\n\nexport default YoutubeEmbedder;\n","export default Object.freeze({\n  BUTTON: 'button',\n});\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst Option = ({ id, label, selected, onClick }) => (\n  <div className={classNames('select-input-option', { selected })}>\n    <input\n      type=\"radio\"\n      id={`select-option-${id}`}\n      aria-label={label}\n      aria-checked={selected}\n      checked={selected}\n      onChange={onClick}\n    />\n    <label htmlFor={`select-option-${id}`} className=\"is-secondary-color is-primary-outline\">\n      {label}\n    </label>\n  </div>\n);\n\nOption.propTypes = {\n  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n  label: PropTypes.string.isRequired,\n  selected: PropTypes.bool.isRequired,\n  onClick: PropTypes.func.isRequired,\n};\n\nexport default Option;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Option from './Option';\n\n/**\n * Text options selector component.\n * Can be used both as radio buttons or checkboxes (single / multi selection).\n */\nclass ButtonSelectInput extends Component {\n  static propTypes = {\n    /**\n     * Array of options.\n     */\n    options: PropTypes.arrayOf(\n      PropTypes.shape({\n        /**\n         * ID used to uniquely identify the option.\n         */\n        id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n        /**\n         * Label to show in option's card.\n         */\n        label: PropTypes.string.isRequired,\n      })\n    ).isRequired,\n    /**\n     * (Optional) Initial selected option.\n     */\n    initialValue: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n    /**\n     * (Optional) Allow multiple selections. Defaults to false.\n     */\n    multipleSelection: PropTypes.bool,\n    /**\n     * (Optional) Callback to run when selection is changed.\n     * Array of selected option ID's is passed to callback as first argument.\n     */\n    onChange: PropTypes.func,\n  };\n\n  static defaultProps = {\n    initialValue: [],\n    multipleSelection: false,\n    onChange: null,\n  };\n\n  constructor(props) {\n    super(props);\n\n    this.state = {\n      selectedOptions: new Set(props.initialValue),\n    };\n  }\n\n  getOptionClickHandler = (id) => () => {\n    const { multipleSelection, onChange } = this.props;\n    const { selectedOptions } = this.state;\n    const isSelected = selectedOptions.has(id);\n\n    if (!multipleSelection) {\n      selectedOptions.clear();\n    }\n\n    if (isSelected) {\n      selectedOptions.delete(id);\n    } else {\n      selectedOptions.add(id);\n    }\n\n    const newSelectedOptions = new Set(selectedOptions);\n\n    this.setState({\n      selectedOptions: newSelectedOptions,\n    });\n\n    if (onChange) {\n      onChange([...newSelectedOptions]);\n    }\n  };\n\n  render() {\n    const { options } = this.props;\n    const { selectedOptions } = this.state;\n\n    return (\n      <div className=\"select-input\" data-test=\"select-input\" role=\"group\" tabIndex={0}>\n        {options.map(({ id, label }) => (\n          <Option\n            key={id}\n            id={id}\n            label={label}\n            selected={selectedOptions.has(id)}\n            onClick={this.getOptionClickHandler(id)}\n          />\n        ))}\n      </div>\n    );\n  }\n}\n\nexport default ButtonSelectInput;\n","// Libraries\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\n// Components\nimport YoutubeEmbedder from 'common/components/YoutubeEmbedder';\n\nconst Card = ({ label, imageUrl, youtubeId, selected, onClick }) => (\n  <div className={classNames('checkbox-cards-input-card', 'card', { selected })} onClick={onClick}>\n    {imageUrl && (\n      <div className=\"card-image\">\n        <figure className=\"image is-4by3\">\n          <img src={imageUrl} draggable={false} alt=\"\" />\n        </figure>\n      </div>\n    )}\n    {youtubeId && <YoutubeEmbedder id={youtubeId} />}\n    <div className=\"card-content\">\n      <div className=\"content\">\n        <span className=\"label is-primary-color\">{label}</span>\n        <div className=\"checkbox\">\n          <i className=\"fas fa-check\" />\n        </div>\n      </div>\n    </div>\n  </div>\n);\n\nCard.propTypes = {\n  label: PropTypes.string.isRequired,\n  imageUrl: PropTypes.string,\n  youtubeId: PropTypes.string,\n  selected: PropTypes.bool.isRequired,\n  onClick: PropTypes.func.isRequired,\n};\n\nCard.defaultProps = {\n  imageUrl: null,\n  youtubeId: null,\n};\n\nexport default Card;\n","// Libraries\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\n\n// Components\nimport Card from './Card';\n\n// Constants\nconst SPACE = 'Space';\n\nclass CardSelectInput extends PureComponent {\n  state = {\n    selectedOptions: new Set(),\n    cardId: null,\n  };\n\n  componentDidMount() {\n    const { initialValue } = this.props;\n    this.setState({ selectedOptions: new Set(initialValue) });\n  }\n\n  addKeyDownListener = (id) => {\n    this.setState({ cardId: id });\n    document.addEventListener('keydown', this.handleKeyDown);\n  };\n\n  removeKeyDownListener = () => {\n    this.setState({ cardId: null });\n    document.removeEventListener('keydown', this.handleKeyDown);\n  };\n\n  handleKeyDown = (event) => {\n    const { cardId } = this.state;\n    if (event.code === SPACE) {\n      event.preventDefault();\n      this.getCardClickHandler(cardId);\n    }\n  };\n\n  getCardClickHandler = (id) => {\n    const { multipleSelection, onChange } = this.props;\n    const { selectedOptions } = this.state;\n    const isSelected = selectedOptions.has(id);\n\n    if (!multipleSelection) {\n      selectedOptions.clear();\n    }\n\n    if (isSelected) {\n      selectedOptions.delete(id);\n    } else {\n      selectedOptions.add(id);\n    }\n\n    const newSelectedOptions = new Set(selectedOptions);\n\n    this.setState({\n      selectedOptions: newSelectedOptions,\n    });\n\n    if (onChange) {\n      onChange([...newSelectedOptions]);\n    }\n  };\n\n  render() {\n    const { options, multipleSelection } = this.props;\n    const { selectedOptions } = this.state;\n\n    return (\n      <div className=\"card-select-input\">\n        <div className=\"columns\">\n          {options.map(({ id, label, imageUrl, youtubeId }) => (\n            <div\n              tabIndex={0}\n              className=\"column\"\n              key={id}\n              aria-label={`${label}-selector`}\n              onFocus={() => this.addKeyDownListener(id)}\n              onBlur={() => this.removeKeyDownListener(id)}\n              role={multipleSelection ? 'checkbox' : 'radio'}\n              aria-checked={selectedOptions.has(id)}\n            >\n              <Card\n                label={label}\n                imageUrl={imageUrl}\n                youtubeId={youtubeId}\n                selected={selectedOptions.has(id)}\n                onClick={() => this.getCardClickHandler(id)}\n              />\n            </div>\n          ))}\n        </div>\n      </div>\n    );\n  }\n}\n\nCardSelectInput.propTypes = {\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n      label: PropTypes.string.isRequired,\n      imageUrl: PropTypes.string,\n      youtubeId: PropTypes.string,\n    })\n  ).isRequired,\n  initialValue: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n  multipleSelection: PropTypes.bool,\n  onChange: PropTypes.func,\n};\n\nCardSelectInput.defaultProps = {\n  initialValue: [],\n  multipleSelection: false,\n  onChange: null,\n};\n\nexport default CardSelectInput;\n","// Libraries\nimport React, { PureComponent, createRef } from 'react';\nimport { withTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\n\n// Components\nimport RadioGroup from 'common/components/RadioGroup';\nimport Input from 'common/components/Input';\n\n// Enumerables\nimport InputFormat from '../../../enums/InputFormat';\n\nexport class RadioSelectInput extends PureComponent {\n  textChoiceInputRef = createRef();\n\n  constructor(props) {\n    super(props);\n\n    const { options } = props;\n    const textChoiceIndex = options.findIndex(({ format }) => format === InputFormat.TEXT_CHOICE);\n    let textChoiceOptionId = null;\n\n    if (textChoiceIndex !== -1) {\n      const textChoiceOption = options.splice(textChoiceIndex, 1)[0];\n      // Move text choice option to the end\n      options.push(textChoiceOption);\n      textChoiceOptionId = textChoiceOption.id;\n    }\n\n    this.state = {\n      options,\n      textChoiceOptionId,\n      selectedOptionId: props.initialValue,\n      textChoiceValue: props.initialTextChoiceValue,\n    };\n  }\n\n  fireOnChange = () => {\n    const { onChange } = this.props;\n    const { selectedOptionId, textChoiceOptionId, textChoiceValue } = this.state;\n\n    if (onChange) {\n      onChange(selectedOptionId, selectedOptionId === textChoiceOptionId ? textChoiceValue : true);\n    }\n  };\n\n  handleChange = (selectedOptionId) => {\n    this.setState({ selectedOptionId }, () => {\n      this.fireOnChange();\n\n      if (this.textChoiceInputRef.current) {\n        this.textChoiceInputRef.current.focus();\n      }\n    });\n  };\n\n  handleTextChoiceChange = ({ target: { value: textChoiceValue } }) => {\n    this.setState({ textChoiceValue }, this.fireOnChange);\n  };\n\n  render() {\n    const { options, selectedOptionId, textChoiceOptionId, textChoiceValue } = this.state;\n    // eslint-disable-next-line react/prop-types\n    const { t } = this.props;\n    return (\n      <div className=\"radio-select-input\">\n        <RadioGroup\n          options={options}\n          initialValue={selectedOptionId}\n          onChange={this.handleChange}\n        />\n        {textChoiceOptionId && (\n          <Input\n            value={textChoiceValue}\n            onChange={this.handleTextChoiceChange}\n            disabled={textChoiceOptionId !== selectedOptionId}\n            ref={this.textChoiceInputRef}\n            ariaLabel={t('Other (please specify)')}\n          />\n        )}\n      </div>\n    );\n  }\n}\n\nRadioSelectInput.propTypes = {\n  options: PropTypes.arrayOf(\n    PropTypes.shape({\n      id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\n      label: PropTypes.string.isRequired,\n      format: PropTypes.string.isRequired,\n    })\n  ).isRequired,\n  initialValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  initialTextChoiceValue: PropTypes.string,\n  onChange: PropTypes.func,\n};\n\nRadioSelectInput.defaultProps = {\n  initialValue: null,\n  initialTextChoiceValue: '',\n  onChange: null,\n};\n\nexport default withTranslation()(RadioSelectInput);\n","import { useLeafletContext } from '@react-leaflet/core';\nimport { useEffect } from 'react';\nexport function useMap() {\n  return useLeafletContext().map;\n}\nexport function useMapEvent(type, handler) {\n  const map = useMap();\n  useEffect(function addMapEventHandler() {\n    // @ts-ignore event type\n    map.on(type, handler);\n    return function removeMapEventHandler() {\n      // @ts-ignore event type\n      map.off(type, handler);\n    };\n  }, [map, type, handler]);\n  return map;\n}\nexport function useMapEvents(handlers) {\n  const map = useMap();\n  useEffect(function addMapEventHandlers() {\n    map.on(handlers);\n    return function removeMapEventHandlers() {\n      map.off(handlers);\n    };\n  }, [map, handlers]);\n  return map;\n}"],"names":["Input","forwardRef","className","ariaLabel","props","ref","React","classNames","Radio","type","checked","RadioGroup","PureComponent","__publicField","id","onChange","selectedOption","label","t","htmlId","generateHtmlIdForLabel","options","PropTypes","RadioGroup$1","withTranslation","TextAreaInput","name","register","validations","renderHelpItems","error","placeholder","useTranslation","YoutubeEmbedder","InputType","Option","selected","onClick","ButtonSelectInput","Component","multipleSelection","selectedOptions","isSelected","newSelectedOptions","Card","imageUrl","youtubeId","SPACE","CardSelectInput","event","cardId","initialValue","RadioSelectInput","createRef","selectedOptionId","textChoiceOptionId","textChoiceValue","textChoiceIndex","format","InputFormat","textChoiceOption","RadioSelectInput$1","useMap","useLeafletContext","useMapEvents","handlers","map","useEffect"],"mappings":"s3BAKM,MAAAA,EAAQC,qBAAW,CAAC,CAAE,UAAAC,EAAW,UAAAC,KAAcC,CAAA,EAASC,IAC3DC,EAAA,cAAA,QAAA,CACC,KAAK,OACL,aAAYH,EACZ,UAAWI,EAAWL,EAAW,iBAAiB,EACjD,GAAGE,EACJ,IAAAC,CAAA,CACF,CACD,ECTKG,EAAQ,CAAC,CAAE,UAAAN,EAAW,KAAAO,EAAM,QAAAC,KAAYN,KAC3CE,EAAA,cAAA,QAAA,CACC,SAAU,EACV,eAAcI,EACd,QAAAA,EACA,UAAWH,EAAWL,EAAW,sBAAsB,EACvD,KAAK,QACJ,GAAGE,CAAA,CACN,ECDK,MAAMO,UAAmBC,EAAAA,QAAAA,aAAc,CAC5C,YAAYR,EAAO,CACjB,MAAMA,CAAK,EAObS,EAAA,6BAAyBC,GAAO,IAAM,CAC9B,KAAA,CAAE,SAAAC,CAAS,EAAI,KAAK,MACpB,CAAE,eAAAC,CAAe,EAAI,KAAK,MAE5BA,IAAmBF,IACrB,KAAK,SAAS,CACZ,eAAgBA,CAAA,CACjB,EAEGC,GACFA,EAASD,CAAE,EAEf,GAGFD,EAAA,oBAAe,CAAC,CAAE,GAAAC,EAAI,MAAAG,KAAY,CAC1B,KAAA,CAAE,eAAAD,CAAe,EAAI,KAAK,MAC1B,CAAE,EAAAE,CAAE,EAAI,KAAK,MACbC,EAASC,EAAuB,GAAGH,KAASH,GAAI,EAEtD,OACGR,EAAA,cAAA,MAAA,CAAI,IAAKQ,EAAI,UAAU,OAAA,EACrBR,EAAA,cAAA,QAAA,CAAM,QAASa,EAAQ,UAAU,uCAAA,EAC/Bb,EAAA,cAAAE,EAAA,CACC,GAAIW,EACJ,QAASH,IAAmBF,EAC5B,SAAU,KAAK,sBAAsBA,CAAE,CAAA,CACzC,EACCR,EAAA,cAAA,MAAA,CAAI,UAAU,wBAAA,CAAyB,EACvCY,EAAED,EAAO,CAAE,aAAcA,CAAM,CAAC,CACnC,CACF,CAAA,GApCF,KAAK,MAAQ,CACX,eAAgBb,EAAM,YAAA,CAE1B,CAqCA,QAAS,CACD,KAAA,CAAE,QAAAiB,CAAQ,EAAI,KAAK,MAEzB,OACGf,EAAA,cAAA,MAAA,CAAI,UAAU,cAAc,KAAK,QAAQ,SAAU,CAAA,EACjDe,EAAQ,IAAI,KAAK,YAAY,CAChC,CAEJ,CACF,CAEAV,EAAW,UAAY,CACrB,EAAGW,EAAAA,QAAU,KAAK,WAClB,QAASA,EAAU,QAAA,QACjBA,EAAAA,QAAU,MAAM,CACd,GAAIA,EAAAA,QAAU,UAAU,CAACA,EAAAA,QAAU,OAAQA,EAAA,QAAU,MAAM,CAAC,EAAE,WAC9D,MAAOA,EAAAA,QAAU,OAAO,UAAA,CACzB,CAAA,EACD,WACF,aAAcA,UAAU,UAAU,CAACA,UAAU,OAAQA,EAAAA,QAAU,MAAM,CAAC,EACtE,SAAUA,EAAU,QAAA,IACtB,EAEAX,EAAW,aAAe,CACxB,aAAc,KACd,SAAU,IACZ,EAEA,MAAAY,EAAeC,EAAA,EAAkBb,CAAU,EC7ErCc,EAAgB,CAAC,CACrB,GAAAX,EACA,KAAAY,EACA,MAAAT,EACA,SAAAU,EACA,YAAAC,EACA,gBAAAC,EACA,MAAAC,EACA,YAAAC,CACF,IAAM,CACE,KAAA,CAAE,EAAAb,GAAMc,IAEd,OACG1B,EAAA,cAAA,MAAA,CAAI,UAAU,eAAA,EACZA,EAAA,cAAA,QAAA,CAAM,UAAU,yBAAyB,QAASQ,CAAA,EAChDG,EACAW,EAAY,SAAW,KAAO,EACjC,EACCtB,EAAA,cAAA,WAAA,CACC,GAAAQ,EACA,aAAYG,EACZ,UAAWV,EAAW,2BAA4B,CAAE,YAAauB,EAAO,EACxE,YAAAC,EACC,GAAGJ,EAASD,EAAME,CAAW,CAAA,CAChC,EACCC,EAAA,EACAC,GAAUxB,EAAA,cAAA,OAAA,CAAK,UAAU,aAAA,EAAeY,EAAEY,EAAM,OAAO,CAAE,CAC5D,CAEJ,EAEAL,EAAc,UAAY,CACxB,GAAIH,EAAAA,QAAU,OAAO,WACrB,KAAMA,EAAAA,QAAU,OAAO,WACvB,SAAUA,EAAAA,QAAU,KAAK,WACzB,MAAOA,EAAAA,QAAU,OAAO,WACxB,YAAaA,EAAA,QAAU,SAASA,EAAAA,QAAU,GAAG,EAC7C,gBAAiBA,EAAU,QAAA,KAC3B,MAAOA,UAAU,MAAM,CAAE,QAASA,UAAU,OAAO,WAAY,EAC/D,YAAaA,EAAU,QAAA,MACzB,EAEAG,EAAc,aAAe,CAC3B,YAAa,CAAC,EACd,gBAAiB,IAAM,CAAC,EACxB,MAAO,KACP,YAAa,EACf,ECjDA,MAAMQ,EAAkB,CAAC,CAAE,GAAAnB,CAAA,IACxBR,EAAA,cAAA,MAAA,CAAI,UAAU,kBAAA,EACZA,EAAA,cAAA,MAAA,CAAI,UAAU,gBAAA,EACZA,EAAA,cAAA,SAAA,CACC,MAAM,gBACN,IAAK,iCAAiCQ,UACtC,YAAY,IACZ,gBAAe,EAAA,CACjB,CACF,CACF,EAGFmB,EAAgB,UAAY,CAC1B,GAAIX,EAAAA,QAAU,OAAO,UACvB,ECnBA,MAAeY,EAAA,OAAO,OAAO,CAC3B,OAAQ,QACV,CAAC,ECGKC,EAAS,CAAC,CAAE,GAAArB,EAAI,MAAAG,EAAO,SAAAmB,EAAU,QAAAC,KACpC/B,EAAA,cAAA,MAAA,CAAI,UAAWC,EAAW,sBAAuB,CAAE,SAAA6B,EAAU,CAAA,EAC3D9B,EAAA,cAAA,QAAA,CACC,KAAK,QACL,GAAI,iBAAiBQ,IACrB,aAAYG,EACZ,eAAcmB,EACd,QAASA,EACT,SAAUC,CAAA,CACZ,EACC/B,EAAA,cAAA,QAAA,CAAM,QAAS,iBAAiBQ,IAAM,UAAU,uCAAA,EAC9CG,CACH,CACF,EAGFkB,EAAO,UAAY,CACjB,GAAIb,EAAAA,QAAU,UAAU,CAACA,EAAAA,QAAU,OAAQA,EAAA,QAAU,MAAM,CAAC,EAAE,WAC9D,MAAOA,EAAAA,QAAU,OAAO,WACxB,SAAUA,EAAAA,QAAU,KAAK,WACzB,QAASA,EAAAA,QAAU,KAAK,UAC1B,EClBA,MAAMgB,UAA0BC,EAAAA,QAAAA,SAAU,CAsCxC,YAAYnC,EAAO,CACjB,MAAMA,CAAK,EAObS,EAAA,6BAAyBC,GAAO,IAAM,CACpC,KAAM,CAAE,kBAAA0B,EAAmB,SAAAzB,GAAa,KAAK,MACvC,CAAE,gBAAA0B,CAAgB,EAAI,KAAK,MAC3BC,EAAaD,EAAgB,IAAI3B,CAAE,EAEpC0B,GACHC,EAAgB,MAAM,EAGpBC,EACFD,EAAgB,OAAO3B,CAAE,EAEzB2B,EAAgB,IAAI3B,CAAE,EAGlB,MAAA6B,EAAqB,IAAI,IAAIF,CAAe,EAElD,KAAK,SAAS,CACZ,gBAAiBE,CAAA,CAClB,EAEG5B,GACOA,EAAA,CAAC,GAAG4B,CAAkB,CAAC,CAClC,GA5BA,KAAK,MAAQ,CACX,gBAAiB,IAAI,IAAIvC,EAAM,YAAY,CAAA,CAE/C,CA4BA,QAAS,CACD,KAAA,CAAE,QAAAiB,CAAQ,EAAI,KAAK,MACnB,CAAE,gBAAAoB,CAAgB,EAAI,KAAK,MAEjC,OACGnC,EAAA,cAAA,MAAA,CAAI,UAAU,eAAe,YAAU,eAAe,KAAK,QAAQ,SAAU,CAAA,EAC3Ee,EAAQ,IAAI,CAAC,CAAE,GAAAP,EAAI,MAAAG,KACjBX,EAAA,cAAA6B,EAAA,CACC,IAAKrB,EACL,GAAAA,EACA,MAAAG,EACA,SAAUwB,EAAgB,IAAI3B,CAAE,EAChC,QAAS,KAAK,sBAAsBA,CAAE,CACxC,CAAA,CACD,CACH,CAEJ,CACF,CAzFED,EADIyB,EACG,YAAY,CAIjB,QAAShB,EAAU,QAAA,QACjBA,EAAAA,QAAU,MAAM,CAId,GAAIA,EAAAA,QAAU,UAAU,CAACA,EAAAA,QAAU,OAAQA,EAAA,QAAU,MAAM,CAAC,EAAE,WAI9D,MAAOA,EAAAA,QAAU,OAAO,UAAA,CACzB,CAAA,EACD,WAIF,aAAcA,EAAU,QAAA,QAAQA,EAAAA,QAAU,UAAU,CAACA,EAAA,QAAU,OAAQA,EAAAA,QAAU,MAAM,CAAC,CAAC,EAIzF,kBAAmBA,EAAU,QAAA,KAK7B,SAAUA,EAAU,QAAA,IAAA,GAGtBT,EAhCIyB,EAgCG,eAAe,CACpB,aAAc,CAAC,EACf,kBAAmB,GACnB,SAAU,IAAA,GCnCd,MAAMM,EAAO,CAAC,CAAE,MAAA3B,EAAO,SAAA4B,EAAU,UAAAC,EAAW,SAAAV,EAAU,QAAAC,KACnD/B,EAAA,cAAA,MAAA,CAAI,UAAWC,EAAW,4BAA6B,OAAQ,CAAE,SAAA6B,EAAU,EAAG,QAAAC,CAAA,EAC5EQ,GACEvC,EAAA,cAAA,MAAA,CAAI,UAAU,YAAA,EACZA,EAAA,cAAA,SAAA,CAAO,UAAU,eAAA,EACfA,EAAA,cAAA,MAAA,CAAI,IAAKuC,EAAU,UAAW,GAAO,IAAI,EAAA,CAAG,CAC/C,CACF,EAEDC,GAAcxC,EAAA,cAAA2B,EAAA,CAAgB,GAAIa,CAAA,CAAW,EAC7CxC,EAAA,cAAA,MAAA,CAAI,UAAU,cAAA,EACZA,EAAA,cAAA,MAAA,CAAI,UAAU,SAAA,EACZA,EAAA,cAAA,OAAA,CAAK,UAAU,wBAAA,EAA0BW,CAAM,EAC/CX,EAAA,cAAA,MAAA,CAAI,UAAU,UAAA,EACZA,EAAA,cAAA,IAAA,CAAE,UAAU,cAAA,CAAe,CAC9B,CACF,CACF,CACF,EAGFsC,EAAK,UAAY,CACf,MAAOtB,EAAAA,QAAU,OAAO,WACxB,SAAUA,EAAU,QAAA,OACpB,UAAWA,EAAU,QAAA,OACrB,SAAUA,EAAAA,QAAU,KAAK,WACzB,QAASA,EAAAA,QAAU,KAAK,UAC1B,EAEAsB,EAAK,aAAe,CAClB,SAAU,KACV,UAAW,IACb,EChCA,MAAMG,EAAQ,QAEd,MAAMC,UAAwBpC,EAAAA,QAAAA,aAAc,CAA5C,kCACEC,EAAA,aAAQ,CACN,oBAAqB,IACrB,OAAQ,IAAA,GAQVA,EAAA,0BAAsBC,GAAO,CAC3B,KAAK,SAAS,CAAE,OAAQA,CAAI,CAAA,EACnB,SAAA,iBAAiB,UAAW,KAAK,aAAa,CAAA,GAGzDD,EAAA,6BAAwB,IAAM,CAC5B,KAAK,SAAS,CAAE,OAAQ,IAAM,CAAA,EACrB,SAAA,oBAAoB,UAAW,KAAK,aAAa,CAAA,GAG5DA,EAAA,qBAAiBoC,GAAU,CACnB,KAAA,CAAE,OAAAC,CAAO,EAAI,KAAK,MACpBD,EAAM,OAASF,IACjBE,EAAM,eAAe,EACrB,KAAK,oBAAoBC,CAAM,EACjC,GAGFrC,EAAA,2BAAuBC,GAAO,CAC5B,KAAM,CAAE,kBAAA0B,EAAmB,SAAAzB,GAAa,KAAK,MACvC,CAAE,gBAAA0B,CAAgB,EAAI,KAAK,MAC3BC,EAAaD,EAAgB,IAAI3B,CAAE,EAEpC0B,GACHC,EAAgB,MAAM,EAGpBC,EACFD,EAAgB,OAAO3B,CAAE,EAEzB2B,EAAgB,IAAI3B,CAAE,EAGlB,MAAA6B,EAAqB,IAAI,IAAIF,CAAe,EAElD,KAAK,SAAS,CACZ,gBAAiBE,CAAA,CAClB,EAEG5B,GACOA,EAAA,CAAC,GAAG4B,CAAkB,CAAC,CAClC,GA9CF,mBAAoB,CACZ,KAAA,CAAE,aAAAQ,CAAa,EAAI,KAAK,MAC9B,KAAK,SAAS,CAAE,gBAAiB,IAAI,IAAIA,CAAY,EAAG,CAC1D,CA8CA,QAAS,CACP,KAAM,CAAE,QAAA9B,EAAS,kBAAAmB,GAAsB,KAAK,MACtC,CAAE,gBAAAC,CAAgB,EAAI,KAAK,MAEjC,OACGnC,EAAA,cAAA,MAAA,CAAI,UAAU,mBAAA,EACZA,EAAA,cAAA,MAAA,CAAI,UAAU,SACZ,EAAAe,EAAQ,IAAI,CAAC,CAAE,GAAAP,EAAI,MAAAG,EAAO,SAAA4B,EAAU,UAAAC,CAAU,IAC5CxC,EAAA,cAAA,MAAA,CACC,SAAU,EACV,UAAU,SACV,IAAKQ,EACL,aAAY,GAAGG,aACf,QAAS,IAAM,KAAK,mBAAmBH,CAAE,EACzC,OAAQ,IAAM,KAAK,sBAAsBA,CAAE,EAC3C,KAAM0B,EAAoB,WAAa,QACvC,eAAcC,EAAgB,IAAI3B,CAAE,CAAA,EAEnCR,EAAA,cAAAsC,EAAA,CACC,MAAA3B,EACA,SAAA4B,EACA,UAAAC,EACA,SAAUL,EAAgB,IAAI3B,CAAE,EAChC,QAAS,IAAM,KAAK,oBAAoBA,CAAE,CAAA,CAC5C,CACF,CACD,CACH,CACF,CAEJ,CACF,CAEAkC,EAAgB,UAAY,CAC1B,QAAS1B,EAAU,QAAA,QACjBA,EAAAA,QAAU,MAAM,CACd,GAAIA,EAAAA,QAAU,UAAU,CAACA,EAAAA,QAAU,OAAQA,EAAA,QAAU,MAAM,CAAC,EAAE,WAC9D,MAAOA,EAAAA,QAAU,OAAO,WACxB,SAAUA,EAAU,QAAA,OACpB,UAAWA,EAAU,QAAA,MAAA,CACtB,CAAA,EACD,WACF,aAAcA,EAAU,QAAA,QAAQA,EAAAA,QAAU,UAAU,CAACA,EAAA,QAAU,OAAQA,EAAAA,QAAU,MAAM,CAAC,CAAC,EACzF,kBAAmBA,EAAU,QAAA,KAC7B,SAAUA,EAAU,QAAA,IACtB,EAEA0B,EAAgB,aAAe,CAC7B,aAAc,CAAC,EACf,kBAAmB,GACnB,SAAU,IACZ,ECxGO,MAAMI,UAAyBxC,EAAAA,QAAAA,aAAc,CAGlD,YAAYR,EAAO,CACjB,MAAMA,CAAK,EAHbS,EAAA,0BAAqBwC,EAAU,QAAA,UAAA,GAwB/BxC,EAAA,oBAAe,IAAM,CACb,KAAA,CAAE,SAAAE,CAAS,EAAI,KAAK,MACpB,CAAE,iBAAAuC,EAAkB,mBAAAC,EAAoB,gBAAAC,CAAA,EAAoB,KAAK,MAEnEzC,GACFA,EAASuC,EAAkBA,IAAqBC,EAAqBC,EAAkB,EAAI,CAC7F,GAGF3C,EAAA,oBAAgByC,GAAqB,CACnC,KAAK,SAAS,CAAE,iBAAAA,CAAiB,EAAG,IAAM,CACxC,KAAK,aAAa,EAEd,KAAK,mBAAmB,SACrB,KAAA,mBAAmB,QAAQ,OAClC,CACD,CAAA,GAGHzC,EAAA,8BAAyB,CAAC,CAAE,OAAQ,CAAE,MAAO2C,MAAwB,CACnE,KAAK,SAAS,CAAE,gBAAAA,CAAgB,EAAG,KAAK,YAAY,CAAA,GAvC9C,KAAA,CAAE,QAAAnC,CAAY,EAAAjB,EACdqD,EAAkBpC,EAAQ,UAAU,CAAC,CAAE,OAAAqC,CAAO,IAAMA,IAAWC,EAAY,WAAW,EAC5F,IAAIJ,EAAqB,KAEzB,GAAIE,IAAoB,GAAI,CAC1B,MAAMG,EAAmBvC,EAAQ,OAAOoC,EAAiB,CAAC,EAAE,GAE5DpC,EAAQ,KAAKuC,CAAgB,EAC7BL,EAAqBK,EAAiB,EACxC,CAEA,KAAK,MAAQ,CACX,QAAAvC,EACA,mBAAAkC,EACA,iBAAkBnD,EAAM,aACxB,gBAAiBA,EAAM,sBAAA,CAE3B,CAyBA,QAAS,CACP,KAAM,CAAE,QAAAiB,EAAS,iBAAAiC,EAAkB,mBAAAC,EAAoB,gBAAAC,GAAoB,KAAK,MAE1E,CAAE,EAAAtC,CAAE,EAAI,KAAK,MACnB,OACGZ,EAAA,cAAA,MAAA,CAAI,UAAU,oBAAA,EACZA,EAAA,cAAAK,EAAA,CACC,QAAAU,EACA,aAAciC,EACd,SAAU,KAAK,YACjB,CAAA,EACCC,GACEjD,EAAA,cAAAN,EAAA,CACC,MAAOwD,EACP,SAAU,KAAK,uBACf,SAAUD,IAAuBD,EACjC,IAAK,KAAK,mBACV,UAAWpC,EAAE,wBAAwB,CACvC,CAAA,CAEJ,CAEJ,CACF,CAEAkC,EAAiB,UAAY,CAC3B,QAAS9B,EAAU,QAAA,QACjBA,EAAAA,QAAU,MAAM,CACd,GAAIA,EAAAA,QAAU,UAAU,CAACA,EAAAA,QAAU,OAAQA,EAAA,QAAU,MAAM,CAAC,EAAE,WAC9D,MAAOA,EAAAA,QAAU,OAAO,WACxB,OAAQA,EAAAA,QAAU,OAAO,UAAA,CAC1B,CAAA,EACD,WACF,aAAcA,UAAU,UAAU,CAACA,UAAU,OAAQA,EAAAA,QAAU,MAAM,CAAC,EACtE,uBAAwBA,EAAU,QAAA,OAClC,SAAUA,EAAU,QAAA,IACtB,EAEA8B,EAAiB,aAAe,CAC9B,aAAc,KACd,uBAAwB,GACxB,SAAU,IACZ,EAEA,MAAAS,EAAerC,EAAA,EAAkB4B,CAAgB,ECtG1C,SAASU,GAAS,CACvB,OAAOC,EAAmB,EAAC,GAC7B,CAaO,SAASC,EAAaC,EAAU,CACrC,MAAMC,EAAMJ,IACZK,OAAAA,EAAS,QAAA,UAAC,UAA+B,CACvC,OAAAD,EAAI,GAAGD,CAAQ,EACR,UAAkC,CACvCC,EAAI,IAAID,CAAQ,CACtB,CACA,EAAK,CAACC,EAAKD,CAAQ,CAAC,EACXC,CACT"}