{"version":3,"file":"index-b6890d81.js","sources":["../node_modules/date-fns/esm/compareAsc/index.js","../node_modules/date-fns/esm/differenceInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/roundingMethods/index.js","../node_modules/date-fns/esm/differenceInMinutes/index.js","../node_modules/date-fns/esm/_lib/cloneObject/index.js","../node_modules/date-fns/esm/formatDistanceStrict/index.js","../node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","../node_modules/date-fns/esm/isAfter/index.js","../node_modules/date-fns/esm/startOfHour/index.js","../node_modules/date-fns/esm/isSameHour/index.js","../node_modules/date-fns/esm/setHours/index.js","../node_modules/date-fns/esm/setMinutes/index.js","../node_modules/date-fns/esm/_lib/isSameUTCWeek/index.js","../node_modules/date-fns/esm/locale/zh-CN/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/zh-CN/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/zh-CN/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/zh-CN/_lib/localize/index.js","../node_modules/date-fns/esm/locale/zh-CN/_lib/match/index.js","../node_modules/date-fns/esm/locale/zh-CN/index.js","../src/assets/flight_top_bg.png","../src/assets/icon_oneway.svg","../src/assets/icon_round_trip.svg","../src/components/air/RecentFlightSearch/index.jsx","../src/components/air/RoutingsList/utils.js","../src/components/air/RoutingsList/components/FlightDetailsModal.jsx","../src/components/air/RoutingsList/components/RulesModal.jsx","../src/hooks/flight/useFlightVerifyPrice.js","../src/components/air/RoutingsList/Routing.jsx","../src/components/air/RoutingsList/constants.js","../src/components/air/RoutingsList/components/Filters.jsx","../src/components/air/RoutingsList/RoutingsList.jsx","../src/components/air/RoutingsList/index.jsx","../src/assets/air-features/objects.svg","../src/assets/air-features/rectangle.svg","../src/assets/air-features/icon_check.svg","../src/components/air/AirFeaturesBanner.jsx","../src/assets/air-features/icon_auth.svg","../src/assets/air-features/icon_coupon.svg","../src/assets/air-features/icon_one_stop.svg","../src/assets/air-features/icon_24_hours.svg","../src/assets/air-features/icon_efficient.svg","../src/components/air/AirFeatures.jsx","../src/pages/air/AirTicketPage.jsx","../src/utils/ios3166_1.js","../src/components/air/PassengersForm.jsx","../src/hooks/flight/useFlightCreateOrder.js","../src/hooks/flight/useCode2Name.js","../src/components/air/FlightSegments/AirportName.jsx","../src/components/air/FlightSegments/Segment.jsx","../src/components/air/FlightSegments/index.jsx","../src/pages/air/AirBookingPage.jsx","../src/hooks/flight/useFlightOrders.js","../src/hooks/flight/useRefreshFlightOrder.js","../src/components/air/FlightOrdersTable/Refresh.jsx","../src/components/air/FlightOrdersTable/index.jsx","../src/pages/air/AirOrdersPage.jsx","../src/components/air/GroupEnquiryCreateForm/constants.js","../src/components/air/GroupFeaturesBanner.jsx","../src/assets/air-features/group_feature_icon_1.svg","../src/assets/air-features/group_feature_icon_2.svg","../src/assets/air-features/group_feature_icon_3.svg","../src/assets/air-features/group_feature_icon_4.svg","../src/components/air/GroupFeatures/index.jsx","../src/components/air/FlightDeals/hooks/useFlightDeals.js","../src/hooks/usePolling.js","../src/components/air/FlightDeals/hooks/useFlightDealBook.js","../src/components/air/FlightDeals/hooks/useFlightDeal.js","../src/components/air/FlightDeals/Actions.jsx","../src/components/air/FlightDeals/Row.jsx","../src/components/air/FlightDeals/index.jsx","../src/components/air/GroupEnquiryCreateForm/index.jsx","../src/hooks/flight/useGroupEnquiryCreate.js","../src/pages/air/GroupTravelPage.jsx","../src/components/air/GroupEnquiriesTable/useGroupEnquiries.js","../src/components/air/GroupEnquiriesTable/storage.js","../src/components/air/GroupEnquiriesTable/index.jsx","../src/pages/air/GroupEnquiriesPage.jsx","../src/hooks/flight/useGroupEnquiry.js","../src/hooks/flight/useGroupEnquiryUpdate.js","../src/pages/air/GroupEnquiryPage.jsx","../src/hooks/flight/useFlightOrder.js","../src/hooks/flight/useFlightIssue.js","../src/pages/air/FlightOrderPage.jsx","../src/pages/air/FlightDealsPage.jsx","../src/pages/air/index.jsx"],"sourcesContent":["import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(object) {\n return assign({}, object);\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 1000 * 60;\nvar MINUTES_IN_DAY = 60 * 24;\nvar MINUTES_IN_MONTH = MINUTES_IN_DAY * 30;\nvar MINUTES_IN_YEAR = MINUTES_IN_DAY * 365;\n\n/**\n * @name formatDistanceStrict\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.roundingMethod` must be 'floor', 'ceil' or 'round'\n * @throws {RangeError} `options.unit` must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistanceStrict(new Date(2014, 6, 2), new Date(2015, 0, 2))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00?\n * const result = formatDistanceStrict(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistanceStrict(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> '1 year ago'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, in minutes?\n * const result = formatDistanceStrict(new Date(2016, 0, 1), new Date(2015, 0, 1), {\n * unit: 'minute'\n * })\n * //=> '525600 minutes'\n *\n * @example\n * // What is the distance from 1 January 2015\n * // to 28 January 2015, in months, rounded up?\n * const result = formatDistanceStrict(new Date(2015, 0, 28), new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistanceStrict(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> '1 jaro'\n */\n\nexport default function formatDistanceStrict(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale, _options$roundingMeth;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain localize.formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var roundingMethod = String((_options$roundingMeth = options === null || options === void 0 ? void 0 : options.roundingMethod) !== null && _options$roundingMeth !== void 0 ? _options$roundingMeth : 'round');\n var roundingMethodFn;\n if (roundingMethod === 'floor') {\n roundingMethodFn = Math.floor;\n } else if (roundingMethod === 'ceil') {\n roundingMethodFn = Math.ceil;\n } else if (roundingMethod === 'round') {\n roundingMethodFn = Math.round;\n } else {\n throw new RangeError(\"roundingMethod must be 'floor', 'ceil' or 'round'\");\n }\n var milliseconds = dateRight.getTime() - dateLeft.getTime();\n var minutes = milliseconds / MILLISECONDS_IN_MINUTE;\n var timezoneOffset = getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft);\n\n // Use DST-normalized difference in minutes for years, months and days;\n // use regular difference in minutes for hours, minutes and seconds.\n var dstNormalizedMinutes = (milliseconds - timezoneOffset) / MILLISECONDS_IN_MINUTE;\n var defaultUnit = options === null || options === void 0 ? void 0 : options.unit;\n var unit;\n if (!defaultUnit) {\n if (minutes < 1) {\n unit = 'second';\n } else if (minutes < 60) {\n unit = 'minute';\n } else if (minutes < MINUTES_IN_DAY) {\n unit = 'hour';\n } else if (dstNormalizedMinutes < MINUTES_IN_MONTH) {\n unit = 'day';\n } else if (dstNormalizedMinutes < MINUTES_IN_YEAR) {\n unit = 'month';\n } else {\n unit = 'year';\n }\n } else {\n unit = String(defaultUnit);\n }\n\n // 0 up to 60 seconds\n if (unit === 'second') {\n var seconds = roundingMethodFn(milliseconds / 1000);\n return locale.formatDistance('xSeconds', seconds, localizeOptions);\n\n // 1 up to 60 mins\n } else if (unit === 'minute') {\n var roundedMinutes = roundingMethodFn(minutes);\n return locale.formatDistance('xMinutes', roundedMinutes, localizeOptions);\n\n // 1 up to 24 hours\n } else if (unit === 'hour') {\n var hours = roundingMethodFn(minutes / 60);\n return locale.formatDistance('xHours', hours, localizeOptions);\n\n // 1 up to 30 days\n } else if (unit === 'day') {\n var days = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 up to 12 months\n } else if (unit === 'month') {\n var months = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_MONTH);\n return months === 12 && defaultUnit !== 'month' ? locale.formatDistance('xYears', 1, localizeOptions) : locale.formatDistance('xMonths', months, localizeOptions);\n\n // 1 year up to max Date\n } else if (unit === 'year') {\n var years = roundingMethodFn(dstNormalizedMinutes / MINUTES_IN_YEAR);\n return locale.formatDistance('xYears', years, localizeOptions);\n }\n throw new RangeError(\"unit must be 'second', 'minute', 'hour', 'day', 'month' or 'year'\");\n}","import formatDistanceStrict from \"../formatDistanceStrict/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNowStrict\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given dates in words, using strict units.\n * This is like `formatDistance`, but does not use helpers like 'almost', 'over',\n * 'less than' and the like.\n *\n * | Distance between dates | Result |\n * |------------------------|---------------------|\n * | 0 ... 59 secs | [0..59] seconds |\n * | 1 ... 59 mins | [1..59] minutes |\n * | 1 ... 23 hrs | [1..23] hours |\n * | 1 ... 29 days | [1..29] days |\n * | 1 ... 11 months | [1..11] months |\n * | 1 ... N years | [1..N] years |\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {'second'|'minute'|'hour'|'day'|'month'|'year'} [options.unit] - if specified, will force a unit\n * @param {'floor'|'ceil'|'round'} [options.roundingMethod='round'] - which way to round partial units\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNowStrict(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNowStrict(\n * new Date(2015, 0, 1, 0, 0, 15)\n * )\n * //=> '15 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in 1 year'\n *\n * @example\n * // If today is 28 January 2015,\n * // what is the distance to 1 January 2015, in months, rounded up??\n * const result = formatDistanceToNowStrict(new Date(2015, 0, 1), {\n * unit: 'month',\n * roundingMethod: 'ceil'\n * })\n * //=> '1 month'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNowStrict(\n * new Date(2016, 0, 1),\n * {locale: eoLocale}\n * )\n * //=> '1 jaro'\n */\nexport default function formatDistanceToNowStrict(dirtyDate, options) {\n requiredArgs(1, arguments);\n return formatDistanceStrict(dirtyDate, Date.now(), options);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}","import startOfHour from \"../startOfHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour (and same day)?\n *\n * @description\n * Are the given dates in the same hour (and same day)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour (and same day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * const result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 5 September 06:00:00 in the same hour?\n * const result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 5, 6, 0))\n * //=> false\n */\nexport default function isSameHour(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft);\n var dateRightStartOfHour = startOfHour(dirtyDateRight);\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nexport default function isSameUTCWeek(dirtyDateLeft, dirtyDateRight, options) {\n requiredArgs(2, arguments);\n var dateLeftStartOfWeek = startOfUTCWeek(dirtyDateLeft, options);\n var dateRightStartOfWeek = startOfUTCWeek(dirtyDateRight, options);\n return dateLeftStartOfWeek.getTime() === dateRightStartOfWeek.getTime();\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: '不到 1 秒',\n other: '不到 {{count}} 秒'\n },\n xSeconds: {\n one: '1 秒',\n other: '{{count}} 秒'\n },\n halfAMinute: '半分钟',\n lessThanXMinutes: {\n one: '不到 1 分钟',\n other: '不到 {{count}} 分钟'\n },\n xMinutes: {\n one: '1 分钟',\n other: '{{count}} 分钟'\n },\n xHours: {\n one: '1 小时',\n other: '{{count}} 小时'\n },\n aboutXHours: {\n one: '大约 1 小时',\n other: '大约 {{count}} 小时'\n },\n xDays: {\n one: '1 天',\n other: '{{count}} 天'\n },\n aboutXWeeks: {\n one: '大约 1 个星期',\n other: '大约 {{count}} 个星期'\n },\n xWeeks: {\n one: '1 个星期',\n other: '{{count}} 个星期'\n },\n aboutXMonths: {\n one: '大约 1 个月',\n other: '大约 {{count}} 个月'\n },\n xMonths: {\n one: '1 个月',\n other: '{{count}} 个月'\n },\n aboutXYears: {\n one: '大约 1 年',\n other: '大约 {{count}} 年'\n },\n xYears: {\n one: '1 年',\n other: '{{count}} 年'\n },\n overXYears: {\n one: '超过 1 年',\n other: '超过 {{count}} 年'\n },\n almostXYears: {\n one: '将近 1 年',\n other: '将近 {{count}} 年'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return result + '内';\n } else {\n return result + '前';\n }\n }\n return result;\n};\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: \"y'年'M'月'd'日' EEEE\",\n long: \"y'年'M'月'd'日'\",\n medium: 'yyyy-MM-dd',\n short: 'yy-MM-dd'\n};\nvar timeFormats = {\n full: 'zzzz a h:mm:ss',\n long: 'z a h:mm:ss',\n medium: 'a h:mm:ss',\n short: 'a h:mm'\n};\nvar dateTimeFormats = {\n full: '{{date}} {{time}}',\n long: '{{date}} {{time}}',\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","import isSameUTCWeek from \"../../../../_lib/isSameUTCWeek/index.js\";\nfunction checkWeek(date, baseDate, options) {\n var baseFormat = 'eeee p';\n if (isSameUTCWeek(date, baseDate, options)) {\n return baseFormat; // in same week\n } else if (date.getTime() > baseDate.getTime()) {\n return \"'下个'\" + baseFormat; // in next week\n }\n\n return \"'上个'\" + baseFormat; // in last week\n}\n\nvar formatRelativeLocale = {\n lastWeek: checkWeek,\n // days before yesterday, maybe in this week or last week\n yesterday: \"'昨天' p\",\n today: \"'今天' p\",\n tomorrow: \"'明天' p\",\n nextWeek: checkWeek,\n // days after tomorrow, maybe in this week or next week\n other: 'PP p'\n};\nvar formatRelative = function formatRelative(token, date, baseDate, options) {\n var format = formatRelativeLocale[token];\n if (typeof format === 'function') {\n return format(date, baseDate, options);\n }\n return format;\n};\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['前', '公元'],\n abbreviated: ['前', '公元'],\n wide: ['公元前', '公元']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['第一季', '第二季', '第三季', '第四季'],\n wide: ['第一季度', '第二季度', '第三季度', '第四季度']\n};\nvar monthValues = {\n narrow: ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'],\n abbreviated: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n wide: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']\n};\nvar dayValues = {\n narrow: ['日', '一', '二', '三', '四', '五', '六'],\n short: ['日', '一', '二', '三', '四', '五', '六'],\n abbreviated: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],\n wide: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']\n};\nvar dayPeriodValues = {\n narrow: {\n am: '上',\n pm: '下',\n midnight: '凌晨',\n noon: '午',\n morning: '早',\n afternoon: '下午',\n evening: '晚',\n night: '夜'\n },\n abbreviated: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜间'\n },\n wide: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜间'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: '上',\n pm: '下',\n midnight: '凌晨',\n noon: '午',\n morning: '早',\n afternoon: '下午',\n evening: '晚',\n night: '夜'\n },\n abbreviated: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜间'\n },\n wide: {\n am: '上午',\n pm: '下午',\n midnight: '凌晨',\n noon: '中午',\n morning: '早晨',\n afternoon: '中午',\n evening: '晚上',\n night: '夜间'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, options) {\n var number = Number(dirtyNumber);\n switch (options === null || options === void 0 ? void 0 : options.unit) {\n case 'date':\n return number.toString() + '日';\n case 'hour':\n return number.toString() + '时';\n case 'minute':\n return number.toString() + '分';\n case 'second':\n return number.toString() + '秒';\n default:\n return '第 ' + number.toString();\n }\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(第\\s*)?\\d+(日|时|分|秒)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(前)/i,\n abbreviated: /^(前)/i,\n wide: /^(公元前|公元)/i\n};\nvar parseEraPatterns = {\n any: [/^(前)/i, /^(公元)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^第[一二三四]刻/i,\n wide: /^第[一二三四]刻钟/i\n};\nvar parseQuarterPatterns = {\n any: [/(1|一)/i, /(2|二)/i, /(3|三)/i, /(4|四)/i]\n};\nvar matchMonthPatterns = {\n narrow: /^(一|二|三|四|五|六|七|八|九|十[二一])/i,\n abbreviated: /^(一|二|三|四|五|六|七|八|九|十[二一]|\\d|1[12])月/i,\n wide: /^(一|二|三|四|五|六|七|八|九|十[二一])月/i\n};\nvar parseMonthPatterns = {\n narrow: [/^一/i, /^二/i, /^三/i, /^四/i, /^五/i, /^六/i, /^七/i, /^八/i, /^九/i, /^十(?!(一|二))/i, /^十一/i, /^十二/i],\n any: [/^一|1/i, /^二|2/i, /^三|3/i, /^四|4/i, /^五|5/i, /^六|6/i, /^七|7/i, /^八|8/i, /^九|9/i, /^十(?!(一|二))|10/i, /^十一|11/i, /^十二|12/i]\n};\nvar matchDayPatterns = {\n narrow: /^[一二三四五六日]/i,\n short: /^[一二三四五六日]/i,\n abbreviated: /^周[一二三四五六日]/i,\n wide: /^星期[一二三四五六日]/i\n};\nvar parseDayPatterns = {\n any: [/日/i, /一/i, /二/i, /三/i, /四/i, /五/i, /六/i]\n};\nvar matchDayPeriodPatterns = {\n any: /^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^上午?/i,\n pm: /^下午?/i,\n midnight: /^午夜/i,\n noon: /^[中正]午/i,\n morning: /^早上/i,\n afternoon: /^下午/i,\n evening: /^晚上?/i,\n night: /^凌晨/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary Chinese Simplified locale.\n * @language Chinese Simplified\n * @iso-639-2 zho\n * @author Changyu Geng [@KingMario]{@link https://github.com/KingMario}\n * @author Song Shuoyun [@fnlctrl]{@link https://github.com/fnlctrl}\n * @author sabrinaM [@sabrinamiao]{@link https://github.com/sabrinamiao}\n * @author Carney Wu [@cubicwork]{@link https://github.com/cubicwork}\n * @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}\n */\nvar locale = {\n code: 'zh-CN',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1 /* Monday */,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","export default \"__VITE_ASSET__72e3dd7e__\"","export default \"__VITE_ASSET__4e66cc75__\"","export default \"__VITE_ASSET__633b6620__\"","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { GetFlightSearchQueryHistory, CleanupFlightSearchQueryHistory } from '@utils/storage';\nimport styles from './styles.module.css';\nimport { Collapse, Typography } from 'antd';\nconst { Text } = Typography;\nimport IconOneway from '@assets/icon_oneway.svg';\nimport IconRoundTrip from '@assets/icon_round_trip.svg';\nimport { useMyContext } from '../../../contexts/MyContext';\nimport { FaRegTrashCan } from 'react-icons/fa6';\n\nfunction index() {\n const { setFlightSearchReq } = useMyContext();\n const initData = GetFlightSearchQueryHistory() ?? [];\n const [data, setData] = useState(initData);\n const [activieKey, setActivieKey] = useState(initData?.length ? ['1'] : []);\n\n useEffect(() => {\n if (data?.length) {\n setActivieKey(['1']);\n } else {\n setActivieKey([]);\n }\n }, [data]);\n\n const handleOnClick = (item) => {\n setFlightSearchReq(item);\n };\n\n const Content = () => {\n return (\n
\n {data.map((item, index) => {\n return (\n
handleOnClick(item)}>\n
\n \n {item.fromCity}\n \n
\n \n
\n \n {item.toCity}\n \n
\n
\n
{item.retDate ? '往返' : '单程'}
\n
{item.fromDate}
\n
\n
\n );\n })}\n
\n );\n };\n\n const handleFlush = (e) => {\n e.stopPropagation();\n if (confirm('确定清空搜索记录吗?') !== true) return;\n CleanupFlightSearchQueryHistory();\n setData([]);\n };\n\n const Trigger = () => {\n return (\n
\n
最近搜索
\n {data.length > 0 && (\n
\n \n 清空历史\n
\n )}\n
\n );\n };\n\n return (\n
\n ,\n children: ,\n },\n ]}\n onChange={(key) => {\n setActivieKey(key);\n }}\n />\n
\n );\n}\n\nindex.propTypes = {};\n\nexport default index;\n","import { zhCN } from 'date-fns/locale';\nimport {\n parse,\n format,\n differenceInMinutes,\n differenceInDays,\n setMinutes,\n setHours,\n isAfter,\n isBefore,\n isSameHour,\n} from 'date-fns';\n\nexport const timeParse = (str) => {\n const parsedDate = parse(str, 'yyyyMMddHHmm', new Date());\n return format(parsedDate, 'MM月dd日 HH:mm', { locale: zhCN });\n};\n\nexport const timePrint = (str) => {\n const parsedDate = parse(str, 'yyyyMMddHHmm', new Date());\n return format(parsedDate, 'HH:mm', { locale: zhCN });\n};\n\nexport const diffInDays = (segments) => {\n if (!segments || segments.length === 0) return '-';\n const depTime = parse(segments[0].depTime, 'yyyyMMddHHmm', new Date());\n const arrTime = parse(segments[segments.length - 1].arrTime, 'yyyyMMddHHmm', new Date());\n return differenceInDays(arrTime, depTime);\n};\n\nexport const getFlightNumbers = (segments) => {\n return segments?.map((seg) => seg.flightNumber).join('/') || '-';\n};\n\n//add up duration because if timezone difference we can not use arrTime - depTime\nexport const getTotalDuration = (segments) => {\n if (!segments || segments.length === 0) return '-';\n const totalMinutes = segments.reduce((acc, seg) => acc + (seg.duration || 0), 0);\n return `${Math.floor(totalMinutes / 60)}h${totalMinutes % 60}m`;\n};\n\n// Transfer is in the same timezone so it is safe to use arrTime - depTime\nexport const getTransferInfo = (segments) => {\n if (segments.length === 1) return '直达';\n const transfers = segments.slice(0, -1).map((seg, index) => {\n const nextSeg = segments[index + 1];\n const arrTime = parse(seg.arrTime, 'yyyyMMddHHmm', new Date());\n const nextDepTime = parse(nextSeg.depTime, 'yyyyMMddHHmm', new Date());\n const stopDuration = differenceInMinutes(nextDepTime, arrTime);\n return {\n airport: seg.arrAirportName,\n duration: `${Math.floor(stopDuration / 60)}h${stopDuration % 60}m`,\n };\n });\n return transfers.map((t) => `${t.airport}/${t.duration}`).join(' → ');\n};\n\n//Time stirng in format 'yyyyMMddHHmm'\nexport const isInTimeSlot = (timeString, [startHour, endHour]) => {\n if (!timeString) return false;\n const date = parse(timeString, 'yyyyMMddHHmm', new Date());\n const startTime = setMinutes(setHours(date, startHour), 0);\n const endTime = setMinutes(setHours(date, endHour), 0);\n\n if (startHour < endHour) {\n return (isAfter(date, startTime) || isSameHour(date, startTime)) && isBefore(date, endTime);\n } else {\n // For time slots that cross midnight\n return isAfter(date, startTime) || isBefore(date, endTime) || isSameHour(date, startTime);\n }\n};\n","import React from 'react';\nimport { Modal, Table, Typography } from 'antd';\nimport { timeParse } from '../utils';\nimport PropTypes from 'prop-types';\n\nconst { Title } = Typography;\n\nconst FlightDetailsModal = ({ open, routing, onClose }) => {\n if (!routing) return null;\n\n const isRoundTrip = routing.retSegments && routing.retSegments.length > 0;\n\n const columns = [\n { title: '序号', dataIndex: 'index', key: 'index' },\n { title: '航司', dataIndex: 'airline', key: 'airline' },\n { title: '航班号', dataIndex: 'flightNumber', key: 'flightNumber' },\n { title: '舱等', dataIndex: 'cabinClass', key: 'cabinClass' },\n { title: '行程', dataIndex: 'route', key: 'route' },\n { title: '时间', dataIndex: 'time', key: 'time' },\n { title: '飞行时长', dataIndex: 'duration', key: 'duration' },\n ];\n\n const getFlightDetails = (segments) =>\n segments.map((segment, index) => ({\n key: index,\n index: index + 1,\n airline: segment.airline.companyName,\n flightNumber: segment.flightNumber,\n cabinClass: segment.cabinClassName,\n route: `${segment.depAirportName}${segment.depTerminal && `T${segment.depTerminal}`}(${\n segment.depAirportCode\n }) - ${segment.arrAirportName}${segment.arrTerminal && `T${segment.arrTerminal}`}(${\n segment.arrAirportCode\n })`,\n time: `${timeParse(segment.depTime)} - ${timeParse(segment.arrTime)}`,\n duration: `${Math.floor(segment.duration / 60)}h${segment.duration % 60}m`,\n }));\n\n return (\n \n {/* From */}\n {isRoundTrip && 去程}\n
\n \n \n\n {/* To */}\n {routing.retSegments && routing.retSegments.length > 0 && (\n <>\n \n 回程\n \n
\n \n )}\n \n );\n};\n\nFlightDetailsModal.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n routing: PropTypes.object.isRequired,\n};\n\nexport default FlightDetailsModal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Modal, Typography, Space } from 'antd';\n\nconst { Text } = Typography;\n\nconst RulesModal = ({ rules, open, onClose }) => {\n if (!rules) return null;\n\n const RuleSection = ({ title, content }) => (\n \n

{title}

\n {content}\n
\n );\n\n return (\n \n \n \n \n \n \n \n \n \n );\n};\n\nRulesModal.propTypes = {\n open: PropTypes.bool.isRequired,\n onClose: PropTypes.func.isRequired,\n rules: PropTypes.object.isRequired,\n};\n\nexport default RulesModal;\n","import { useState, useRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport * as config from '@config';\nimport { GetToken } from '@utils/storage';\nimport { TripType } from '@components/air/TripTypePicker';\n\nfunction useFlightVerifyPrice() {\n const [verifying, setVerifying] = useState(false);\n const abortControllerRef = useRef(null);\n\n const handleVerify = useCallback(\n async ({ request = null, priceInfo = null, fromSegments = [], retSegments = [] }) => {\n if (!request) {\n throw new Error('Request is required');\n }\n if (!priceInfo) {\n throw new Error('Price info is required');\n }\n if (fromSegments.length === 0) {\n throw new Error('At least one fromSegment is required');\n }\n // console.log('request:', request);\n // console.log('priceInfo:', priceInfo);\n for (let i = 0; i < fromSegments.length; i++) {\n fromSegments[i].cabin = priceInfo.flights.from[i].cabin;\n }\n for (let i = 0; i < retSegments.length; i++) {\n retSegments[i].cabin = priceInfo.flights.ret[i].cabin;\n }\n const req = {\n numAdult: request.numAdult,\n numChild: request.numChild,\n tripType: request.tripType,\n routing: {\n channelSource: priceInfo.channelSource,\n data: priceInfo.data,\n fromSegments: fromSegments,\n retSegments: retSegments,\n },\n creditTest: priceInfo.totalPrice ?? 0, //to test credit\n };\n console.log('verify req:', req);\n setVerifying(true);\n abortControllerRef.current = new AbortController();\n try {\n //DEBUG:\n // await new Promise((resolve) => setTimeout(resolve, 6000));\n // throw new Error('Simulation');\n const response = await fetch(`${config.apiURL2}/flights/verify`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${GetToken()}`,\n },\n body: JSON.stringify(req),\n signal: abortControllerRef.current.signal,\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'An error occurred while verifying flight price');\n }\n const data = await response.json();\n console.log(data);\n return data;\n } catch (err) {\n if (err.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error verifying flight price:', err);\n throw new Error(err.message || 'An error occurred while verifying flight price');\n }\n } finally {\n setVerifying(false);\n }\n },\n [config.apiURL2]\n );\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { verifying, handleVerify, abort };\n}\n\nuseFlightVerifyPrice.propTypes = {};\n\nexport default useFlightVerifyPrice;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Routing.module.css';\nimport { diffInDays, getTotalDuration, getTransferInfo, timePrint } from './utils';\nimport { Space, Typography } from 'antd';\nimport FlightDetailsModal from './components/FlightDetailsModal';\nimport RulesModal from './components/RulesModal';\nimport { DownOutlined } from '@ant-design/icons';\nimport * as config from '@config';\nimport { useNavigate } from 'react-router';\nimport { App, Button, Grid, Spin } from 'antd';\nimport useFlightVerifyPrice from '../../../hooks/flight/useFlightVerifyPrice';\nimport { prettifyCurrency } from '../../../utils/utils';\n\nconst { Text } = Typography;\nconst { useBreakpoint } = Grid;\n\nfunction Routing({ routing, request }) {\n const expandableRef = useRef();\n const [openRoutingDetails, setOpenRoutingDetails] = useState(false);\n const navigate = useNavigate();\n const { message } = App.useApp();\n const screens = useBreakpoint();\n // console.log('ddd');\n\n const [expanded, setExpanded] = useState(false);\n const isRoundTrip = routing.retSegments?.length > 0;\n\n const toggleExpanded = () => {\n const content = expandableRef.current;\n if (content.style.maxHeight) {\n content.style.maxHeight = null;\n setExpanded(false);\n } else {\n content.style.maxHeight = content.scrollHeight + 'px';\n setExpanded(true);\n }\n };\n\n // Adapte to both one-way and round-trip\n const Airline = ({ segments }) => {\n if (!segments || segments.length === 0) return 'Error';\n return (\n
\n
\n \"\"\n
\n
\n
{segments[0].airline.companyName}
\n
{segments[0].flightNumber}
\n {!screens.sm && }\n
\n
\n );\n };\n\n const FlightInfo = ({ segments }) => {\n if (!segments || segments.length === 0) return 'Error';\n const firstSegment = segments[0];\n const lastSegment = segments[segments.length - 1];\n return (\n
\n {/* departure */}\n
\n
\n
{timePrint(firstSegment.depTime)}
\n
\n
\n
\n {firstSegment.depAirport.name}\n {firstSegment.depAirportCode}\n
\n
\n
\n {/* divider */}\n
\n
{getTotalDuration(segments)}
\n
\n
{getTransferInfo(segments)}
\n
\n {/* arrival */}\n
\n
\n
\n {timePrint(lastSegment.arrTime)}\n
{diffInDays(segments) > 0 && `+${diffInDays(segments)}`}
\n
\n
\n
\n
\n {lastSegment.arrAirportCode}\n {lastSegment.arrAirport.name}\n
\n
\n
\n
\n );\n };\n\n const FlightDetail = useCallback(() => {\n return (\n <>\n \n setOpenRoutingDetails(false)}\n />\n \n );\n }, [screens.sm, openRoutingDetails, routing, setOpenRoutingDetails]);\n\n const PriceListItem = ({ price }) => {\n const [openRuleDetails, setOpenRuleDetails] = useState(false);\n const { verifying, handleVerify, abort: abortVerify } = useFlightVerifyPrice();\n const { rule, flights } = price;\n const { from, ret } = flights;\n\n useEffect(() => {\n return () => {\n abortVerify();\n };\n }, []);\n\n const handlePriceVerify = (req) => {\n console.log('Verify price');\n handleVerify(req)\n .then((data) => {\n // Navigate to book page, pass data to the page,\n navigate({ pathname: 'book' }, { replace: false, state: data });\n })\n .catch((error) => {\n console.error('Error verifying price:', error);\n message?.error(error.message);\n });\n };\n\n return (\n <>\n
系统 {price.channelName}
\n
\n
\n \n {from.map((item, index) => (\n \n {item.cabinClass}/{item.cabin}/{item.cabinCount}\n \n ))}\n {ret.map((item, index) => (\n \n {item.cabinClass}/{item.cabin}/{item.cabinCount}\n \n ))}\n \n
\n
\n
\n \n setOpenRuleDetails(false)} />\n
\n
\n
\n \n
\n
\n
\n
\n {price.currency}\n {prettifyCurrency(price.adultPrice + price.adultTax)}\n
\n {/*
\n {price.currency}\n {prettifyCurrency(price.childPrice)}\n 儿童\n
*/}\n
\n \n handlePriceVerify({\n request: request,\n priceInfo: price,\n fromSegments: routing.fromSegments,\n retSegments: routing.retSegments,\n })\n }\n >\n 预订\n \n \n
Verifying
\n \n
\n }\n />\n \n \n );\n };\n\n return (\n
\n
\n {isRoundTrip &&
}\n
\n \n {isRoundTrip && }\n
\n
\n \n {isRoundTrip && }\n
\n
{screens.sm && }
\n
\n
\n
\n {routing.priceList[0].currency}\n \n {prettifyCurrency(routing.priceList[0].adultPrice + routing.priceList[0].adultTax)}\n \n
\n {/*
\n {routing.priceList[0].currency}\n {prettifyCurrency(routing.priceList[0].childPrice)}\n 儿童\n
*/}\n
\n \n
\n
\n
\n {routing.priceList.map((price, index) => {\n return (\n
\n \n
\n );\n })}\n
\n
\n );\n}\n\nRouting.propTypes = {\n routing: PropTypes.object.isRequired,\n request: PropTypes.object.isRequired,\n};\n\nexport default React.memo(Routing);\n","// Centralized time slot definitions\nexport const TIME_SLOTS = {\n EARLY_MORNING: { value: '5,8', label: '清晨 (5:00 AM - 8:00 AM)' },\n MORNING: { value: '8,12', label: '上午 (8:00 AM - 12:00 PM)' },\n NOON: { value: '12,15', label: '中午 (12:00 PM - 3:00 PM)' },\n AFTERNOON: { value: '15,18', label: '下午 (3:00 PM - 6:00 PM)' },\n EVENING: { value: '18,21', label: '晚上 (6:00 PM - 9:00 PM)' },\n NIGHT: { value: '21,24', label: '夜间 (9:00 PM - 12:00 AM)' },\n LATE_NIGHT: { value: '0,5', label: '凌晨 (12:00 AM - 5:00 AM)' },\n};\n\n// Centralized stop type definitions\nexport const STOP_TYPES = {\n NONSTOP: { value: 'nonstop', label: '直飞' },\n WITH_STOPS: { value: 'withStops', label: '中转' },\n};\n","import React, { useState, useMemo, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Filters.module.css';\nimport { Button, Checkbox, Select } from 'antd';\nimport { STOP_TYPES, TIME_SLOTS } from '../constants.js';\nimport { ReloadOutlined } from '@ant-design/icons';\n\nexport const FilterKey = {\n AIRLINE: 'airline', // airline IATA code\n DEPARTURE_TIME: 'departureTime',\n ARRIVAL_TIME: 'arrivalTime',\n DEPARTURE: 'departure',\n ARRIVAL: 'arrival',\n STOP_TYPE: 'stopType',\n STOPS: 'stops',\n LOWEST_PRICE: 'lowestPrice',\n};\n\nfunction Filters({\n airlineOptions = [],\n stopsOptions = [],\n depAirportOptions = [],\n arrAirportOptions = [],\n filterData = {},\n setFilterData = () => {},\n}) {\n const timeOptions = useMemo(\n () => Object.values(TIME_SLOTS).map((slot) => ({ label: slot.label, value: slot.value })),\n []\n );\n\n const handleFilterChange = useCallback(\n (key, value) => {\n setFilterData((prev) => ({ ...prev, [key]: value }));\n },\n [setFilterData]\n );\n\n const handleStopTypeChange = useCallback(\n (e) => {\n handleFilterChange(\n FilterKey.STOP_TYPE,\n e.target.checked ? STOP_TYPES.NONSTOP.value : STOP_TYPES.WITH_STOPS.value\n );\n },\n [handleFilterChange]\n );\n\n const handleReset = () => {\n setFilterData({});\n };\n\n return (\n
\n
\n \n 直飞\n \n handleFilterChange(FilterKey.STOPS, value)}\n value={filterData[FilterKey.STOPS]}\n size=\"small\"\n options={stopsOptions}\n disabled={filterData[FilterKey.STOP_TYPE] === STOP_TYPES.NONSTOP.value || stopsOptions?.length == 0}\n allowClear\n popupMatchSelectWidth={false}\n />\n handleFilterChange(FilterKey.AIRLINE, value)}\n value={filterData[FilterKey.AIRLINE]}\n size=\"small\"\n options={airlineOptions}\n allowClear\n popupMatchSelectWidth={false}\n />\n handleFilterChange(FilterKey.DEPARTURE_TIME, value)}\n size=\"small\"\n options={timeOptions}\n popupMatchSelectWidth={false}\n allowClear\n />\n handleFilterChange(FilterKey.ARRIVAL_TIME, value)}\n size=\"small\"\n options={timeOptions}\n popupMatchSelectWidth={false}\n allowClear\n />\n handleFilterChange(FilterKey.DEPARTURE, value)}\n size=\"small\"\n options={depAirportOptions}\n popupMatchSelectWidth={false}\n allowClear\n />\n handleFilterChange(FilterKey.ARRIVAL, value)}\n size=\"small\"\n options={arrAirportOptions}\n popupMatchSelectWidth={false}\n allowClear\n />\n
\n
\n \n
\n
\n );\n}\n\nFilters.propTypes = {\n airlineOptions: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),\n stopsOptions: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),\n depAirportOptions: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),\n arrAirportOptions: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })),\n filterData: PropTypes.object,\n setFilterData: PropTypes.func.isRequired,\n};\n\nexport default React.memo(Filters);\n","import React, { useEffect, useState, useMemo, useCallback, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Routing from './Routing';\nimport styles from './RoutingsList.module.css';\nimport Filters, { FilterKey } from './components/Filters';\nimport { STOP_TYPES } from './constants';\nimport { isInTimeSlot } from './utils';\n\nfunction RoutingsList({ routings = [], request = {} }) {\n // processed routing data\n const [data, setData] = useState([]);\n // loaded items\n const [loadedItems, setLoadedItems] = useState([]);\n const [filterData, setFilterData] = useState({});\n const loaderRef = useRef(null);\n const ITEMS_PER_PAGE = 15;\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting && data.length > loadedItems.length) {\n loadMoreItems();\n }\n },\n { threshold: 0.1 }\n );\n\n if (loaderRef.current) {\n observer.observe(loaderRef.current);\n }\n\n return () => {\n if (loaderRef.current) {\n observer.unobserve(loaderRef.current);\n }\n };\n }, [data, loadedItems]);\n\n const loadMoreItems = useCallback(() => {\n const nextItems = data.slice(loadedItems.length, loadedItems.length + ITEMS_PER_PAGE);\n setLoadedItems((prevItems) => [...prevItems, ...nextItems]);\n }, [data, loadedItems]);\n\n useEffect(() => {\n applyFilters(routings);\n console.log('routing', routings.slice(0, 1));\n }, [filterData]);\n\n const airlineOptions = useMemo(() => {\n const airlines = new Set();\n routings.forEach((route) => {\n route.fromSegments.forEach((seg) => {\n airlines.add(seg.operatingCarrier);\n });\n if (route.retSegments) {\n route.retSegments.forEach((seg) => {\n airlines.add(seg.operatingCarrier);\n });\n }\n });\n return Array.from(airlines).map((airline) => ({ label: airline, value: airline }));\n }, [routings]);\n\n const { depAirportOptions, arrAirportOptions } = useMemo(() => {\n const departureAirports = new Set();\n const arrivalAirports = new Set();\n routings.forEach((route) => {\n if (route.fromSegments?.[0]?.depAirportCode) {\n departureAirports.add(route.fromSegments[0].depAirportCode);\n }\n if (route.fromSegments?.length > 0) {\n const lastFromSegment = route.fromSegments[route.fromSegments.length - 1];\n if (lastFromSegment.arrAirportCode) {\n arrivalAirports.add(lastFromSegment.arrAirportCode);\n }\n }\n if (route.retSegments?.[0]?.depAirportCode) {\n departureAirports.add(route.retSegments[0].depAirportCode);\n }\n if (route.retSegments?.length > 0) {\n const lastRetSegment = route.retSegments[route.retSegments.length - 1];\n if (lastRetSegment.arrAirportCode) {\n arrivalAirports.add(lastRetSegment.arrAirportCode);\n }\n }\n });\n return {\n depAirportOptions: Array.from(departureAirports).map((code) => ({ label: code, value: code })),\n arrAirportOptions: Array.from(arrivalAirports).map((code) => ({ label: code, value: code })),\n };\n }, [routings]);\n\n const stopsOptions = useMemo(() => {\n const stopAirports = new Set();\n routings.forEach((route) => {\n if (route.fromSegments?.length > 1) {\n route.fromSegments.forEach((seg) => {\n stopAirports.add(seg.depAirportCode);\n stopAirports.add(seg.arrAirportCode);\n });\n // remove first and last segment's depAirport and arrAirport\n const firstSegment = route.fromSegments[0];\n const lastSegment = route.fromSegments[route.fromSegments.length - 1];\n stopAirports.delete(firstSegment.depAirportCode);\n stopAirports.delete(lastSegment.arrAirportCode);\n }\n\n if (route.retSegments?.length > 1) {\n route.retSegments.forEach((seg) => {\n stopAirports.add(seg.depAirportCode);\n stopAirports.add(seg.arrAirportCode);\n });\n // remove first and last segment's depAirport and arrAirport\n const firstSegment = route.retSegments[0];\n const lastSegment = route.retSegments[route.retSegments.length - 1];\n stopAirports.delete(firstSegment.depAirportCode);\n stopAirports.delete(lastSegment.arrAirportCode);\n }\n });\n return Array.from(stopAirports).map((code) => ({ label: code, value: code }));\n }, [routings]);\n\n const applyFilters = useCallback(\n (routings) => {\n console.log('apply filter', filterData);\n // filter routings according to filterData\n let filteredData = [...routings];\n console.log('filteredData length original', filteredData.length);\n filteredData = filteredData.filter((route) => {\n // Non-stops/stops filter\n if (filterData[FilterKey.STOP_TYPE]) {\n // Non-stop\n if (filterData[FilterKey.STOP_TYPE] === STOP_TYPES.NONSTOP.value) {\n if (route.fromSegments.length > 1) {\n return false;\n }\n }\n }\n return true;\n });\n\n // Stops filter\n if (filterData[FilterKey.STOPS] && filterData[FilterKey.STOP_TYPE] === STOP_TYPES.WITH_STOPS.value) {\n filteredData = filteredData.filter((route) => {\n const stops = filterData[FilterKey.STOPS];\n // if stops is an array (mulitple airport codes)\n let found = false;\n if (Array.isArray(stops)) {\n if (route.fromSegments.length > 1) {\n route.fromSegments.forEach((seg) => {\n if (stops.includes(seg.depAirportCode) || stops.includes(seg.arrAirportCode)) {\n found = true;\n return;\n }\n });\n }\n } else if (typeof stops === 'string') {\n // if stops is a string (airport code)\n if (route.fromSegments.length > 1) {\n route.fromSegments.forEach((seg) => {\n if (seg.depAirportCode === stops || seg.arrAirportCode === stops) {\n console.log('stops match', stops, seg.depAirportCode, seg.arrAirportCode);\n found = true;\n return;\n }\n });\n }\n } else {\n //unknown type\n console.error('Unknown type for stops filter', stops);\n }\n return found;\n });\n }\n // Airline filter\n if (filterData[FilterKey.AIRLINE]) {\n filteredData = filteredData.filter((route) => {\n let found = false;\n route.fromSegments.forEach((seg) => {\n if (seg.operatingCarrier === filterData[FilterKey.AIRLINE]) {\n found = true;\n }\n });\n return found;\n });\n }\n // Departure time filter, value is in format \"5,8\", starting from 5:00 AM to 8:00 AM\n if (filterData[FilterKey.DEPARTURE_TIME]) {\n const value = filterData[FilterKey.DEPARTURE_TIME];\n // if value is an array (multiple time slots)\n if (Array.isArray(value)) {\n //NOTE: Not widely used, not implemented\n } else if (typeof value === 'string') {\n // value is string\n const [start, end] = value.split(',').map(Number);\n filteredData = filteredData.filter((route) => {\n const outboundMatch =\n route.fromSegments?.length > 0 &&\n isInTimeSlot(route.fromSegments[0]?.depTime, [start, end]);\n const inboundMatch =\n route.retSegments?.length > 0 && isInTimeSlot(route.retSegments[0]?.depTime, [start, end]);\n return outboundMatch || inboundMatch;\n });\n } else {\n console.error('Unknown type for departure time filter', value);\n }\n }\n // Arrival time filter\n if (filterData[FilterKey.ARRIVAL_TIME]) {\n const value = filterData[FilterKey.ARRIVAL_TIME];\n // if value is an array (multiple time slots)\n if (Array.isArray(value)) {\n //NOTE: Not widely used, not implemented\n } else if (typeof value === 'string') {\n // value is string\n const [start, end] = value.split(',').map(Number);\n filteredData = filteredData.filter((route) => {\n const outboundMatch =\n route.fromSegments?.length > 0 &&\n isInTimeSlot(route.fromSegments[route.fromSegments.length - 1]?.arrTime, [start, end]);\n const inboundMatch =\n route.retSegments?.length > 0 &&\n isInTimeSlot(route.retSegments[route.retSegments.length - 1]?.arrTime, [start, end]);\n return outboundMatch || inboundMatch;\n });\n } else {\n console.error('Unknown type for arrival time filter', value);\n }\n }\n // Departure airport filter\n if (filterData[FilterKey.DEPARTURE]) {\n const value = filterData[FilterKey.DEPARTURE];\n if (Array.isArray(value)) {\n //NOTE: Not widely used, not implemented\n console.error('not implemented for Array type');\n } else if (typeof value === 'string') {\n filteredData = filteredData.filter((route) => {\n const firstSegment = route.fromSegments[0];\n if (firstSegment.depAirportCode === value) {\n return true;\n }\n });\n } else {\n console.error('Unknown type for deparue airport filter', value);\n }\n }\n // Arrival airport filter\n if (filterData[FilterKey.ARRIVAL]) {\n const value = filterData[FilterKey.ARRIVAL];\n if (Array.isArray(value)) {\n //NOTE: Not widely used, not implemented\n console.error('not implemented for Array type');\n } else if (typeof value === 'string') {\n filteredData = filteredData.filter((route) => {\n const lastSegment = route.fromSegments[route.fromSegments.length - 1];\n if (lastSegment.arrAirportCode === value) {\n return true;\n }\n });\n } else {\n console.error('Unknown type for arrial airport filter', value);\n }\n }\n console.log('filteredData length', filteredData.length);\n setData(filteredData);\n setLoadedItems(filteredData.slice(0, ITEMS_PER_PAGE));\n },\n [filterData, routings]\n );\n\n return (\n
\n {routings.length > 0 && (\n
\n
\n 已选择的筛选条件: {data?.length}个航班\n
\n \n
\n )}\n\n
\n {loadedItems.map((routing, index) => {\n return (\n \n );\n })}\n {data.length > loadedItems.length &&
Loading more items...
}\n
\n
\n );\n}\n\nRoutingsList.propTypes = {\n routings: PropTypes.array,\n request: PropTypes.object,\n};\n\nexport default RoutingsList;\n","import React from 'react';\nimport RoutingsList from './RoutingsList';\nimport PropTypes from 'prop-types';\n\nfunction index({ routings = [], request = {} }) {\n return ;\n}\n\nindex.propTypes = {\n routings: PropTypes.array.isRequired,\n request: PropTypes.object.isRequired,\n};\n\nexport default React.memo(index);\n","export default \"__VITE_ASSET__f7f416bc__\"","export default \"__VITE_ASSET__f2581cd3__\"","export default \"__VITE_ASSET__491a17b5__\"","import React from 'react';\nimport styles from '@styles/AirFeaturesBanner.module.css';\nimport Object from '@assets/air-features/objects.svg';\nimport Rectangle from '@assets/air-features/rectangle.svg';\nimport IconCheck from '@assets/air-features/icon_check.svg';\n\nfunction AirFeaturesBanner() {\n return (\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
\n
\n
\n );\n}\n\nexport default AirFeaturesBanner;\n","export default \"__VITE_ASSET__f1844c64__\"","export default \"__VITE_ASSET__6e7eaa73__\"","export default \"__VITE_ASSET__6fd10e60__\"","export default \"__VITE_ASSET__740d3453__\"","export default \"__VITE_ASSET__03e818cc__\"","import React from 'react';\nimport styles from '@styles/AirFeatures.module.css';\nimport IconAuth from '@assets/air-features/icon_auth.svg';\nimport IconCoupon from '@assets/air-features/icon_coupon.svg';\nimport IconOneStop from '@assets/air-features/icon_one_stop.svg';\nimport Icon24hours from '@assets/air-features/icon_24_hours.svg';\nimport IconEfficient from '@assets/air-features/icon_efficient.svg';\n\nfunction AirFeatures() {\n return (\n
\n {/* 1 */}\n
\n
\n \n
\n
\n
权威认证
\n
  • IATA一级代理资质,值得信赖
  • \n
    \n
    \n {/* 2 */}\n
    \n
    \n \n
    \n
    \n
    超优惠价格
    \n
  • 汇集众多航空公司实时优惠票价
  • \n
  • 确保您获得最具竞争力的价格
  • \n
    \n
    \n {/* 3 */}\n
    \n
    \n \n
    \n
    \n
    一站式服务
    \n
  • 从搜索到出票全流程无缝衔接
  • \n
  • 包含订单修改等售后服务
  • \n
  • 附加产品轻松预订
  • \n
    \n
    \n {/* 4 */}\n
    \n
    \n \n
    \n
    \n
    全天候支持
    \n
  • 24/7/365不间断客服
  • \n
  • 专业代理实时响应
  • \n
    \n
    \n {/* 5 */}\n
    \n
    \n \n
    \n
    \n
    便捷高效
    \n
  • 实时在线采购系统
  • \n
  • 快速便捷的预订流程
  • \n
    \n
    \n
    \n );\n}\n\nexport default AirFeatures;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport AirSearchForm from '@components/air/AirSearchForm';\nimport { GetAirTicketReq } from '@utils/storage';\nimport { formatDistanceToNowStrict } from 'date-fns';\nimport { zhCN } from 'date-fns/locale';\nimport { Skeleton } from 'antd';\nimport styles from '@styles/AirTicketPage.module.css';\nimport TopHeaderBg from '@assets/flight_top_bg.png';\nimport RecentFlightSearch from '@components/air/RecentFlightSearch';\nimport RoutingsList from '@components/air/RoutingsList';\nimport { useFlightSearchContext } from '../../contexts/FlightSearchContext';\nimport AirFeaturesBanner from '@components/air/AirFeaturesBanner';\nimport AirFeatures from '@components/air/AirFeatures';\n\nfunction AirTicketPage(props) {\n const [searchReq, setSearchReq] = useState({});\n const { data, timestamp, fetchFlights, abort, fetching, fetched } = useFlightSearchContext();\n\n useEffect(() => {\n if (Object.keys(searchReq).length === 0) {\n const req = GetAirTicketReq();\n setSearchReq(req);\n }\n return () => {\n if (fetching) abort();\n };\n }, []);\n\n const handleSubmit = (req) => {\n setSearchReq(req);\n fetchFlights(req);\n };\n\n const EmptyRoutings = () => {\n if (data?.routings?.length !== 0) {\n } else if (fetched) {\n return
    没有找到符合条件的航班
    ;\n }\n };\n\n const Content = () => {\n if (fetched || fetching || data?.routings?.length > 0) {\n return (\n <>\n
    \n {data?.routings?.length > 0 && (\n <>\n {`${data.routings.length}个结果`}{' '}\n {timestamp &&\n `(${formatDistanceToNowStrict(new Date(timestamp), {\n locale: zhCN,\n addSuffix: true,\n })})`}\n \n )}\n
    \n \n \n
    \n \n );\n }\n return (\n
    \n \n
    \n \n
    \n );\n };\n\n return (\n
    \n
    \n \n
    \n
    随想旅途
    \n
    \n 全球航线 1000+ 条自在飞\n
    \n
    \n
    \n\n
    \n \n
    \n \n
    \n \n\n {fetching && (\n \n )}\n
    \n
    \n );\n}\n\nAirTicketPage.propTypes = {};\n\nexport default React.memo(AirTicketPage);\n","export const countryOptions = [\n {\n key: 45,\n text: '中国',\n texten: 'China',\n value: 'CN',\n },\n {\n key: 14,\n text: '澳大利亚',\n texten: 'Australia',\n value: 'AU',\n },\n {\n key: 158,\n text: '新西兰',\n texten: 'New Zealand',\n value: 'NZ',\n },\n {\n key: 1,\n text: '阿富汗',\n texten: 'Afghanistan',\n value: 'AF',\n },\n {\n key: 2,\n text: '奥兰群岛',\n texten: 'Aland Islands',\n value: 'AX',\n },\n {\n key: 3,\n text: '阿尔巴尼亚',\n texten: 'Albania',\n value: 'AL',\n },\n {\n key: 4,\n text: '阿尔及利亚',\n texten: 'Algeria',\n value: 'DZ',\n },\n {\n key: 5,\n text: '美属萨摩亚',\n texten: 'American Samoa',\n value: 'AS',\n },\n {\n key: 6,\n text: '安道尔',\n texten: 'Andorra',\n\n value: 'AD',\n },\n {\n key: 7,\n text: '安哥拉',\n texten: 'Angola',\n\n value: 'AO',\n },\n {\n key: 8,\n text: '安圭拉',\n texten: 'Anguilla',\n value: 'AI',\n },\n {\n key: 9,\n text: '南极洲',\n texten: 'Antarctica',\n value: 'AQ',\n },\n {\n key: 10,\n text: '安提瓜和巴布达',\n texten: 'Antigua and Barbuda',\n value: 'AG',\n },\n {\n key: 11,\n text: '阿根廷',\n texten: 'Argentina',\n\n value: 'AR',\n },\n {\n key: 12,\n text: '亚美尼亚',\n texten: 'Armenia',\n\n value: 'AM',\n },\n {\n key: 13,\n text: '阿鲁巴',\n texten: 'Aruba',\n value: 'AW',\n },\n\n {\n key: 15,\n text: '奥地利',\n texten: 'Austria',\n\n value: 'AT',\n },\n {\n key: 16,\n text: '阿塞拜疆',\n texten: 'Azerbaijan',\n\n value: 'AZ',\n },\n {\n key: 17,\n text: '巴哈马',\n texten: 'Bahamas (The)',\n\n value: 'BS',\n },\n {\n key: 18,\n text: '巴林',\n texten: 'Bahrain',\n\n value: 'BH',\n },\n {\n key: 19,\n text: '孟加拉国',\n texten: 'Bangladesh',\n\n value: 'BD',\n },\n {\n key: 20,\n text: '巴巴多斯',\n texten: 'Barbados',\n value: 'BB',\n },\n {\n key: 21,\n text: '白俄罗斯',\n texten: 'Belarus',\n\n value: 'BY',\n },\n {\n key: 22,\n text: '比利时',\n texten: 'Belgium',\n\n value: 'BE',\n },\n {\n key: 23,\n text: '伯利兹',\n texten: 'Belize',\n value: 'BZ',\n },\n {\n key: 24,\n text: '贝宁',\n texten: 'Benin',\n\n value: 'BJ',\n },\n {\n key: 25,\n text: '百慕大',\n texten: 'Bermuda',\n value: 'BM',\n },\n {\n key: 26,\n text: '不丹',\n texten: 'Bhutan',\n\n value: 'BT',\n },\n {\n key: 27,\n text: '玻利维亚',\n texten: 'Bolivia',\n\n value: 'BO',\n },\n {\n key: 28,\n text: '波黑',\n texten: 'Bosnia and Herzegovina',\n value: 'BA',\n },\n {\n key: 29,\n text: '博茨瓦纳',\n texten: 'Botswana',\n\n value: 'BW',\n },\n {\n key: 30,\n text: '布维岛',\n texten: 'Bouvet Island',\n value: 'BV',\n },\n {\n key: 31,\n text: '巴西',\n texten: 'Brazil',\n\n value: 'BR',\n },\n {\n key: 32,\n text: '英属印度洋领地',\n texten: 'British Indian Ocean Territory (the)',\n value: 'IO',\n },\n {\n key: 33,\n text: '文莱',\n texten: 'Brunei Darussalam',\n value: 'BN',\n },\n {\n key: 34,\n text: '保加利亚',\n texten: 'Bulgaria',\n\n value: 'BG',\n },\n {\n key: 35,\n text: '布基纳法索',\n texten: 'Burkina Faso',\n\n value: 'BF',\n },\n {\n key: 36,\n text: '布隆迪',\n texten: 'Burundi',\n\n value: 'BI',\n },\n {\n key: 37,\n text: '柬埔寨',\n texten: 'Cambodia',\n\n value: 'KH',\n },\n {\n key: 38,\n text: '喀麦隆',\n texten: 'Cameroon',\n\n value: 'CM',\n },\n {\n key: 39,\n text: '加拿大',\n texten: 'Canada',\n value: 'CA',\n },\n {\n key: 40,\n text: '佛得角',\n texten: 'Cape Verde',\n\n value: 'CV',\n },\n {\n key: 41,\n text: '开曼群岛',\n texten: 'Cayman Islands (the)',\n value: 'KY',\n },\n {\n key: 42,\n text: '中非',\n texten: 'Central African Republic (the)',\n\n value: 'CF',\n },\n {\n key: 43,\n text: '乍得',\n texten: 'Chad',\n\n value: 'TD',\n },\n {\n key: 44,\n text: '智利',\n texten: 'Chile',\n\n value: 'CL',\n },\n\n {\n key: 46,\n text: '圣诞岛',\n texten: 'Christmas Island',\n value: 'CX',\n },\n {\n key: 47,\n text: '科科斯(基林)群岛',\n texten: 'Cocos (Keeling) Islands (the)',\n value: 'CC',\n },\n {\n key: 48,\n text: '哥伦比亚',\n texten: 'Colombia',\n\n value: 'CO',\n },\n {\n key: 49,\n text: '科摩罗',\n texten: 'Comoros',\n\n value: 'KM',\n },\n {\n key: 50,\n text: '刚果(布)',\n texten: 'Congo',\n\n value: 'CG',\n },\n {\n key: 51,\n text: '刚果(金)',\n texten: 'Congo (the Democratic Republic of the)',\n\n value: 'CD',\n },\n {\n key: 52,\n text: '库克群岛',\n texten: 'Cook Islands (the)',\n value: 'CK',\n },\n {\n key: 53,\n text: '哥斯达黎加',\n texten: 'Costa Rica',\n\n value: 'CR',\n },\n {\n key: 54,\n text: '科特迪瓦',\n texten: \"Côte d'Ivoire\",\n\n value: 'CI',\n },\n {\n key: 55,\n text: '克罗地亚',\n texten: 'Croatia',\n\n value: 'HR',\n },\n {\n key: 56,\n text: '古巴',\n texten: 'Cuba',\n\n value: 'CU',\n },\n {\n key: 57,\n text: '塞浦路斯',\n texten: 'Cyprus',\n\n value: 'CY',\n },\n {\n key: 58,\n text: '捷克',\n texten: 'Czech Republic (the)',\n\n value: 'CZ',\n },\n {\n key: 59,\n text: '丹麦',\n texten: 'Denmark',\n\n value: 'DK',\n },\n {\n key: 60,\n text: '吉布提',\n texten: 'Djibouti',\n\n value: 'DJ',\n },\n {\n key: 61,\n text: '多米尼克',\n texten: 'Dominica',\n\n value: 'DM',\n },\n {\n key: 62,\n text: '多米尼加',\n texten: 'Dominican Republic (the)',\n\n value: 'DO',\n },\n {\n key: 63,\n text: '厄瓜多尔',\n texten: 'Ecuador',\n\n value: 'EC',\n },\n {\n key: 64,\n text: '埃及',\n texten: 'Egypt',\n\n value: 'EG',\n },\n {\n key: 65,\n text: '萨尔瓦多',\n texten: 'El Salvador',\n\n value: 'SV',\n },\n {\n key: 66,\n text: '赤道几内亚',\n texten: 'Equatorial Guinea',\n\n value: 'GQ',\n },\n {\n key: 67,\n text: '厄立特里亚',\n texten: 'Eritrea',\n value: 'ER',\n },\n {\n key: 68,\n text: '爱沙尼亚',\n texten: 'Estonia',\n\n value: 'EE',\n },\n {\n key: 69,\n text: '埃塞俄比亚',\n texten: 'Ethiopia',\n\n value: 'ET',\n },\n {\n key: 70,\n text: '福克兰群岛(马尔维纳斯)',\n texten: 'Falkland Islands (the) [Malvinas]',\n value: 'FK',\n },\n {\n key: 71,\n text: '法罗群岛',\n texten: 'Faroe Islands (the)',\n value: 'FO',\n },\n {\n key: 72,\n text: '斐济',\n texten: 'Fiji',\n\n value: 'FJ',\n },\n {\n key: 73,\n text: '芬兰',\n texten: 'Finland',\n\n value: 'FI',\n },\n {\n key: 74,\n text: '法国',\n texten: 'France',\n\n value: 'FR',\n },\n {\n key: 75,\n text: '法属圭亚那',\n texten: 'French Guiana',\n value: 'GF',\n },\n {\n key: 76,\n text: '法属波利尼西亚',\n texten: 'French Polynesia',\n value: 'PF',\n },\n {\n key: 77,\n text: '法属南部领地',\n texten: 'French Southern Territories (the)',\n value: 'TF',\n },\n {\n key: 78,\n text: '加蓬',\n texten: 'Gabon',\n\n value: 'GA',\n },\n {\n key: 79,\n text: '冈比亚',\n texten: 'Gambia (The)',\n\n value: 'GM',\n },\n {\n key: 80,\n text: '格鲁吉亚',\n texten: 'Georgia',\n value: 'GE',\n },\n {\n key: 81,\n text: '德国',\n texten: 'Germany',\n\n value: 'DE',\n },\n {\n key: 82,\n text: '加纳',\n texten: 'Ghana',\n\n value: 'GH',\n },\n {\n key: 83,\n text: '直布罗陀',\n texten: 'Gibraltar',\n value: 'GI',\n },\n {\n key: 84,\n text: '希腊',\n texten: 'Greece',\n\n value: 'GR',\n },\n {\n key: 85,\n text: '格陵兰',\n texten: 'Greenland',\n value: 'GL',\n },\n {\n key: 86,\n text: '格林纳达',\n texten: 'Grenada',\n value: 'GD',\n },\n {\n key: 87,\n text: '瓜德罗普',\n texten: 'Guadeloupe',\n value: 'GP',\n },\n {\n key: 88,\n text: '关岛',\n texten: 'Guam',\n value: 'GU',\n },\n {\n key: 89,\n text: '危地马拉',\n texten: 'Guatemala',\n\n value: 'GT',\n },\n {\n key: 90,\n text: '格恩西岛',\n texten: 'Guernsey',\n value: 'GG',\n },\n {\n key: 91,\n text: '几内亚',\n texten: 'Guinea',\n\n value: 'GN',\n },\n {\n key: 92,\n text: '几内亚比绍',\n texten: 'Guinea-Bissau',\n\n value: 'GW',\n },\n {\n key: 93,\n text: '圭亚那',\n texten: 'Guyana',\n\n value: 'GY',\n },\n {\n key: 94,\n text: '海地',\n texten: 'Haiti',\n\n value: 'HT',\n },\n {\n key: 95,\n text: '赫德岛和麦克唐纳岛',\n texten: 'Heard Island and McDonald Islands',\n value: 'HM',\n },\n {\n key: 96,\n text: '梵蒂冈',\n texten: 'Holy See (the) [Vatican City State]',\n value: 'VA',\n },\n {\n key: 97,\n text: '洪都拉斯',\n texten: 'Honduras',\n\n value: 'HN',\n },\n {\n key: 98,\n text: '香港',\n texten: 'Hong Kong',\n\n value: 'HK',\n },\n {\n key: 99,\n text: '匈牙利',\n texten: 'Hungary',\n\n value: 'HU',\n },\n {\n key: 100,\n text: '冰岛',\n texten: 'Iceland',\n\n value: 'IS',\n },\n {\n key: 101,\n text: '印度',\n texten: 'India',\n\n value: 'IN',\n },\n {\n key: 102,\n text: '印度尼西亚',\n texten: 'Indonesia',\n\n value: 'ID',\n },\n {\n key: 103,\n text: '伊朗',\n texten: 'Iran (the Islamic Republic of)',\n\n value: 'IR',\n },\n {\n key: 104,\n text: '伊拉克',\n texten: 'Iraq',\n\n value: 'IQ',\n },\n {\n key: 105,\n text: '爱尔兰',\n texten: 'Ireland',\n value: 'IE',\n },\n {\n key: 106,\n text: '英国属地曼岛',\n texten: 'Isle of Man',\n value: 'IM',\n },\n {\n key: 107,\n text: '以色列',\n texten: 'Israel',\n\n value: 'IL',\n },\n {\n key: 108,\n text: '意大利',\n texten: 'Italy',\n\n value: 'IT',\n },\n {\n key: 109,\n text: '牙买加',\n texten: 'Jamaica',\n value: 'JM',\n },\n {\n key: 110,\n text: '日本',\n texten: 'Japan',\n value: 'JP',\n },\n {\n key: 111,\n text: '泽西岛',\n texten: 'Jersey',\n value: 'JE',\n },\n {\n key: 112,\n text: '约旦',\n texten: 'Jordan',\n\n value: 'JO',\n },\n {\n key: 113,\n text: '哈萨克斯坦',\n texten: 'Kazakhstan',\n\n value: 'KZ',\n },\n {\n key: 114,\n text: '肯尼亚',\n texten: 'Kenya',\n\n value: 'KE',\n },\n {\n key: 115,\n text: '基里巴斯',\n texten: 'Kiribati',\n\n value: 'KI',\n },\n {\n key: 116,\n text: '朝鲜',\n texten: \"Korea (the Democratic People's Republic of)\",\n\n value: 'KP',\n },\n {\n key: 117,\n text: '韩国',\n texten: 'Korea (the Republic of)',\n\n value: 'KR',\n },\n {\n key: 118,\n text: '科威特',\n texten: 'Kuwait',\n\n value: 'KW',\n },\n {\n key: 119,\n text: '吉尔吉斯斯坦',\n texten: 'Kyrgyzstan',\n\n value: 'KG',\n },\n {\n key: 120,\n text: '老挝',\n texten: \"Lao People's Democratic Republic (the)\",\n\n value: 'LA',\n },\n {\n key: 121,\n text: '拉脱维亚',\n texten: 'Latvia',\n\n value: 'LV',\n },\n {\n key: 122,\n text: '黎巴嫩',\n texten: 'Lebanon',\n\n value: 'LB',\n },\n {\n key: 123,\n text: '莱索托',\n texten: 'Lesotho',\n\n value: 'LS',\n },\n {\n key: 124,\n text: '利比里亚',\n texten: 'Liberia',\n\n value: 'LR',\n },\n {\n key: 125,\n text: '利比亚',\n texten: 'Libyan Arab Jamahiriya (the)',\n\n value: 'LY',\n },\n {\n key: 126,\n text: '列支敦士登',\n texten: 'Liechtenstein',\n\n value: 'LI',\n },\n {\n key: 127,\n text: '立陶宛',\n texten: 'Lithuania',\n\n value: 'LT',\n },\n {\n key: 128,\n text: '卢森堡',\n texten: 'Luxembourg',\n\n value: 'LU',\n },\n {\n key: 129,\n text: '澳门',\n texten: 'Macao',\n\n value: 'MO',\n },\n {\n key: 130,\n text: '前南马其顿',\n texten: 'Macedonia (the former Yugoslav Republic of)',\n\n value: 'MK',\n },\n {\n key: 131,\n text: '马达加斯加',\n texten: 'Madagascar',\n\n value: 'MG',\n },\n {\n key: 132,\n text: '马拉维',\n texten: 'Malawi',\n\n value: 'MW',\n },\n {\n key: 133,\n text: '马来西亚',\n texten: 'Malaysia',\n value: 'MY',\n },\n {\n key: 134,\n text: '马尔代夫',\n texten: 'Maldives',\n\n value: 'MV',\n },\n {\n key: 135,\n text: '马里',\n texten: 'Mali',\n\n value: 'ML',\n },\n {\n key: 136,\n text: '马耳他',\n texten: 'Malta',\n\n value: 'MT',\n },\n {\n key: 137,\n text: '马绍尔群岛',\n texten: 'Marshall Islands (the)',\n\n value: 'MH',\n },\n {\n key: 138,\n text: '马提尼克',\n texten: 'Martinique',\n value: 'MQ',\n },\n {\n key: 139,\n text: '毛利塔尼亚',\n texten: 'Mauritania',\n\n value: 'MR',\n },\n {\n key: 140,\n text: '毛里求斯',\n texten: 'Mauritius',\n\n value: 'MU',\n },\n {\n key: 141,\n text: '马约特',\n texten: 'Mayotte',\n value: 'YT',\n },\n {\n key: 142,\n text: '墨西哥',\n texten: 'Mexico',\n\n value: 'MX',\n },\n {\n key: 143,\n text: '密克罗尼西亚联邦',\n texten: 'Micronesia (the Federated States of)',\n\n value: 'FM',\n },\n {\n key: 144,\n text: '摩尔多瓦',\n texten: 'Moldova (the Republic of)',\n\n value: 'MD',\n },\n {\n key: 145,\n text: '摩纳哥',\n texten: 'Monaco',\n\n value: 'MC',\n },\n {\n key: 146,\n text: '蒙古',\n texten: 'Mongolia',\n value: 'MN',\n },\n {\n key: 147,\n text: '黑山',\n texten: 'Montenegro',\n\n value: 'ME',\n },\n {\n key: 148,\n text: '蒙特塞拉特',\n texten: 'Montserrat',\n value: 'MS',\n },\n {\n key: 149,\n text: '摩洛哥',\n texten: 'Morocco',\n\n value: 'MA',\n },\n {\n key: 150,\n text: '莫桑比克',\n texten: 'Mozambique',\n\n value: 'MZ',\n },\n {\n key: 151,\n text: '缅甸',\n texten: 'Myanmar',\n\n value: 'MM',\n },\n {\n key: 152,\n text: '纳米比亚',\n texten: 'Namibia',\n\n value: 'NA',\n },\n {\n key: 153,\n text: '瑙鲁',\n texten: 'Nauru',\n\n value: 'NR',\n },\n {\n key: 154,\n text: '尼泊尔',\n texten: 'Nepal',\n\n value: 'NP',\n },\n {\n key: 155,\n text: '荷兰',\n texten: 'Netherlands (the)',\n\n value: 'NL',\n },\n {\n key: 156,\n text: '荷属安的列斯',\n texten: 'Netherlands Antilles (the)',\n value: 'AN',\n },\n {\n key: 157,\n text: '新喀里多尼亚',\n texten: 'New Caledonia',\n value: 'NC',\n },\n\n {\n key: 159,\n text: '尼加拉瓜',\n texten: 'Nicaragua',\n\n value: 'NI',\n },\n {\n key: 160,\n text: '尼日尔',\n texten: 'Niger (the)',\n\n value: 'NE',\n },\n {\n key: 161,\n text: '尼日利亚',\n texten: 'Nigeria',\n\n value: 'NG',\n },\n {\n key: 162,\n text: '纽埃',\n texten: 'Niue',\n\n value: 'NU',\n },\n {\n key: 163,\n text: '诺福克岛',\n texten: 'Norfolk Island',\n value: 'NF',\n },\n {\n key: 164,\n text: '北马里亚纳',\n texten: 'Northern Mariana Islands (the)',\n\n value: 'MP',\n },\n {\n key: 165,\n text: '挪威',\n texten: 'Norway',\n\n value: 'NO',\n },\n {\n key: 166,\n text: '阿曼',\n texten: 'Oman',\n\n value: 'OM',\n },\n {\n key: 167,\n text: '巴基斯坦',\n texten: 'Pakistan',\n\n value: 'PK',\n },\n {\n key: 168,\n text: '帕劳',\n texten: 'Palau',\n\n value: 'PW',\n },\n {\n key: 169,\n text: '巴勒斯坦',\n texten: 'Palestinian Territory (the Occupied)',\n\n value: 'PS',\n },\n {\n key: 170,\n text: '巴拿马',\n texten: 'Panama',\n\n value: 'PA',\n },\n {\n key: 171,\n text: '巴布亚新几内亚',\n texten: 'Papua New Guinea',\n value: 'PG',\n },\n {\n key: 172,\n text: '巴拉圭',\n texten: 'Paraguay',\n\n value: 'PY',\n },\n {\n key: 173,\n text: '秘鲁',\n texten: 'Peru',\n\n value: 'PE',\n },\n {\n key: 174,\n text: '菲律宾',\n texten: 'Philippines (the)',\n\n value: 'PH',\n },\n {\n key: 175,\n text: '皮特凯恩',\n texten: 'Pitcairn',\n value: 'PN',\n },\n {\n key: 176,\n text: '波兰',\n texten: 'Poland',\n\n value: 'PL',\n },\n {\n key: 177,\n text: '葡萄牙',\n texten: 'Portugal',\n\n value: 'PT',\n },\n {\n key: 178,\n text: '波多黎各',\n texten: 'Puerto Rico',\n value: 'PR',\n },\n {\n key: 179,\n text: '卡塔尔',\n texten: 'Qatar',\n\n value: 'QA',\n },\n {\n key: 180,\n text: '留尼汪',\n texten: 'Réunion',\n value: 'RE',\n },\n {\n key: 181,\n text: '罗马尼亚',\n texten: 'Romania',\n value: 'RO',\n },\n {\n key: 182,\n text: '俄罗斯联邦',\n texten: 'Russian Federation (the)',\n\n value: 'RU',\n },\n {\n key: 183,\n text: '卢旺达',\n texten: 'Rwanda',\n\n value: 'RW',\n },\n {\n key: 184,\n text: '圣赫勒拿',\n texten: 'Saint Helena',\n value: 'SH',\n },\n {\n key: 185,\n text: '圣基茨和尼维斯',\n texten: 'Saint Kitts and Nevis',\n value: 'KN',\n },\n {\n key: 186,\n text: '圣卢西亚',\n texten: 'Saint Lucia',\n value: 'LC',\n },\n {\n key: 187,\n text: '圣皮埃尔和密克隆',\n texten: 'Saint Pierre and Miquelon',\n value: 'PM',\n },\n {\n key: 188,\n text: '圣文森特和格林纳丁斯',\n texten: 'Saint Vincent and the Grenadines',\n value: 'VC',\n },\n {\n key: 189,\n text: '萨摩亚',\n texten: 'Samoa',\n\n value: 'WS',\n },\n {\n key: 190,\n text: '圣马力诺',\n texten: 'San Marino',\n\n value: 'SM',\n },\n {\n key: 191,\n text: '圣多美和普林西比',\n texten: 'Sao Tome and Principe',\n\n value: 'ST',\n },\n {\n key: 192,\n text: '沙特阿拉伯',\n texten: 'Saudi Arabia',\n\n value: 'SA',\n },\n {\n key: 193,\n text: '塞内加尔',\n texten: 'Senegal',\n\n value: 'SN',\n },\n {\n key: 194,\n text: '塞尔维亚',\n texten: 'Serbia',\n\n value: 'RS',\n },\n {\n key: 195,\n text: '塞舌尔',\n texten: 'Seychelles',\n\n value: 'SC',\n },\n {\n key: 196,\n text: '塞拉利昂',\n texten: 'Sierra Leone',\n\n value: 'SL',\n },\n {\n key: 197,\n text: '新加坡',\n texten: 'Singapore',\n\n value: 'SG',\n },\n {\n key: 198,\n text: '斯洛伐克',\n texten: 'Slovakia',\n\n value: 'SK',\n },\n {\n key: 199,\n text: '斯洛文尼亚',\n texten: 'Slovenia',\n\n value: 'SI',\n },\n {\n key: 200,\n text: '所罗门群岛',\n texten: 'Solomon Islands (the)',\n value: 'SB',\n },\n {\n key: 201,\n text: '索马里',\n texten: 'Somalia',\n\n value: 'SO',\n },\n {\n key: 202,\n text: '南非',\n texten: 'South Africa',\n\n value: 'ZA',\n },\n {\n key: 203,\n text: '南乔治亚岛和南桑德韦奇岛',\n texten: 'South Georgia and the South Sandwich Islands',\n value: 'GS',\n },\n {\n key: 204,\n text: '西班牙',\n texten: 'Spain',\n\n value: 'ES',\n },\n {\n key: 205,\n text: '斯里兰卡',\n texten: 'Sri Lanka',\n\n value: 'LK',\n },\n {\n key: 206,\n text: '苏丹',\n texten: 'Sudan (the)',\n\n value: 'SD',\n },\n {\n key: 207,\n text: '苏里南',\n texten: 'Suriname',\n\n value: 'SR',\n },\n {\n key: 208,\n text: '斯瓦尔巴岛和扬马延岛',\n texten: 'Svalbard and Jan Mayen',\n value: 'SJ',\n },\n {\n key: 209,\n text: '斯威士兰',\n texten: 'Swaziland',\n\n value: 'SZ',\n },\n {\n key: 210,\n text: '瑞典',\n texten: 'Sweden',\n\n value: 'SE',\n },\n {\n key: 211,\n text: '瑞士',\n texten: 'Switzerland',\n\n value: 'CH',\n },\n {\n key: 212,\n text: '叙利亚',\n texten: 'Syrian Arab Republic (the)',\n\n value: 'SY',\n },\n {\n key: 213,\n text: '台湾',\n texten: 'Taiwan (Province of China)',\n value: 'TW',\n },\n {\n key: 214,\n text: '塔吉克斯坦',\n texten: 'Tajikistan',\n\n value: 'TJ',\n },\n {\n key: 215,\n text: '坦桑尼亚',\n texten: 'Tanzania,United Republic of',\n\n value: 'TZ',\n },\n {\n key: 216,\n text: '泰国',\n texten: 'Thailand',\n\n value: 'TH',\n },\n {\n key: 217,\n text: '东帝汶',\n texten: 'Timor-Leste',\n\n value: 'TL',\n },\n {\n key: 218,\n text: '多哥',\n texten: 'Togo',\n\n value: 'TG',\n },\n {\n key: 219,\n text: '托克劳',\n texten: 'Tokelau',\n value: 'TK',\n },\n {\n key: 220,\n text: '汤加',\n texten: 'Tonga',\n\n value: 'TO',\n },\n {\n key: 221,\n text: '特立尼达和多巴哥',\n texten: 'Trinidad and Tobago',\n\n value: 'TT',\n },\n {\n key: 222,\n text: '突尼斯',\n texten: 'Tunisia',\n\n value: 'TN',\n },\n {\n key: 223,\n text: '土耳其',\n texten: 'Turkey',\n\n value: 'TR',\n },\n {\n key: 224,\n text: '土库曼斯坦',\n texten: 'Turkmenistan',\n value: 'TM',\n },\n {\n key: 225,\n text: '特克斯和凯科斯群岛',\n texten: 'Turks and Caicos Islands (the)',\n value: 'TC',\n },\n {\n key: 226,\n text: '图瓦卢',\n texten: 'Tuvalu',\n value: 'TV',\n },\n {\n key: 227,\n text: '乌干达',\n texten: 'Uganda',\n\n value: 'UG',\n },\n {\n key: 228,\n text: '乌克兰',\n texten: 'Ukraine',\n value: 'UA',\n },\n {\n key: 229,\n text: '阿联酋',\n texten: 'United Arab Emirates (the)',\n\n value: 'AE',\n },\n {\n key: 230,\n text: '英国',\n texten: 'United Kingdom (the)',\n\n value: 'GB',\n },\n {\n key: 231,\n text: '美国',\n texten: 'United States (the)',\n\n value: 'US',\n },\n {\n key: 232,\n text: '美国本土外小岛屿',\n texten: 'United States Minor Outlying Islands (the)',\n value: 'UM',\n },\n {\n key: 233,\n text: '乌拉圭',\n texten: 'Uruguay',\n\n value: 'UY',\n },\n {\n key: 234,\n text: '乌兹别克斯坦',\n texten: 'Uzbekistan',\n\n value: 'UZ',\n },\n {\n key: 235,\n text: '瓦努阿图',\n texten: 'Vanuatu',\n\n value: 'VU',\n },\n {\n key: 236,\n text: '委内瑞拉',\n texten: 'Venezuela',\n\n value: 'VE',\n },\n {\n key: 237,\n text: '越南',\n texten: 'Viet Nam',\n\n value: 'VN',\n },\n {\n key: 238,\n text: '英属维尔京群岛',\n texten: 'Virgin Islands (British)',\n\n value: 'VG',\n },\n {\n key: 239,\n text: '美属维尔京群岛',\n texten: 'Virgin Islands (U.S.)',\n\n value: 'VI',\n },\n {\n key: 240,\n text: '瓦利斯和富图纳',\n texten: 'Wallis and Futuna',\n\n value: 'WF',\n },\n {\n key: 241,\n text: '西撒哈拉',\n texten: 'Western Sahara',\n value: 'EH',\n },\n\n {\n key: 242,\n text: '也门',\n texten: 'Yemen',\n\n value: 'YE',\n },\n\n {\n key: 243,\n text: '赞比亚',\n texten: 'Zambia',\n\n value: 'ZM',\n },\n {\n key: 244,\n text: '津巴布韦',\n texten: 'Zimbabwe',\n\n value: 'ZW',\n },\n];\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Form, FormGroup, FormSelect, Icon } from 'semantic-ui-react';\nimport { countryOptions } from '@utils/ios3166_1';\nimport { DevMode } from '../../utils/utils';\n\n//`Muhammad/XKAI` is test passenger\nconst genTestData = () => {\n // generate random date or birth for age 15-50, in format yyyy-mm-dd\n const genRandomDob = () => {\n const year = new Date().getFullYear() - Math.floor(Math.random() * 35) - 15;\n const month = Math.floor(Math.random() * 12) + 1;\n const day = Math.floor(Math.random() * 28) + 1;\n return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`;\n };\n // generate random expire date for passport, in format yyyy-mm-dd, 2-5 years from now\n const genRandomExpire = () => {\n const year = Math.floor(Math.random() * 3) + 2 + new Date().getFullYear();\n const month = Math.floor(Math.random() * 12) + 1;\n const day = Math.floor(Math.random() * 28) + 1;\n return `${year}-${month < 10 ? '0' + month : month}-${day < 10 ? '0' + day : day}`;\n };\n // generate random passport number, start with E or R, followed by 8 digits\n const genRandomPassport = () => {\n const prefix = Math.random() > 0.5 ? 'E' : 'R';\n const digits = Math.floor(Math.random() * 100000000);\n return `${prefix}${digits.toString().padStart(8, '0')}`;\n };\n\n // generate random nationality, CN or US or AU\n const genRandomNationality = () => {\n const nats = ['CN', 'US', 'AU'];\n return nats[Math.floor(Math.random() * nats.length)];\n };\n\n // generate random first name from a list\n const firstnames = ['XKAI', 'Mingyu', 'Xiaoming', 'Xiaohong', 'Xiaoli', 'Xiaofang', 'Xiaoxiao', 'Xiaohua'];\n // a list of aribic last names\n const arabicLastNames = [\n 'Farsi',\n 'Haddad',\n 'Hussein',\n 'Masri',\n 'Sharif',\n 'Qahtani',\n 'Najjar',\n 'Sayed',\n 'Mahdi',\n 'Rashid',\n 'Fahad',\n 'Khalifa',\n 'Salem',\n 'Muammar',\n 'Zayani',\n 'Hashimi',\n 'Khatib',\n 'Bukhari',\n 'Harbi',\n 'Jabari',\n 'Muhammad',\n ];\n const getFirstname = () => {\n return firstnames[Math.floor(Math.random() * firstnames.length)];\n };\n const getLastname = () => {\n return arabicLastNames[Math.floor(Math.random() * arabicLastNames.length)];\n };\n\n return {\n ageType: 0,\n firstname: getFirstname(),\n lastname: getLastname(),\n gender: 'M',\n dob: genRandomDob(),\n nationalCode: genRandomNationality(),\n idType: 'pp',\n idNumber: genRandomPassport(),\n idExpire: genRandomExpire(),\n mobile: '13934606977',\n };\n};\n\nexport const DefaultData = {\n ageType: '',\n firstname: '',\n lastname: '',\n gender: '',\n dob: '',\n nationalCode: '',\n idType: '',\n idNumber: '',\n idExpire: '',\n mobile: '',\n};\n\nexport const AgeType = {\n Adult: 0,\n Child: 1,\n};\n\nfunction PassengersForm({\n passengers = [],\n setPassengers = () => {},\n formID,\n maxSeats = 1,\n allowAges = [AgeType.Adult, AgeType.Child],\n}) {\n useEffect(() => {\n if (passengers.length == 0) {\n setPassengers((prev) => {\n return [...prev, { ...DefaultData }];\n });\n }\n return () => {};\n }, [passengers]);\n\n const handleAdd = () => {\n // MaxSeat\n if (passengers.length >= maxSeats) return;\n\n // Check if this is constrain to certain age\n let newPax = { ...DefaultData };\n if (allowAges.length > 0) {\n const hasAdult = passengers.find((p) => p.ageType == AgeType.Adult);\n const hasChild = passengers.find((p) => p.ageType == AgeType.Child);\n if (hasAdult && !hasChild) {\n newPax.ageType = AgeType.Adult;\n }\n if (!hasAdult && hasChild) {\n newPax.ageType = AgeType.Child;\n }\n }\n setPassengers((prev) => {\n return [...prev, newPax];\n });\n };\n\n const handleRemove = (index) => {\n console.log(index);\n const newData = [...passengers];\n newData.splice(index, 1);\n setPassengers([...newData]);\n };\n\n const handleOnChange = (e, { name, value }, index) => {\n console.log({ [name]: value });\n const newData = [...passengers];\n newData[index][name] = value;\n setPassengers(newData);\n };\n\n const handleAddTestPAX = (index) => {\n console.log('Adding test pax');\n\n setPassengers((prev) => {\n const testPax = genTestData();\n const newData = [...prev];\n newData[index] = testPax;\n return newData;\n });\n };\n\n return (\n
    \n
    \n {passengers.map((item, index) => {\n return (\n
    \n
    \n
    \n 乘客 {index + 1}{' '}\n {DevMode() && handleAddTestPAX(index)} />}{' '}\n
    \n
    \n \n
    \n
    \n
    \n
    \n {/* {JSON.stringify(allowAges)} */}\n \n handleOnChange(e, data, index)}\n placeholder=\"类型\"\n // not foolproof, need to check if there is already a pax of this type\n disabled={\n !(\n allowAges.includes(AgeType.Adult) &&\n allowAges.includes(AgeType.Child)\n )\n }\n />\n handleOnChange(e, data, index)}\n required\n type=\"text\"\n />\n handleOnChange(e, data, index)}\n required\n type=\"text\"\n />\n handleOnChange(e, data, index)}\n required\n options={[\n { key: 'm', text: '男', value: 'M' },\n { key: 'f', text: '女', value: 'F' },\n ]}\n />\n handleOnChange(e, data, index)}\n label=\"出生日期\"\n required\n type=\"date\"\n />\n \n \n handleOnChange(e, data, index)}\n options={countryOptions}\n selection\n search={(options, data) => {\n return options.filter((item) => {\n return (\n item?.text?.includes(data) ||\n item?.texten?.toLowerCase().startsWith(data) ||\n item?.value?.toLowerCase().startsWith(data)\n );\n });\n }}\n clearable\n autoComplete=\"off\"\n />\n handleOnChange(e, data, index)}\n options={[{ key: 1, text: '护照', value: 'pp' }]}\n placeholder=\"类型\"\n />\n handleOnChange(e, data, index)}\n required\n type=\"text\"\n />\n handleOnChange(e, data, index)}\n required\n type=\"date\"\n />\n handleOnChange(e, data, index)}\n label=\"电话号码\"\n placeholder=\"电话号码\"\n type=\"tel\"\n />\n \n
    \n
    \n
    \n );\n })}\n \n \n
    \n );\n}\n\nPassengersForm.propTypes = {\n passengers: PropTypes.array.isRequired,\n setPassengers: PropTypes.func.isRequired,\n formID: PropTypes.string,\n maxSeats: PropTypes.number,\n allowAges: PropTypes.arrayOf(PropTypes.number),\n};\n\nexport default PassengersForm;\n","import { useRef, useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\n\nfunction useFlightCreateOrder() {\n // submitting\n const [submitting, setSubmitting] = useState(false);\n // abort controller ref\n const abortControllerRef = useRef(null);\n\n const handleCreateOrder = useCallback(async (req) => {\n setSubmitting(true);\n abortControllerRef.current = new AbortController();\n try {\n const response = await fetch(`${config.apiURL2}/flights/create`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${GetToken()}`,\n },\n body: JSON.stringify(req),\n signal: abortControllerRef.current.signal,\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'Failed to create order');\n }\n const data = await response.json();\n return data;\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error create order:', error);\n }\n throw error;\n } finally {\n setSubmitting(false);\n }\n }, []);\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { submitting, handleCreateOrder, abort };\n}\n\nuseFlightCreateOrder.propTypes = {};\n\nexport default useFlightCreateOrder;\n","import { useCallback, useState } from 'react';\nimport { GetToken } from '@utils/storage';\nimport { useRef } from 'react';\nimport * as config from '@config';\n\nfunction useCode2Name() {\n const [nameCN, setNameCN] = useState();\n const [nameEN, setNameEN] = useState();\n const [fetching, setFetching] = useState();\n const abortRef = useRef();\n\n const fetchName = useCallback(async (code) => {\n abortRef.current = new AbortController();\n setFetching(true);\n try {\n const response = await fetch(`${config.apiURL}/code2name`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${GetToken()}`,\n },\n body: JSON.stringify({ code }),\n signal: abortRef.current.signal,\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'An error occurred while fetching code2name');\n }\n const data = await response.json();\n // console.log(data);\n const { name, nameEN } = data;\n setNameCN(name);\n setNameEN(nameEN);\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error fetching code2name:', error);\n }\n throw error;\n } finally {\n setFetching(false);\n }\n }, []);\n\n const abort = useCallback(() => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n }, []);\n\n return { nameCN, nameEN, fetching, fetchName, abort };\n}\n\nexport default useCode2Name;\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport useCode2Name from '../../../hooks/flight/useCode2Name';\n\nfunction AirportName({ code }) {\n const { fethcing, nameCN, fetchName, abort } = useCode2Name();\n useEffect(() => {\n if (code) {\n fetchName(code);\n }\n return () => {\n abort();\n };\n }, [code]);\n return <>{nameCN};\n}\n\nAirportName.propTypes = {\n code: PropTypes.string.isRequired,\n};\n\nexport default React.memo(AirportName);\n","import React, { useCallback, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './Segment.module.css';\nimport * as config from '@config';\nimport { differenceInMinutes, format, parse } from 'date-fns';\nimport { CabinClassName } from '@components/CabinPicker';\nimport useCode2Name from '../../../hooks/flight/useCode2Name';\nimport AirportName from './AirportName';\n\nconst getDate = (str) => {\n const dateObj = parse(str, 'yyyyMMddHHmm', new Date());\n // Format the date and time\n return format(dateObj, 'MM-dd');\n};\n\nconst getTime = (str) => {\n const dateObj = parse(str, 'yyyyMMddHHmm', new Date());\n // Format the date and time\n return format(dateObj, 'HH:mm');\n};\n\nexport const duration = (depTime, arrTime) => {\n const dep = parse(depTime, 'yyyyMMddHHmm', new Date());\n const arr = parse(arrTime, 'yyyyMMddHHmm', new Date());\n const totalMinutes = differenceInMinutes(arr, dep);\n return `${Math.floor(totalMinutes / 60)}h${totalMinutes % 60}m`;\n};\n\nfunction Segment({ segment = {}, label }) {\n return (\n
    \n
    \n {label &&
    {label}
    }\n
    \n \"\"\n
    \n
    {segment.carrier}
    \n
    \n {segment.flightNumber}\n {segment.codeShare && `(${segment.sharingFlightNumber})`}\n
    \n
    \n
    \n
    \n
    \n
    {getDate(segment.depTime)}
    \n
    {getTime(segment.depTime)}
    \n
    \n
    {duration(segment.depTime, segment.arrTime)}
    \n
    \n
    {getDate(segment.arrTime)}
    \n
    {getTime(segment.arrTime)}
    \n
    \n
    \n
    \n
    \n
    \n
    {segment.depAirport}
    \n \n {/*
    {segment.depTerminal}
    */}\n
    \n
    \n
    \n {CabinClassName(segment.cabinClass)} {segment.cabin}\n
    \n {!!segment.baggagePieces && (\n
    \n {segment.baggagePieces}PC\n {segment.baggageWeight && `/${segment.baggageWeight}Kg`}\n
    \n )}\n
    \n\n
    \n
    {segment.arrAirport}
    \n \n {/*
    {segment.arrTerminal}
    */}\n
    \n
    \n
    \n
    \n );\n}\n\nSegment.propTypes = {\n segment: PropTypes.object.isRequired,\n label: PropTypes.string,\n};\n\nexport default Segment;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './index.module.css';\nimport Segment, { duration } from './Segment';\nimport { ClockCircleOutlined } from '@ant-design/icons';\nimport AirportName from './AirportName';\n\nfunction FlightSegments({ fromSegments = [], retSegments = [] }) {\n const isRoundTrip = retSegments?.length > 0;\n\n const Segments = ({ segments, label }) => {\n return (\n <>\n {segments.map((segment, index) => {\n return (\n <>\n {index > 0 && (\n
    \n 中转\n {fromSegments[index - 1].arrAirport}\n \n \n \n \n {duration(fromSegments[index - 1].arrTime, fromSegments[index].depTime)}\n \n
    \n )}\n \n \n );\n })}\n \n );\n };\n\n return (\n
    \n
    \n \n
    \n {isRoundTrip && (\n
    \n \n
    \n )}\n
    \n );\n}\n\nFlightSegments.propTypes = {\n fromSegments: PropTypes.array.isRequired,\n retSegments: PropTypes.array,\n};\n\nexport default React.memo(FlightSegments);\n","import React, { useEffect, useId, useState } from 'react';\nimport styles from '@styles/AirBookingPage.module.css';\nimport { TableRow, TableHeaderCell, TableHeader, TableCell, TableBody, Table, Dimmer, Loader } from 'semantic-ui-react';\nimport PassengersForm, { AgeType } from '../../components/air/PassengersForm';\nimport BackBar from '@components/BackBar';\nimport { useLocation, useNavigate } from 'react-router';\nimport { GetUserInfo } from '@utils/storage';\nimport PropTypes from 'prop-types';\nimport useFlightCreateOrder from '../../hooks/flight/useFlightCreateOrder';\nimport { App, Result, Button, Alert, Space, Typography, Modal } from 'antd';\nimport { ScrollToTop } from '@utils/scrollPosition';\nimport FlightSegments from '../../components/air/FlightSegments';\nimport { prettifyCurrency } from '@utils/utils';\n\nconst { Title, Text } = Typography;\n\nfunction AirBookingPage(props) {\n const location = useLocation();\n const navigate = useNavigate();\n const loginUser = GetUserInfo();\n const { data, request } = location.state || {};\n const { routing, sessionId, maxSeats = 1, ticketInfo } = data || {};\n if (!routing || routing.data == '') {\n return (\n
    \n \n
    \n
    No routing!!!
    \n
    \n );\n }\n const [passengers, setPassengers] = useState([]);\n const formID = useId();\n const { submitting, handleCreateOrder, abort } = useFlightCreateOrder();\n const { message } = App.useApp();\n const [success, SetSuccess] = useState(false);\n\n useEffect(() => {\n ScrollToTop();\n return () => {\n abort();\n };\n }, []);\n\n useEffect(() => {\n if (request) {\n const { numAdult, numChild } = request;\n const passengers = [];\n for (let i = 0; i < numAdult; i++) {\n passengers.push({ ageType: AgeType.Adult });\n }\n for (let i = 0; i < numChild; i++) {\n passengers.push({ ageType: AgeType.Child });\n }\n setPassengers(passengers);\n }\n }, [request]);\n\n const total = () => {\n let total = 0;\n for (let p of passengers) {\n if (p.ageType == AgeType.Child) {\n total += Number(routing.childTotal);\n } else {\n total += Number(routing.adultTotal);\n }\n }\n return prettifyCurrency(total);\n };\n\n const handleSubmit = () => {\n // Validate form\n const passengerForm = document.getElementById(formID);\n if (passengerForm.reportValidity() != true) return;\n // Confirm\n if (confirm('确定提交') != true) return;\n const req = {\n channelSource: routing.channelSource,\n sessionId: sessionId,\n passengers: passengers,\n routing: routing,\n contact: {\n name: loginUser.contactName,\n email: loginUser.email,\n mobile: loginUser.contactNumber,\n },\n };\n console.log(req);\n handleCreateOrder(req)\n .then((data) => {\n const reply = data.reply;\n message?.success(reply);\n SetSuccess(true);\n })\n .catch((err) => {\n console.error(err);\n message?.error(err.message);\n });\n };\n\n const gotoOrders = () => {\n navigate({ pathname: '/dashboard/air-tickets/fit/orders' }, { replace: true });\n };\n\n const goBack = () => {\n navigate({ pathname: '/dashboard/air-tickets/fit' }, { replace: true });\n };\n\n const Success = () => {\n return (\n \n 查看订单\n ,\n ,\n ]}\n />\n );\n };\n\n const Refund = ({ rules = {} }) => {\n const [open, setOpen] = useState(false);\n const RuleSection = ({ title, content }) => (\n \n {title}\n {content}\n \n );\n return (\n <>\n setOpen(true)}>退改规则\n setOpen(false)} footer={null} width={600} centered>\n \n \n \n \n \n \n \n \n );\n };\n\n const Baggage = ({ rules = {} }) => {\n const [open, setOpen] = useState(false);\n return (\n <>\n setOpen(true)}>行李配额\n setOpen(false)} footer={null} width={600} centered>\n \n {rules.baggage}\n \n \n \n );\n };\n\n if (success) {\n return ;\n }\n\n // return ;\n\n return (\n
    \n \n
    \n
    航班信息
    \n
    \n \n \n \n
    \n
    \n \n\n

    乘客信息 {maxSeats < 9 && <>(剩余 {maxSeats} 个位置)}

    \n
    \n 0 && AgeType.Adult, request?.numChild > 0 && AgeType.Child]}\n />\n
    \n\n

    价格

    \n
    \n \n \n 乘客类型\n 票面\n 税金\n 单张结算价格\n 票数\n \n \n \n \n 成人\n \n {routing.currency ?? 'CNY'} {prettifyCurrency(routing.adultPrice)}\n \n \n {routing.currency ?? 'CNY'} {prettifyCurrency(routing.adultTax)}\n \n \n {routing.currency ?? 'CNY'} {prettifyCurrency(routing.adultTotal)}\n \n {passengers?.filter((p) => p.ageType == AgeType.Adult).length}\n \n {request?.numChild > 0 && (\n \n 儿童\n \n {routing.currency ?? 'CNY'} {prettifyCurrency(routing.childPrice)}\n \n \n {routing.currency ?? 'CNY'} {prettifyCurrency(routing.childTax)}\n \n \n {routing.currency ?? 'CNY'} {prettifyCurrency(routing.childTotal)}\n \n {passengers?.filter((p) => p.ageType == AgeType.Child).length}\n \n )}\n \n
    \n\n
    \n
    \n \n
    总价:
    \n {routing.currency ?? 'CNY'}\n {total()}\n
    \n \n
    \n
    \n \n 处理中...\n \n
    \n );\n}\n\nexport default AirBookingPage;\n","import { useCallback, useState, useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\n\n// Lazy load\nfunction useFlightOrders(props) {\n const [fetching, setFetching] = useState(false);\n const [orders, setOrders] = useState([]);\n //Total number of orders\n const [total, setTotal] = useState(0);\n const abortControllerRef = useRef(null);\n\n const fetchOrders = useCallback(async ({ page = 1, pageSize = 10 } = {}) => {\n const offset = (page - 1) * pageSize;\n const limit = pageSize;\n setFetching(true);\n abortControllerRef.current = new AbortController();\n const queryParams = {\n limit: limit,\n offset: offset,\n };\n const queryString = new URLSearchParams(queryParams).toString();\n try {\n const response = await fetch(`${config.apiURL2}/flights/orders?${queryString}`, {\n headers: { Authorization: `Bearer ${GetToken()}` },\n signal: abortControllerRef.current.signal,\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'An error occurred while fetching flight orders');\n }\n const responseData = await response.json();\n const { orders, total } = responseData;\n if (orders) {\n // console.log('orders:', orders);\n setOrders(orders);\n }\n if (total) {\n setTotal(total);\n }\n return responseData;\n } catch (err) {\n if (err.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error fetching flight orders:', err);\n }\n throw err;\n } finally {\n setFetching(false);\n }\n }, []);\n\n //Lazy load\n useEffect(() => {\n fetchOrders();\n }, [fetchOrders]);\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { orders, total, fetching, refetch: fetchOrders, abort };\n}\n\nuseFlightOrders.propTypes = {};\n\nexport default useFlightOrders;\n","import { useState, useRef, useCallback } from 'react';\nimport * as config from '@config';\nimport { GetToken } from '@utils/storage';\n\nfunction useRefreshFlightOrder(props) {\n const [refreshing, setRefreshing] = useState(false);\n const abortControllerRef = useRef(null);\n\n const handleRefresh = useCallback(\n async (orderNo) => {\n console.log(orderNo);\n if (!orderNo) {\n throw new Error('Order number is required');\n }\n abortControllerRef.current = new AbortController();\n setRefreshing(true);\n try {\n const response = await fetch(`${config.apiURL2}/flights/orders/refresh/${orderNo}`, {\n method: 'POST',\n headers: { Authorization: `Bearer ${GetToken()}` },\n signal: abortControllerRef.current.signal,\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'An error occurred while refreshing flight order');\n }\n const responseData = await response.json();\n console.log('responseData', responseData);\n return responseData;\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error refreshing flight order:', error);\n }\n throw error;\n } finally {\n setRefreshing(false);\n }\n },\n [config.apiURL2]\n );\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { handleRefresh, refreshing, abort };\n}\n\nuseRefreshFlightOrder.propTypes = {};\n\nexport default useRefreshFlightOrder;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, App } from 'antd';\nimport useRefreshFlightOrder from '../../../hooks/flight/useRefreshFlightOrder';\n\nfunction Refresh({ orderNo }) {\n const { handleRefresh, refreshing } = useRefreshFlightOrder();\n const { message } = App.useApp();\n\n if (!orderNo) {\n return null;\n }\n const onRefresh = (orderNo) => {\n console.log(`Refreshing order: ${orderNo}`);\n handleRefresh(orderNo)\n .then((data) => {\n const reply = data.reply;\n if (reply) {\n message?.success(reply);\n }\n })\n .catch((error) => {\n console.error('Error refreshing flight order:', error);\n message?.error(error.message);\n });\n };\n\n return (\n onRefresh(orderNo)}\n aria-label={`刷新订单 ${orderNo}`}\n >\n 刷新\n \n );\n}\n\nRefresh.propTypes = {\n orderNo: PropTypes.string.isRequired,\n};\n\nexport default Refresh;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { Table, Typography, Space, Button } from 'antd';\nimport { parse, format, isValid } from 'date-fns';\nimport useFlightOrders from '../../../hooks/flight/useFlightOrders';\nimport Refresh from './Refresh';\nimport { zhCN } from 'date-fns/locale';\nimport { UpOutlined, DownOutlined } from '@ant-design/icons';\nimport { useNavigate } from 'react-router';\n\nconst { Text } = Typography;\n\nconst FlightOrdersTable = () => {\n const [expandedRows, setExpandedRows] = useState({});\n const [currentPage, setCurrentPage] = useState(1);\n const [pageSize, setPageSize] = useState(10);\n const { orders, total, fetching, refetch } = useFlightOrders();\n const navigate = useNavigate();\n\n const fetchData = useCallback(() => {\n refetch({ page: currentPage, pageSize: pageSize });\n }, [refetch, currentPage, pageSize]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n const FlightInfo = ({ label, content }) => (\n \n {label && {label}}\n {content}\n \n );\n\n const timeParse = (dateString) => {\n if (!dateString) return '-';\n const parsedDate = parse(dateString, 'yyyyMMddHHmm', new Date());\n if (!isValid(parsedDate)) return '-';\n return format(parsedDate, 'yyyy/MM/dd HH:mm', { locale: zhCN });\n };\n\n const columns = [\n {\n title: '单号',\n dataIndex: 'orderNo',\n key: 'orderNo',\n },\n {\n title: '创建日期',\n dataIndex: 'createdAt',\n key: 'createdAt',\n render: (text) => {\n return text ? format(new Date(text), 'yyyy-MM-dd', { locale: zhCN }) : '-';\n },\n },\n // {\n // title: 'PNR',\n // dataIndex: 'pnrCode',\n // key: 'pnrCode',\n // },\n {\n title: '航司',\n dataIndex: 'carrier',\n key: 'carrier',\n },\n {\n title: '出发',\n key: 'depAirport',\n render: (_, record) => {\n const isRoundTrip = record.retDepAirport ? true : false;\n return (\n \n \n {record.retDepAirport && (\n \n )}\n \n );\n },\n },\n\n {\n title: '出发日期',\n key: 'depTime',\n render: (_, record) => {\n return (\n \n \n {record.retDepTime && }\n \n );\n },\n },\n {\n title: '到达',\n key: 'arrAirport',\n render: (_, record) => {\n return (\n \n \n {record.retArrAirport && }\n \n );\n },\n },\n {\n title: '到达日期',\n key: 'arrTime',\n render: (_, record) => {\n return (\n \n \n {record.retArrTime && }\n \n );\n },\n },\n // {\n // title: '成人',\n // dataIndex: 'numAdult',\n // key: 'numAdult',\n // },\n // {\n // title: '儿童',\n // dataIndex: 'numChild',\n // key: 'numAnumChilddult',\n // },\n {\n title: '总价',\n dataIndex: 'totalPrice',\n key: 'totalPrice',\n render: (price, record) => (price ? `${record.currency || 'CNY'} ${price} ` : '-'),\n },\n {\n title: '状态',\n dataIndex: 'statusTxt',\n key: 'statusTxt',\n },\n {\n title: '系统',\n dataIndex: 'channelSourceName',\n key: 'channelSourceName',\n },\n\n {\n title: '操作',\n key: 'action',\n render: (_, record) => {\n const key = record.orderNo;\n const isExpanded = expandedRows[key];\n return (\n \n \n navigate(record.orderNo)}\n >\n 查看\n \n {/* {\n e.stopPropagation();\n setExpandedRows((prev) => ({\n ...prev,\n [key]: !prev[key],\n }));\n }}\n icon={\n isExpanded ? (\n \n ) : (\n \n )\n }\n iconPosition=\"end\"\n >\n {isExpanded ? '收起' : '展开'}\n */}\n \n );\n },\n },\n ];\n\n const handleTableChange = (pagination) => {\n setCurrentPage(pagination.current);\n setPageSize(pagination.pageSize);\n };\n\n const expandedRowRender = (record) => {\n return (\n

    \n Passengers: {record.passengers.map((p) => p).join(', ')}\n
    \n OID: {record.oid}\n

    \n );\n };\n\n return (\n `共 ${total} 条`,\n pageSizeOptions: ['10', '20', '30'],\n }}\n onChange={handleTableChange}\n rowKey=\"orderNo\"\n // expandable={{\n // expandedRowRender: expandedRowRender,\n // expandedRowKeys: Object.keys(expandedRows).filter((key) => expandedRows[key]),\n // onExpand: (expanded, record) => {\n // const key = record.orderNo;\n // setExpandedRows((prev) => ({\n // ...prev,\n // [key]: expanded,\n // }));\n // },\n // }}\n />\n );\n};\n\nexport default FlightOrdersTable;\n","import React from 'react';\nimport FlightOrdersTable from '../../components/air/FlightOrdersTable';\nimport { Alert } from 'antd';\nimport { TicketingMsg } from '@utils/constants';\n\nfunction AirOrdersPage() {\n return (\n
    \n

    FIT订单

    \n \n
    \n \n
    \n );\n}\n\nexport default AirOrdersPage;\n","export const CabinClass = {\n Economy: 'E',\n Business: 'B',\n};\n\nexport const australianAirports = [\n {\n cityName: '悉尼',\n cityEnglishName: 'Sydney',\n cityCode: 'SYD',\n theAirportName: '悉尼金斯福德机场',\n airportCode: 'SYD',\n countryName: '澳大利亚',\n countryCode: 'AU',\n value: 'SYD',\n },\n {\n cityName: '墨尔本',\n cityEnglishName: 'Melbourne',\n cityCode: 'MEL',\n theAirportName: '墨尔本机场',\n airportCode: 'MEL',\n countryName: '澳大利亚',\n countryCode: 'AU',\n value: 'MEL',\n },\n {\n cityName: '墨尔本',\n cityEnglishName: 'Melbourne',\n cityCode: 'MEL',\n theAirportName: '阿瓦伦机场',\n airportCode: 'AVV',\n countryName: '澳大利亚',\n countryCode: 'AU',\n value: 'AVV',\n },\n {\n cityName: '布里斯班',\n cityEnglishName: 'Brisbane',\n cityCode: 'BNE',\n theAirportName: '布里斯班机场',\n airportCode: 'BNE',\n countryName: '澳大利亚',\n countryCode: 'AU',\n value: 'BNE',\n },\n {\n cityName: '黄金海岸',\n cityEnglishName: 'Gold Coast',\n cityCode: 'OOL',\n theAirportName: '黄金海岸机场',\n airportCode: 'OOL',\n countryName: '澳大利亚',\n countryCode: 'AU',\n value: 'OOL',\n },\n {\n cityName: '凯恩斯',\n cityEnglishName: 'Cairns',\n cityCode: 'CNS',\n theAirportName: '凯恩斯机场',\n airportCode: 'CNS',\n countryName: '澳大利亚',\n countryCode: 'AU',\n value: 'CNS',\n },\n {\n cityName: '阿德莱德',\n cityEnglishName: 'Adelaide',\n cityCode: 'ADL',\n theAirportName: '阿德莱德机场',\n airportCode: 'ADL',\n countryName: '澳大利亚',\n countryCode: 'AU',\n value: 'ADL',\n },\n {\n cityName: '珀斯',\n cityEnglishName: 'Perth',\n cityCode: 'PER',\n theAirportName: '珀斯机场',\n airportCode: 'PER',\n countryName: '澳大利亚',\n countryCode: 'AU',\n value: 'PER',\n },\n];\n\nexport const airlines = [\n {\n value: 'QF',\n label: 'QF',\n name: 'Qantas',\n carrierCode: 'QF',\n },\n {\n value: 'VA',\n label: 'VA',\n name: 'Virgin Australia',\n carrierCode: 'VA',\n },\n {\n value: 'JQ',\n label: 'JQ',\n name: 'Jetstar',\n carrierCode: 'JQ',\n },\n {\n value: 'NZ',\n label: 'NZ',\n name: 'Air New Zealand',\n carrierCode: 'NZ',\n },\n];\n","import React from 'react';\nimport styles from '@styles/GroupFeaturesBanner.module.css';\nimport Object from '@assets/air-features/objects.svg';\nimport Rectangle from '@assets/air-features/rectangle.svg';\nimport IconCheck from '@assets/air-features/icon_check.svg';\n\nfunction GroupFeaturesBanner() {\n return (\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n 20年专业经验\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
    \n
    \n
    \n );\n}\n\nexport default GroupFeaturesBanner;\n","export default \"__VITE_ASSET__2e6ea03a__\"","export default \"__VITE_ASSET__347b488c__\"","export default \"__VITE_ASSET__76787c5d__\"","export default \"__VITE_ASSET__bafa4eb5__\"","import React from 'react';\nimport GroupFeaturesBanner from '../GroupFeaturesBanner';\nimport styles from './GroupFeatures.module.css';\nimport Icon1 from '@assets/air-features/group_feature_icon_1.svg';\nimport Icon2 from '@assets/air-features/group_feature_icon_2.svg';\nimport Icon3 from '@assets/air-features/group_feature_icon_3.svg';\nimport Icon4 from '@assets/air-features/group_feature_icon_4.svg';\n\nfunction GroupFeatures() {\n return (\n
    \n
    \n \n
    \n\n
    \n
    \n
    \n \n
    \n
    \n
    资质保障
    \n
  • IATA认证代理 + 航司直签资质,双重权威认证
  • \n
  • 让您以最优惠的价格锁定团队舱位
  • \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    价格优势
    \n
  • 享受航司直签价格,确保采购价格优势
  • \n
  • 专享QF & VA团队账户,轻松掌握市场行情
  • \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\nexport default GroupFeatures;\n","import { useCallback, useRef, useState } from 'react';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\nimport { RemoveEmpty } from '@utils/utils';\n\nfunction useFlightDeals(props) {\n const [fetching, setFetching] = useState(false);\n const [deals, setDeals] = useState([]);\n const [total, setTotal] = useState();\n\n const abortRef = useRef();\n\n const fetchDeals = useCallback(async (query) => {\n abort();\n abortRef.current = new AbortController();\n setFetching(true);\n const q = RemoveEmpty(query);\n const queryString = new URLSearchParams(q).toString();\n // console.log('query:', queryString);\n try {\n const response = await fetch(`${config.apiURL2}/flight-deals?${queryString}`, {\n signal: abortRef.current.signal,\n headers: {\n Authorization: `Bearer ${GetToken()}`,\n },\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'Something went wrong when fetching deals');\n }\n const data = await response.json();\n const { deals, total } = data;\n setTotal(total);\n setDeals(deals || []);\n return data;\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error fetch deals:', error);\n }\n throw error;\n } finally {\n setFetching(false);\n }\n }, []);\n\n const abort = useCallback(() => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n }, []);\n\n return { fetching, deals, total, fetchDeals, abort };\n}\n\nexport default useFlightDeals;\n","import { useEffect, useCallback, useRef, useState } from 'react';\n\n/**\n * Custom hook for polling any async function with progress indication\n * @param {function} action - Async function to be called periodically\n * @param {Object} options - Configuration options\n * @param {number} options.interval - Polling interval in milliseconds (default: 5000)\n * @param {boolean} options.immediate - Whether to execute immediately on mount (default: true)\n * @param {boolean} options.enabled - Whether polling should be active (default: true)\n * @returns {Object} - Contains polling control functions, status and progress\n */\nconst usePolling = (action, { interval = 5000, immediate = true, enabled = true } = {}) => {\n const timeoutRef = useRef(null);\n const progressIntervalRef = useRef(null);\n const mountedRef = useRef(true);\n const actionRef = useRef(action);\n const [isActive, setIsActive] = useState(enabled);\n const [nextPollIn, setNextPollIn] = useState(interval);\n\n // Keep the latest action function in ref\n useEffect(() => {\n actionRef.current = action;\n }, [action]);\n\n // Clear all timers\n const clearTimers = useCallback(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n if (progressIntervalRef.current) {\n clearInterval(progressIntervalRef.current);\n }\n }, []);\n\n // Start progress tracking\n const startProgressTracking = useCallback(() => {\n setNextPollIn(interval);\n const startTime = Date.now();\n\n progressIntervalRef.current = setInterval(() => {\n const elapsed = Date.now() - startTime;\n const remaining = interval - elapsed;\n\n if (remaining <= 0) {\n clearInterval(progressIntervalRef.current);\n } else {\n setNextPollIn(remaining);\n }\n }, 1000); // Update every second\n }, [interval]);\n\n const execute = useCallback(async () => {\n if (!isActive || !mountedRef.current) return;\n\n clearTimers();\n\n try {\n await actionRef.current();\n } finally {\n if (mountedRef.current && isActive) {\n timeoutRef.current = setTimeout(execute, interval);\n startProgressTracking();\n }\n }\n }, [interval, isActive, clearTimers, startProgressTracking]);\n\n const start = useCallback(() => {\n setIsActive(true);\n }, []);\n\n const stop = useCallback(() => {\n setIsActive(false);\n clearTimers();\n setNextPollIn(interval);\n }, [clearTimers, interval]);\n\n const refresh = useCallback(() => {\n clearTimers();\n execute();\n }, [execute, clearTimers]);\n\n // Cleanup on unmount\n useEffect(() => {\n mountedRef.current = true;\n\n return () => {\n mountedRef.current = false;\n clearTimers();\n };\n }, [clearTimers]);\n\n // Handle enabled prop changes\n useEffect(() => {\n setIsActive(enabled);\n }, [enabled]);\n\n // Start/stop polling based on isActive state\n useEffect(() => {\n if (isActive) {\n if (immediate) {\n execute();\n } else {\n timeoutRef.current = setTimeout(execute, interval);\n startProgressTracking();\n }\n } else {\n clearTimers();\n }\n\n return clearTimers;\n }, [execute, isActive, immediate, interval, clearTimers, startProgressTracking]);\n\n return {\n start,\n stop,\n refresh,\n isPolling: isActive,\n nextPollIn, // Milliseconds until next poll\n progress: ((interval - nextPollIn) / interval) * 100, //// Percentage complete (0-100)\n };\n};\n\nexport default usePolling;\n","import { useState, useCallback, useRef } from 'react';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\n\nfunction useFlightDealBook() {\n const [submitting, setSubmitting] = useState(false);\n const abortRef = useRef();\n\n const bookFlightDeal = useCallback(async (req) => {\n abort();\n abortRef.current = new AbortController();\n setSubmitting(true);\n try {\n const response = await fetch(`${config.apiURL2}/flight-deals/book`, {\n signal: abortRef.current.signal,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${GetToken()}`,\n },\n body: JSON.stringify(req),\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'Something went wrong when booking deal');\n }\n const data = await response.json();\n return data;\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error book deal:', error);\n }\n throw error;\n } finally {\n setSubmitting(false);\n }\n }, []);\n\n const abort = useCallback(() => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n }, []);\n\n return { submitting, bookFlightDeal, abort };\n}\n\nexport default useFlightDealBook;\n","import { useCallback, useState, useRef } from 'react';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\n\nfunction useFlightDeal() {\n const [fetching, setFetching] = useState(false);\n const [deal, setDeal] = useState({});\n\n const abortRef = useRef();\n\n const fetchDeal = useCallback(async (id) => {\n abort();\n setFetching(true);\n abortRef.current = new AbortController();\n try {\n const response = await fetch(`${config.apiURL2}/flight-deals/${id}`, {\n signal: abortRef.current.signal,\n headers: {\n Authorization: `Bearer ${GetToken()}`,\n },\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'Something went wrong when fetching deal');\n }\n const data = await response.json();\n const { deal } = data;\n setDeal(deal);\n return data;\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error fetch deal:', error);\n }\n throw error;\n } finally {\n setFetching(false);\n }\n }, []);\n\n const abort = useCallback(() => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n }, []);\n\n return { fetching, deal, fetchDeal, abort };\n}\n\nexport default useFlightDeal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, InputNumber, Modal } from 'antd';\nimport { useState } from 'react';\nimport { useEffect } from 'react';\nimport useFlightDealBook from './hooks/useFlightDealBook';\nimport useFlightDeal from './hooks/useFlightDeal';\nimport { useNavigate } from 'react-router';\n\nfunction Actions({ item }) {\n const [showBook, setShowBook] = useState(false);\n const [showReserve, setShowReserve] = useState(false);\n const [seats, setSeats] = useState(1);\n const { submitting, bookFlightDeal } = useFlightDealBook();\n const { fetching, deal, fetchDeal, abort } = useFlightDeal();\n const navigate = useNavigate();\n\n useEffect(() => {\n if (deal.remainingSeats) {\n setSeats(deal.remainingSeats);\n }\n return () => abort();\n }, [deal.remainingSeats]);\n\n useEffect(() => {\n if (showBook) {\n fetchDeal(item.id);\n }\n return () => abort();\n }, [showBook]);\n\n useEffect(() => {\n if (showReserve) {\n fetchDeal(item.id);\n }\n return () => abort();\n }, [showReserve]);\n\n const handleBooking = (reserve) => {\n const req = {\n dealID: item.id,\n seats: seats,\n reserve: reserve,\n };\n // console.log('req:', req);\n bookFlightDeal(req)\n .then((data) => {\n setShowBook(false);\n const { enquiryID, reply } = data;\n if (enquiryID) {\n alert(reply || '成功');\n navigate(`/dashboard/air-tickets/git/enquiries/${enquiryID}`);\n }\n })\n .catch((error) => {\n alert(error.message);\n });\n };\n\n return (\n <>\n setShowBook(true)}\n loading={submitting}\n disabled={item.remainingSeats === 0}\n >\n 预订\n \n setShowBook(false)}\n footer={null}\n centered\n maskClosable={false}\n loading={fetching}\n >\n
    \n setSeats(value)}\n />\n handleBooking(false)}\n loading={submitting}\n disabled={seats === 0}\n >\n 预订\n \n
    \n
    \n setShowReserve(true)}\n loading={submitting}\n disabled={item.remainingSeats === 0}\n >\n 预留\n \n setShowReserve(false)}\n footer={null}\n centered\n maskClosable={false}\n loading={fetching}\n >\n
    \n setSeats(value)}\n />\n handleBooking(true)}\n loading={submitting}\n disabled={seats === 0}\n >\n 预留\n \n
    \n \n \n );\n}\n\nActions.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nexport default Actions;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport styles from './FlightDeals.module.css';\nimport dayjs from 'dayjs';\nimport { Button, Modal } from 'antd';\nimport Actions from './Actions';\nimport * as config from '@config';\n\nfunction getAirlineCode(flightNumber) {\n // Use a regular expression to match letters at the start\n const match = flightNumber.match(/^[A-Z]+/);\n return match ? match[0] : null;\n}\n\nfunction Row({ item }) {\n const [showRules, setShowRules] = useState(false);\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    {item.flightNumber}
    \n
    {dayjs(item.depTime).format('YYYY-MM-DD')}
    \n
    \n
    \n
    \n
    \n {item.depAirportCode}\n {' - '}\n {item.arrAirportCode}\n
    \n
    \n
    {dayjs(item.depTime).format('HH:mm')}
    \n {'-'}\n
    {dayjs(item.arrTime).format('HH:mm')}
    \n
    \n
    \n
    \n \n setShowRules(false)} footer={null} centered>\n

    \n 行李:{item.baggagePeices}*{item.baggageWeight}Kg\n

    \n

    成团率:{item.fulfillRate}%

    \n

    最少订10个位置

    \n
    \n
    \n
    \n
    共{item.totalSeats}个位置
    \n
    剩余{item.remainingSeats}个位置
    \n
    \n
    \n
    截止日期
    \n
    {item.priceDeadline ? dayjs(item.priceDeadline).format('YYYY-MM-DD') : '暂无'}
    \n
    \n
    \n
    \n {item.currency}{' '}\n {item.adultPriceSale}\n
    \n {item.marketPrice && (\n
    \n {item.currency}{' '}\n {item.marketPrice}\n
    \n )}\n
    \n\n
    \n \n
    \n
    \n\n

    \n \n 共{item.totalSeats}个位置, 剩余{item.remainingSeats}个位置;{' '}\n \n \n {item.priceDeadline && 截止日期 {dayjs(item.priceDeadline).format('YYYY-MM-DD')}}\n \n

    \n
    \n );\n}\n\nRow.propTypes = {\n item: PropTypes.object.isRequired,\n};\n\nexport default Row;\n","import React, { useEffect, useCallback } from 'react';\nimport styles from './FlightDeals.module.css';\nimport useFlightDeals from './hooks/useFlightDeals';\nimport usePolling from '@hooks/usePolling';\nimport Row from './Row';\n\nfunction FlightDeals() {\n const { fetching, deals, fetchDeals, abort } = useFlightDeals();\n\n const pollAction = useCallback(() => {\n return fetchDeals({ available: true });\n }, [fetchDeals]);\n\n const { progress } = usePolling(pollAction, {\n interval: 10000, // 30 seconds\n immediate: true,\n enabled: true,\n });\n\n useEffect(() => {\n return () => {\n abort();\n };\n }, []);\n\n const Footer = () => (\n
    \n

    \n 1. 机票价格会随市场情况实时波动。为确保您获得当前显示的优惠价格,建议您在找到合适航班后立即完成\n 预订。\n

    \n
    \n 2. 如果您已选定航班但暂不确定出行计划,可以使用预留\n 功能。系统将为您保留该航班2-3周时间,让您能在合适时机完成预订。\n
    \n
    \n );\n\n return (\n
    \n {/* {fetching &&
    Loading...
    } */}\n {/* {progress} */}\n
    \n {deals.map((item, index) => (\n \n ))}\n
    \n {deals?.length > 0 &&
    }\n
    \n );\n}\n\nexport default FlightDeals;\n","import React, { useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Space, Form, Select, DatePicker, Button, Flex, InputNumber, Input, Upload, Popconfirm, App } from 'antd';\nimport { PlusOutlined, CloseOutlined, InboxOutlined, RedoOutlined } from '@ant-design/icons';\nimport dayjs from 'dayjs';\nimport styles from './styles.module.css';\nimport { CabinClass, australianAirports, airlines } from './constants';\nimport GroupFeatures from '../GroupFeatures';\nimport FlightDeals from '../FlightDeals';\n\nconst MAX_PASSENGER = 99;\n\nconst labelCol = {\n span: 12,\n offset: 0,\n};\n\nconst Tab = {\n Domestic: 'Domestic',\n International: 'International',\n};\n\nfunction GroupEnquiryCreateForm({ form, onFinish, maxFileSizeInMB = 10 }) {\n const [tabName, setTabName] = useState(Tab.International);\n const [totalSize, setTotalSize] = useState(0); // total size of all files in bytes\n const submitBtnRef = useRef(null);\n const { message } = App.useApp();\n\n // Set max total file size to 10MB (10 * 1024 * 1024 bytes)\n const MAX_TOTAL_SIZE = maxFileSizeInMB * 1024 * 1024;\n\n const normFile = (e) => {\n if (Array.isArray(e)) {\n return e;\n }\n return e?.fileList;\n };\n\n const beforeUpload = (file, fileList) => {\n // loop fileList to get total size\n let newTotalSize = totalSize;\n for (let i = 0; i < fileList.length; i++) {\n newTotalSize += fileList[i].size;\n if (newTotalSize > MAX_TOTAL_SIZE) {\n message?.error(`上传文件大小不能超过 ${MAX_TOTAL_SIZE / 1024 / 1024}MB`);\n return Upload.LIST_IGNORE;\n }\n }\n setTotalSize(newTotalSize);\n return false; // Prevent automatic upload\n };\n\n const onRemove = (file) => {\n setTotalSize((prevSize) => prevSize - file.size);\n };\n\n const onFinishFailed = (errorInfo) => {\n console.log('Failed:', errorInfo);\n if (errorInfo.errorFields.length > 0) {\n const firstErrorElement = errorInfo.errorFields[0];\n if (firstErrorElement.name.length > 0) {\n const name = firstErrorElement.name[0];\n const errors = firstErrorElement.errors;\n if (Array.isArray(errors) && errors.length > 0) {\n console.log(errors);\n const errMsg = errors.join('\\n');\n message?.error(errMsg);\n }\n switch (name) {\n case 'flightSegments':\n setTabName(Tab.Domestic);\n break;\n case 'intlFlightSegments':\n setTabName(Tab.International);\n\n break;\n default:\n return;\n }\n submitBtnRef.current.click();\n }\n }\n };\n\n return (\n \n
    \n
    \n
    \n setTabName(Tab.International)}\n aria-selected={tabName === Tab.International && 'true'}\n >\n 国际航班\n \n setTabName(Tab.Domestic)}\n aria-selected={tabName === Tab.Domestic && 'true'}\n >\n 澳新航班\n \n
    \n
    \n \n \n {(fields, { add, remove, move }) => (\n <>\n {fields.map((field, index) => (\n
    \n
    \n \n {\n return (\n \n {option.data.airportCode}\n ({option.data.cityEnglishName})\n \n );\n }}\n />\n \n
    \n
    \n \n {\n return (\n \n {option.data.airportCode}\n ({option.data.cityEnglishName})\n \n );\n }}\n />\n \n
    \n
    \n ({\n value: value ? dayjs(value) : undefined,\n })}\n getValueFromEvent={(date) =>\n date ? date.format('YYYY-MM-DD') : undefined\n }\n >\n {\n // Can not select days before today and today\n return current && current < dayjs().endOf('day');\n }}\n style={{ width: '100%' }}\n />\n \n
    \n
    \n \n {\n return (\n \n {option.data.carrierCode}\n ({option.data.name})\n \n );\n }}\n />\n \n
    \n
    \n \n \n \n
    \n
    \n value.map((item) => item.trim().toUpperCase())} // trim and uppercase\n >\n \n {/* */}\n \n
    \n\n
    \n remove(field.name)}\n />\n
    \n
    \n ))}\n
    \n \n
    \n \n )}\n
    \n
    \n \n \n {(fields, { add, remove, move }) => (\n <>\n {fields.map((field, index) => (\n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n ({\n value: value ? dayjs(value) : undefined,\n })}\n getValueFromEvent={(date) =>\n date ? date.format('YYYY-MM-DD') : undefined\n }\n rules={[\n {\n required: true,\n message: '请选择日期',\n },\n ]}\n >\n {\n // Can not select days before today and today\n return current && current < dayjs().endOf('day');\n }}\n style={{ width: '100%' }}\n />\n \n
    \n
    \n \n \n \n
    \n
    \n \n \n \n
    \n
    \n value.map((item) => item.trim().toUpperCase())} // trim and uppercase\n >\n \n {/* */}\n \n
    \n\n {/* {\n if (index > 0) move(index, index - 1);\n }}\n style={{\n cursor: index === 0 ? 'not-allowed' : 'pointer',\n color: index === 0 ? '#d9d9d9' : undefined,\n }}\n />\n {\n if (index < fields.length - 1) move(index, index + 1);\n }}\n style={{\n cursor: index === fields.length - 1 ? 'not-allowed' : 'pointer',\n color: index === fields.length - 1 ? '#d9d9d9' : undefined,\n }}\n /> */}\n
    \n remove(field.name)}\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
    \n \n \n \n
    \n\n
    \n \n \n \n
    \n\n
    \n \n 文件大小: {(totalSize / 1024 / 1024).toFixed(2)} MB / {MAX_TOTAL_SIZE / 1024 / 1024}{' '}\n MB\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 form.resetFields()}\n onCancel={(e) => {\n console.log(e);\n }}\n okText=\"重置\"\n cancelText=\"取消\"\n >\n \n \n \n
    \n
    \n
    \n \n
    \n
    \n \n );\n}\n\nGroupEnquiryCreateForm.propTypes = {\n form: PropTypes.object.isRequired,\n onFinish: PropTypes.func.isRequired,\n maxFileSizeInMB: PropTypes.number,\n};\n\nexport default GroupEnquiryCreateForm;\n","import { useState, useCallback, useRef } from 'react';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\nimport axios from 'axios';\n\nfunction useGroupEnquiryCreate(props) {\n const [submitting, setSubmitting] = useState(false);\n // progress\n const [precent, setPercent] = useState(0);\n const abortControllerRef = useRef(null);\n\n //Use axios over fetch API, because of progress tracking and timeout.\n const handleEnquiryCreate = useCallback(async (formData) => {\n setSubmitting(true);\n abortControllerRef.current = new AbortController();\n try {\n // Simulating an API call\n // await new Promise((resolve) => setTimeout(resolve, 1000));\n const response = await axios.post(`${config.apiURL2}/group-travel/enquiry`, formData, {\n headers: { Authorization: `Bearer ${GetToken()}` },\n signal: abortControllerRef.current.signal,\n onUploadProgress: (progressEvent) => {\n const total = progressEvent.total;\n let percentCompleted = Math.floor((progressEvent.loaded * 100) / total);\n setPercent(percentCompleted);\n },\n });\n if (response.status < 200 || response.status >= 300) {\n const data = response.data;\n throw new Error(data.error || 'An error occurred while create a group enquiry');\n }\n const data = response.data;\n return data;\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error create a group enquiry:', error);\n }\n throw error;\n } finally {\n setSubmitting(false);\n }\n }, []);\n\n handleEnquiryCreate.propTypes = {\n // makee sure the prop is an instance of FormData\n formData: (props, propName, componentName) => {\n if (!(props[propName] instanceof FormData)) {\n return new Error(\n `Invalid prop ${propName} supplied to ${componentName}. Expected instance of FormData.`\n );\n }\n },\n };\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { submitting, precent, handleEnquiryCreate, abort };\n}\n\nuseGroupEnquiryCreate.propTypes = {};\n\nexport default useGroupEnquiryCreate;\n","import React, { useState } from 'react';\nimport GroupEnquiryCreateForm from '@components/air/GroupEnquiryCreateForm';\nimport { Form, App, Result, Button, Spin } from 'antd';\nimport useGroupEnquiryCreate from '@hooks/flight/useGroupEnquiryCreate';\nimport { useNavigate } from 'react-router-dom';\nimport styles from '@styles/GroupTravelPage.module.css';\nimport TopHeaderBg from '@assets/flight_top_bg.png';\n\nfunction GroupTravelPage() {\n const [form] = Form.useForm();\n const { message } = App.useApp();\n const [success, setSuccess] = useState(false);\n const navigate = useNavigate();\n\n const { submitting, handleEnquiryCreate, precent } = useGroupEnquiryCreate();\n\n const onFinish = async (values) => {\n console.log(values);\n if (confirm('确定提交吗?') !== true) return;\n const UPLOAD_FIELD_NAME = 'files';\n const formData = new FormData();\n const fileList = form.getFieldValue(UPLOAD_FIELD_NAME);\n if (!!fileList && fileList.length != 0) {\n fileList.forEach((file) => {\n formData.append('files[]', file.originFileObj);\n });\n }\n // Remove file field from values\n delete values[UPLOAD_FIELD_NAME];\n // console.log(JSON.stringify(values));\n formData.append('data', JSON.stringify(values));\n try {\n const resp = await handleEnquiryCreate(formData);\n if (resp.reply) {\n message?.success(resp.reply);\n } else {\n message?.success('Form submitted and file uploaded successfully');\n }\n // Reset form after successful submission\n form.resetFields();\n setSuccess(true);\n } catch (error) {\n message?.error(error.message);\n console.error('Error:', error);\n }\n return;\n };\n\n const Success = () => {\n return (\n \n 感谢您的咨询,我们将尽快回复。如有任何问题,欢迎随时与我们联系。\n
    请留意您的邮箱(包括垃圾邮件文件夹)或在”团队订单“页面查看进展。\n \n }\n extra={[\n ,\n ,\n ]}\n />\n );\n };\n\n if (success) {\n return ;\n }\n\n return (\n
    \n
    \n \n
    \n
    随想旅途
    \n
    \n 全球航线 1000+ 条自在飞\n
    \n
    \n
    \n \n
    \n \n
    \n
    \n );\n}\n\nexport default GroupTravelPage;\n","import { useState, useCallback, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\n\nfunction useGroupEnquiries(props) {\n const [fetching, setFetching] = useState(false);\n const [enquiries, setEnquiries] = useState([]);\n const [total, setTotal] = useState(0);\n const abortControllerRef = useRef(null);\n\n const fetchEnquiries = useCallback(async ({ page, pageSize } = {}) => {\n const offset = (page - 1) * pageSize;\n const limit = pageSize;\n setFetching(true);\n abortControllerRef.current = new AbortController();\n // console.log('limit', limit, 'offset', offset);\n try {\n const response = await fetch(`${config.apiURL2}/group-travel/enquiries?limit=${limit}&offset=${offset}`, {\n method: 'GET',\n headers: { Authorization: `Bearer ${GetToken()}` },\n signal: abortControllerRef.current.signal,\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'An error occurred while fetch enquiries');\n }\n const result = await response.json();\n setEnquiries(result.enquiries);\n setTotal(result.total);\n return result;\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error fetch group enquiries:', error);\n }\n throw error;\n } finally {\n setFetching(false);\n }\n }, []);\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { fetching, enquiries, total, abort, fetchEnquiries };\n}\n\nuseGroupEnquiries.propTypes = {};\n\nexport default useGroupEnquiries;\n","import { defaultQueryReq } from '.';\n\nconst key = 'group_flight_enquiries_query_params';\n\nexport const GetQuery = () => {\n const query = sessionStorage.getItem(key);\n return query ? JSON.parse(query) : defaultQueryReq;\n};\n\nexport const SaveQuery = (query) => {\n sessionStorage.setItem(key, JSON.stringify(query));\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Table, Tag, Badge } from 'antd';\nimport dayjs from 'dayjs';\nimport useGroupEnquiries from './useGroupEnquiries';\nimport { Link } from 'react-router-dom';\nimport { GetUserInfo } from '@utils/storage';\nimport { GetQuery, SaveQuery } from './storage';\n\nexport const defaultQueryReq = {\n page: 1,\n pageSize: 10,\n};\n\nfunction GroupTravelEnuiriesTable() {\n const { fetching, fetchEnquiries, enquiries, total, abort } = useGroupEnquiries();\n const [queryReq, setQueryReq] = useState(GetQuery());\n\n useEffect(() => {\n return () => {\n abort();\n };\n }, []);\n\n useEffect(() => {\n fetchData(queryReq);\n }, [queryReq]);\n\n const fetchData = ({ page, pageSize } = {}) => {\n console.log('fetchData', { page, pageSize });\n\n fetchEnquiries({ page, pageSize })\n .then((result) => {\n //Save query params to session storage\n // console.log('SaveQuery', { page, pageSize });\n SaveQuery({ page, pageSize });\n })\n .catch((error) => {\n console.error('Error fetching enquiries:', error);\n });\n };\n\n const handleTableChange = (newPagination) => {\n // console.log('newPagination', newPagination);\n setQueryReq((prev) => {\n return { ...prev, page: newPagination.current, pageSize: newPagination.pageSize };\n });\n };\n\n const columns = [\n {\n title: '团队名称',\n dataIndex: ['enquiry', 'groupName'],\n key: 'groupName',\n },\n {\n title: '提交时间',\n dataIndex: ['enquiry', 'createdAt'],\n key: 'createdAt',\n render: (text, record) => {\n return dayjs(text).format('YYYY-MM-DD HH:mm');\n },\n },\n {\n title: '人数',\n key: 'passengers',\n render: (text, record) => {\n const { numAdult, numChild } = record.enquiry;\n return (\n \n {numAdult}成人\n {numChild > 0 && ` + ${numChild}儿童`}\n \n );\n },\n },\n\n {\n title: '航班',\n dataIndex: ['enquiry', 'flightSegments'],\n key: 'flightSegments',\n render: (segments) => (\n <>\n {segments.map((segment, index) => (\n
    \n \n {segment.date}\n \n \n {`${segment.fromAirport} → ${segment.toAirport}`}\n \n {segment.carrierCode}\n {segment.flightNumbers.join(', ')}\n {segment.cabinClass}\n
    \n ))}\n \n ),\n },\n {\n title: '状态',\n dataIndex: 'comments',\n key: 'comments',\n render: (comments, record) => {\n const id = record.enquiry.id;\n if (comments && comments.length > 0) {\n const replied = comments.some((comment) => comment.accountID !== GetUserInfo().id);\n if (replied) {\n return ;\n }\n }\n return ;\n },\n },\n {\n title: '操作',\n key: 'action',\n render: (_, record) => {\n const id = record.enquiry.id;\n return (\n \n \n \n );\n },\n },\n ];\n\n return (\n record.enquiry.id}\n pagination={{\n current: queryReq.page,\n pageSize: queryReq.pageSize,\n total,\n showSizeChanger: true,\n showQuickJumper: true,\n showTotal: (total) => `Total ${total} items`,\n pageSizeOptions: ['5', '10', '20', '50'],\n }}\n onChange={handleTableChange}\n bordered\n />\n );\n}\n\nGroupTravelEnuiriesTable.propTypes = {};\n\nexport default GroupTravelEnuiriesTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport GroupEnquiriesTable from '@components/air/GroupEnquiriesTable';\n\nfunction GroupEnquiriesPage() {\n return (\n
    \n

    团队订单

    \n \n
    \n );\n}\n\nGroupEnquiriesPage.propTypes = {};\n\nexport default GroupEnquiriesPage;\n","import { useState, useCallback, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\n\nfunction useGroupEnquiry(props) {\n const [fetching, setFetching] = useState(false);\n const [data, setData] = useState({});\n const abortControllerRef = useRef(null);\n\n const fetchData = useCallback(async (id) => {\n setFetching(true);\n abortControllerRef.current = new AbortController();\n // console.log('limit', limit, 'offset', offset);\n try {\n const response = await fetch(`${config.apiURL2}/group-travel/enquiries/${id}`, {\n method: 'GET',\n headers: { Authorization: `Bearer ${GetToken()}` },\n signal: abortControllerRef.current.signal,\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'An error occurred while fetch a group enquiry');\n }\n const result = await response.json();\n setData(result.data);\n return result;\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error fetch a group enquiry:', error);\n }\n throw error;\n } finally {\n setFetching(false);\n }\n }, []);\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { fetching, data, fetchData, abort };\n}\n\nuseGroupEnquiry.propTypes = {};\n\nexport default useGroupEnquiry;\n","import { useState, useRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\n\nfunction useGroupEnquiryUpdate(props) {\n const [submitting, setSubmitting] = useState(false);\n const abortControllerRef = useRef(null);\n\n const handleEnquiryUpdate = useCallback(async (id, req) => {\n abortControllerRef.current = new AbortController();\n try {\n setSubmitting(true);\n const response = await fetch(`${config.apiURL2}/group-travel/enquiries/${id}`, {\n method: 'PATCH',\n body: JSON.stringify(req),\n headers: { Authorization: `Bearer ${GetToken()}` },\n signal: abortControllerRef.current.signal,\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'An error occurred while update a group enquiry');\n }\n const data = await response.json();\n return data;\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error update a group enquiry:', error);\n }\n throw error;\n } finally {\n setSubmitting(false);\n }\n }, []);\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { submitting, handleEnquiryUpdate, abort };\n}\n\nuseGroupEnquiryUpdate.propTypes = {};\n\nexport default useGroupEnquiryUpdate;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { useParams } from 'react-router';\nimport useGroupEnquiry from '../../hooks/flight/useGroupEnquiry';\nimport BackBar from '../../components/BackBar';\nimport { Spin, Tag, Descriptions, Space, Input, Button, App, Modal } from 'antd';\nimport dayjs from 'dayjs';\nimport { EditOutlined } from '@ant-design/icons';\nimport useGroupEnquiryUpdate from '../../hooks/flight/useGroupEnquiryUpdate';\nimport Comments from '../../components/Comments';\nconst { TextArea } = Input;\n\nfunction GroupEnquiryPage() {\n const { id } = useParams();\n const { fetching, data, fetchData, abort: abortFetch } = useGroupEnquiry();\n const { submitting, handleEnquiryUpdate, abort: abortUpdate } = useGroupEnquiryUpdate();\n const [req, setReq] = useState({}); //local data\n const [openGroupName, setOpenGroupName] = useState(false);\n const [openRemark, setOpenRemark] = useState(false);\n\n const { message } = App.useApp();\n\n if (!id) {\n return
    No Enquiry ID
    ;\n }\n\n useEffect(() => {\n fetchData(id);\n return () => {\n abortFetch();\n abortUpdate();\n };\n }, [id]);\n\n useEffect(() => {\n if (data.enquiry) {\n // console.log(data.enquiry);\n setReq({\n groupName: data.enquiry.groupName,\n remark: data.enquiry.remark,\n });\n }\n }, [data.enquiry]);\n\n const getItems = (data) => {\n if (!data) {\n return [];\n }\n return [\n {\n key: '1',\n label: '团队名称',\n children: (\n
    \n {data.groupName}{' '}\n setOpenGroupName((prev) => !prev)}\n icon={}\n >\n setOpenGroupName(false)}\n okText=\"Save\"\n cancelText=\"Cancel\"\n onOk={handleOnSave}\n centered\n >\n

    Edit Group Name

    \n {\n const groupName = e.target.value;\n setReq({ ...req, groupName });\n }}\n />\n \n
    \n ),\n },\n {\n key: '2',\n label: '提交时间',\n children: dayjs(data.createdAt).format('YYYY-MM-DD HH:mm:ss'),\n },\n {\n key: '3',\n label: '成人票',\n children: data.numAdult,\n },\n {\n key: '4',\n label: '儿童票',\n children: data.numChild,\n },\n {\n key: '6',\n label: '航班',\n span: 2,\n children: (\n \n {data.flightSegments.map((item, index) => {\n return (\n
    \n {item.date}\n {item.fromAirport}\n {item.toAirport}\n {item.carrierCode}\n {item.cabinClass}\n {item.flightNumbers.join(', ')}\n
    \n );\n })}\n
    \n ),\n },\n {\n key: '7',\n label: '备注',\n span: 2,\n children: (\n
    \n {data.remark}{' '}\n setOpenRemark((prev) => !prev)}\n icon={}\n >\n setOpenRemark(false)}\n onOk={handleOnSave}\n okText=\"Save\"\n centered\n >\n

    Edit Remark

    \n {\n const remark = e.target.value;\n setReq({ ...req, remark });\n }}\n placeholder=\"备注\"\n autoSize={{\n minRows: 6,\n }}\n />\n {/* */}\n \n
    \n ),\n },\n ];\n };\n\n const handleOnSave = () => {\n handleEnquiryUpdate(id, { groupName: req.groupName, remark: req.remark })\n .then((res) => {\n setOpenGroupName(false);\n setOpenRemark(false);\n if (res.reply) {\n message.success(res.reply);\n }\n fetchData(id);\n })\n .catch((err) => {\n message.error(err.message);\n });\n };\n\n return (\n
    \n \n

    \n 团队机票 \n

    \n
    \n \n
    \n \n
    \n
    \n );\n}\n\nexport default GroupEnquiryPage;\n","import { useState, useCallback, useRef } from 'react';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\nimport { set } from 'date-fns';\n\nfunction useFlightOrder() {\n const [fetching, setFetching] = useState(false);\n const [data, setData] = useState({});\n const [order, setOrder] = useState({});\n const abortControllerRef = useRef(null);\n\n const fetchOrder = useCallback(async (orderNo) => {\n console.log('Fetching order:', orderNo);\n setFetching(true);\n try {\n abortControllerRef.current = new AbortController();\n const response = await fetch(`${config.apiURL2}/flights/orders/${orderNo}`, {\n method: 'GET',\n headers: { Authorization: `Bearer ${GetToken()}` },\n signal: abortControllerRef.current.signal,\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'An error occurred while fetching flight order');\n }\n const data = await response.json();\n setData(data);\n console.log('order', data.order);\n setOrder(data.order);\n return data;\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error fetching flight order:', error);\n }\n throw error;\n } finally {\n setFetching(false);\n }\n }, []);\n\n const abort = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n }, []);\n\n return { fetching, data, order, fetchOrder, abort };\n}\n\nexport default useFlightOrder;\n","import { useCallback, useState, useRef } from 'react';\nimport { GetToken } from '@utils/storage';\nimport * as config from '@config';\n\nexport const IssueType = {\n Issue: 1,\n Cancel: 2,\n};\n\nfunction useFlightIssue() {\n const [submitting, setSubmitting] = useState(false);\n const [data, setData] = useState();\n const abortRef = useRef();\n\n const handleIssue = useCallback(async (req) => {\n setSubmitting(true);\n try {\n console.log(req);\n abortRef.current = new AbortController();\n const response = await fetch(`${config.apiURL2}/flights/issue`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${GetToken()}`,\n },\n body: JSON.stringify(req),\n signal: abortRef.current.signal,\n });\n if (!response.ok) {\n const data = await response.json();\n throw new Error(data.error || 'An error occurred while issuing flight');\n }\n const data = await response.json();\n setData(data);\n return data;\n } catch (err) {\n if (err.name === 'AbortError') {\n console.log('Request was aborted');\n throw new Error('Request was aborted');\n } else {\n console.error('Error issuing flight:', err);\n }\n throw err;\n } finally {\n setSubmitting(false);\n }\n }, []);\n\n const abort = useCallback(() => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n }, []);\n\n return { submitting, data, handleIssue, abort };\n}\n\nexport default useFlightIssue;\n","import React, { useEffect, useState } from 'react';\nimport { useParams } from 'react-router';\nimport BackBar from '../../components/BackBar';\nimport useFlightOrder from '../../hooks/flight/useFlightOrder';\nimport { Descriptions, Space, Button, Alert, Spin } from 'antd';\nimport { ClockCircleOutlined, UserOutlined } from '@ant-design/icons';\nimport { format, parse } from 'date-fns';\nimport { zhCN } from 'date-fns/locale';\nimport useFlightIssue, { IssueType } from '../../hooks/flight/useFlightIssue';\nimport { TicketingMsg } from '@utils/constants';\n\nfunction FlightOrderPage(props) {\n const { id: orderNo } = useParams();\n const { fetching, fetchOrder, order, abort: abortFetch } = useFlightOrder();\n const { submitting, handleIssue, abort: abortIssue } = useFlightIssue();\n\n if (!orderNo) {\n return
    Empty order number
    ;\n }\n\n useEffect(() => {\n if (orderNo) {\n fetchOrder(orderNo);\n }\n return () => {\n abortFetch();\n abortIssue();\n };\n }, [orderNo]);\n\n const formatDateTime = (str) => {\n if (!str) return '-';\n const parsedDate = parse(str, 'yyyyMMddHHmm', new Date());\n return format(parsedDate, 'MM月dd日 HH:mm', { locale: zhCN });\n };\n\n if (fetching) {\n return
    Loading...
    ;\n }\n\n const handleClick = (issueType) => {\n let msg = '';\n switch (issueType) {\n case IssueType.Issue:\n msg = '确定要申请出票?';\n break;\n case IssueType.Cancel:\n msg = '确定要申请取消?';\n break;\n default:\n console.error('Unknown issue type:', issueType);\n return;\n }\n if (confirm(msg) !== true) {\n return;\n }\n const req = {\n channelSource: order.channelSource,\n orderNo: order.orderNo,\n issueType: issueType,\n totalPrice: order.totalPrice,\n };\n handleIssue(req)\n .then((data) => {\n alert(data.reply);\n })\n .catch((error) => {\n alert(error.message);\n });\n };\n\n return (\n
    \n \n
    \n \n \n {order.orderNo}\n {order.oid}\n {order.pnrCode}\n {order.channelSourceName}\n {order.carrier}\n {order.statusTxt}\n \n {formatDateTime(order.fromDepTime)} - {order.fromDepAirport}\n \n \n {formatDateTime(order.fromArrTime)} - {order.fromArrAirport}\n \n \n {order.currency ?? 'CNY'} {order.totalPrice}\n \n \n {order.passengers?.join(', ')} (成人: {order.numAdult}; 儿童: {order.numChild})\n \n \n
    \n \n
    \n \n \n \n \n
    \n );\n}\n\nexport default FlightOrderPage;\n","import React from 'react';\nimport styles from '@styles/FlightDealsPage.module.css';\nimport TopHeaderBg from '@assets/flight_top_bg.png';\nimport FlightDeals from '../../components/air/FlightDeals';\nimport { Button } from 'antd';\nimport { Link } from 'react-router-dom';\n\nfunction FlightDealsPage() {\n return (\n
    \n
    \n \n
    \n
    随想旅途
    \n
    \n 全球航线 1000+ 条自在飞\n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    您看到的价格就是您支付的价格
    \n 没有合适航班?提交您的需求,为您精准匹配\n
    \n \n
    \n
    \n
    \n );\n}\n\nexport default FlightDealsPage;\n","import React from 'react';\nimport { Route, Routes } from 'react-router';\nimport AirTicketPage from './AirTicketPage';\nimport AirBookingPage from './AirBookingPage';\nimport AirOrdersPage from './AirOrdersPage';\nimport GroupTravelPage from './GroupTravelPage';\nimport GroupEnquiriesPage from './GroupEnquiriesPage';\nimport { Result } from 'antd';\nimport GroupEnquiryPage from './GroupEnquiryPage';\nimport { FlightSearchProvider } from '../../contexts/FlightSearchContext';\nimport FlightOrderPage from './FlightOrderPage';\nimport FlightDealsPage from './FlightDealsPage';\n\nfunction Index() {\n return (\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\nexport default Index;\n"],"names":["compareAsc","dirtyDateLeft","dirtyDateRight","requiredArgs","dateLeft","toDate","dateRight","diff","differenceInMilliseconds","roundingMap","value","defaultRoundingMethod","getRoundingMethod","method","differenceInMinutes","options","millisecondsInMinute","cloneObject","object","assign","MILLISECONDS_IN_MINUTE","MINUTES_IN_DAY","MINUTES_IN_MONTH","MINUTES_IN_YEAR","formatDistanceStrict","dirtyDate","dirtyBaseDate","_ref","_options$locale","_options$roundingMeth","defaultOptions","getDefaultOptions","locale","defaultLocale","comparison","localizeOptions","roundingMethod","roundingMethodFn","milliseconds","minutes","timezoneOffset","getTimezoneOffsetInMilliseconds","dstNormalizedMinutes","defaultUnit","unit","seconds","roundedMinutes","hours","days","months","years","formatDistanceToNowStrict","isAfter","dirtyDateToCompare","date","dateToCompare","startOfHour","isSameHour","dateLeftStartOfHour","dateRightStartOfHour","setHours","dirtyHours","toInteger","setMinutes","dirtyMinutes","isSameUTCWeek","dateLeftStartOfWeek","startOfUTCWeek","dateRightStartOfWeek","formatDistanceLocale","formatDistance","token","count","result","tokenValue","formatDistance$1","dateFormats","timeFormats","dateTimeFormats","formatLong","buildFormatLongFn","formatLong$1","checkWeek","baseDate","baseFormat","formatRelativeLocale","formatRelative","format","formatRelative$1","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","localize","buildLocalizeFn","quarter","localize$1","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","buildMatchPatternFn","buildMatchFn","index","match$1","zhCN","TopHeaderBg","IconOneway","IconRoundTrip","Text","Typography","setFlightSearchReq","useMyContext","initData","GetFlightSearchQueryHistory","data","setData","useState","activieKey","setActivieKey","useEffect","handleOnClick","item","Content","jsx","styles","jsxs","handleFlush","e","CleanupFlightSearchQueryHistory","Trigger","FaRegTrashCan","Collapse","key","timeParse","str","parsedDate","parse","timePrint","diffInDays","segments","depTime","arrTime","differenceInDays","getTotalDuration","totalMinutes","acc","seg","getTransferInfo","nextSeg","nextDepTime","stopDuration","t","isInTimeSlot","timeString","startHour","endHour","startTime","endTime","isBefore","Title","FlightDetailsModal","open","routing","onClose","isRoundTrip","columns","getFlightDetails","segment","Modal","Table","Fragment","PropTypes","RulesModal","rules","RuleSection","title","content","Space","useFlightVerifyPrice","verifying","setVerifying","abortControllerRef","useRef","handleVerify","useCallback","request","priceInfo","fromSegments","retSegments","i","req","response","config.apiURL2","GetToken","err","abort","useBreakpoint","Grid","Routing","expandableRef","openRoutingDetails","setOpenRoutingDetails","navigate","useNavigate","message","App","screens","expanded","setExpanded","_a","toggleExpanded","Airline","config.baseURL","FlightDetail","FlightInfo","firstSegment","lastSegment","Button","PriceListItem","price","openRuleDetails","setOpenRuleDetails","abortVerify","rule","flights","from","ret","handlePriceVerify","error","Spin","DownOutlined","Routing$1","React","TIME_SLOTS","STOP_TYPES","FilterKey","Filters","airlineOptions","stopsOptions","depAirportOptions","arrAirportOptions","filterData","setFilterData","timeOptions","useMemo","slot","handleFilterChange","prev","handleStopTypeChange","handleReset","Checkbox","Select","ReloadOutlined","Filters$1","RoutingsList","routings","loadedItems","setLoadedItems","loaderRef","ITEMS_PER_PAGE","observer","entries","loadMoreItems","nextItems","prevItems","applyFilters","airlines","route","airline","departureAirports","arrivalAirports","_b","_c","lastFromSegment","_e","_d","_f","lastRetSegment","code","stopAirports","filteredData","stops","found","start","end","outboundMatch","inboundMatch","Object$1","Rectangle","IconCheck","AirFeaturesBanner","Object","IconAuth","IconCoupon","IconOneStop","Icon24hours","IconEfficient","AirFeatures","AirTicketPage","props","searchReq","setSearchReq","timestamp","fetchFlights","fetching","fetched","useFlightSearchContext","GetAirTicketReq","handleSubmit","EmptyRoutings","AirSearchForm","RecentFlightSearch","Skeleton","AirTicketPage$1","countryOptions","genTestData","genRandomDob","year","month","day","genRandomExpire","genRandomPassport","prefix","digits","genRandomNationality","nats","firstnames","arabicLastNames","getFirstname","getLastname","DefaultData","AgeType","PassengersForm","passengers","setPassengers","formID","maxSeats","allowAges","handleAdd","newPax","hasAdult","p","hasChild","handleRemove","newData","handleOnChange","name","handleAddTestPAX","testPax","Form","DevMode","Icon","FormGroup","FormSelect","useFlightCreateOrder","submitting","setSubmitting","handleCreateOrder","useCode2Name","nameCN","setNameCN","nameEN","setNameEN","setFetching","abortRef","fetchName","config.apiURL","AirportName","fethcing","AirportName$1","getDate","dateObj","getTime","duration","dep","arr","Segment","label","CabinClassName","FlightSegments","Segments","ClockCircleOutlined","FlightSegments$1","AirBookingPage","location","useLocation","loginUser","GetUserInfo","sessionId","ticketInfo","BackBar","useId","success","SetSuccess","ScrollToTop","numAdult","numChild","total","prettifyCurrency","reply","gotoOrders","goBack","Success","Result","Refund","setOpen","Baggage","TableHeader","TableRow","TableHeaderCell","TableBody","TableCell","Dimmer","Loader","useFlightOrders","orders","setOrders","setTotal","fetchOrders","page","pageSize","offset","limit","queryParams","queryString","responseData","useRefreshFlightOrder","refreshing","setRefreshing","handleRefresh","orderNo","Refresh","onRefresh","FlightOrdersTable","expandedRows","setExpandedRows","currentPage","setCurrentPage","setPageSize","refetch","fetchData","dateString","isValid","text","_","record","handleTableChange","pagination","AirOrdersPage","Alert","TicketingMsg","CabinClass","australianAirports","GroupFeaturesBanner","Icon1","Icon2","Icon3","Icon4","GroupFeatures","useFlightDeals","deals","setDeals","fetchDeals","query","q","RemoveEmpty","usePolling","action","interval","immediate","enabled","timeoutRef","progressIntervalRef","mountedRef","actionRef","isActive","setIsActive","nextPollIn","setNextPollIn","clearTimers","startProgressTracking","elapsed","remaining","execute","stop","refresh","useFlightDealBook","bookFlightDeal","useFlightDeal","deal","setDeal","fetchDeal","id","Actions","showBook","setShowBook","showReserve","setShowReserve","seats","setSeats","handleBooking","reserve","enquiryID","InputNumber","getAirlineCode","flightNumber","Row","showRules","setShowRules","dayjs","FlightDeals","pollAction","Footer","MAX_PASSENGER","labelCol","Tab","GroupEnquiryCreateForm","form","onFinish","maxFileSizeInMB","tabName","setTabName","totalSize","setTotalSize","submitBtnRef","MAX_TOTAL_SIZE","normFile","beforeUpload","file","fileList","newTotalSize","Upload","onRemove","prevSize","onFinishFailed","errorInfo","firstErrorElement","errors","errMsg","fields","add","remove","move","field","createElement","option","DatePicker","current","CloseOutlined","PlusOutlined","Input","InboxOutlined","Flex","Popconfirm","RedoOutlined","useGroupEnquiryCreate","precent","setPercent","handleEnquiryCreate","formData","axios","progressEvent","percentCompleted","propName","componentName","GroupTravelPage","setSuccess","values","UPLOAD_FIELD_NAME","resp","useGroupEnquiries","enquiries","setEnquiries","fetchEnquiries","GetQuery","defaultQueryReq","SaveQuery","GroupTravelEnuiriesTable","queryReq","setQueryReq","newPagination","Tag","comments","comment","Badge","Link","GroupEnquiriesPage","GroupEnquiriesTable","useGroupEnquiry","useGroupEnquiryUpdate","handleEnquiryUpdate","TextArea","GroupEnquiryPage","useParams","abortFetch","abortUpdate","setReq","openGroupName","setOpenGroupName","openRemark","setOpenRemark","getItems","EditOutlined","handleOnSave","groupName","remark","res","Descriptions","Comments","useFlightOrder","order","setOrder","fetchOrder","IssueType","useFlightIssue","handleIssue","FlightOrderPage","abortIssue","formatDateTime","handleClick","issueType","msg","UserOutlined","FlightDealsPage","Index","Routes","Route","FlightSearchProvider"],"mappings":"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IACV,EACD,CACI,IAAK,GACL,KAAM,UACN,OAAQ,sBACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,QACR,MAAO,IACV,EAED,CACI,IAAK,GACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,gBAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,WACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,SACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,yBACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,gBACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,UACN,OAAQ,uCACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,oBACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,QACN,OAAQ,eAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,SACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,uBACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,iCAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,OAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EAED,CACI,IAAK,GACL,KAAM,MACN,OAAQ,mBACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,YACN,OAAQ,gCACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,QACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,QACN,OAAQ,yCAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,qBACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,QACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,gBAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,OAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,uBAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,2BAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,cAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,QACN,OAAQ,oBAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,QACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,QACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,eACN,OAAQ,oCACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,sBACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,OAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,QACN,OAAQ,gBACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,UACN,OAAQ,mBACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,SACN,OAAQ,oCACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,eAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,YACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,YACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,aACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,OACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,WACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,QACN,OAAQ,gBAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,YACN,OAAQ,oCACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,sCACR,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,OACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,KACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,GACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,iCAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,OAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,SACN,OAAQ,cACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,QACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,8CAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,0BAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,SACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,yCAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,+BAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,gBAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,8CAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,WACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,OAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,yBAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,aACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,WACN,OAAQ,uCAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,4BAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,WACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,aACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,oBAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,SACN,OAAQ,6BACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,SACN,OAAQ,gBACR,MAAO,IACV,EAED,CACI,IAAK,IACL,KAAM,OACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,cAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,OAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,iBACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,iCAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,OAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,uCAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,UACN,OAAQ,mBACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,OAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,oBAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,WACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,cACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,2BAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,eACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,UACN,OAAQ,wBACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,cACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,WACN,OAAQ,4BACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,aACN,OAAQ,mCACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,WACN,OAAQ,wBAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,eAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,eAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,wBACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,eAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,eACN,OAAQ,+CACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,cAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,aACN,OAAQ,yBACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,cAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,6BAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,6BACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,8BAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,cAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,OAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,WACN,OAAQ,sBAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,QACN,OAAQ,eACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,YACN,OAAQ,iCACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,6BAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,uBAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,sBAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,WACN,OAAQ,6CACR,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,MACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,SACN,OAAQ,aAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,UAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,YAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,KACN,OAAQ,WAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,UACN,OAAQ,2BAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,UACN,OAAQ,wBAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,UACN,OAAQ,oBAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,iBACR,MAAO,IACV,EAED,CACI,IAAK,IACL,KAAM,KACN,OAAQ,QAER,MAAO,IACV,EAED,CACI,IAAK,IACL,KAAM,MACN,OAAQ,SAER,MAAO,IACV,EACD,CACI,IAAK,IACL,KAAM,OACN,OAAQ,WAER,MAAO,IACV,CACL,EClmDMC,GAAc,IAAM,CAEtB,MAAMC,EAAe,IAAM,CACvB,MAAMC,EAAO,IAAI,KAAK,EAAE,YAAY,EAAI,KAAK,MAAM,KAAK,OAAA,EAAW,EAAE,EAAI,GACnEC,EAAQ,KAAK,MAAM,KAAK,SAAW,EAAE,EAAI,EACzCC,EAAM,KAAK,MAAM,KAAK,SAAW,EAAE,EAAI,EAC7C,MAAO,GAAGF,CAAI,IAAIC,EAAQ,GAAK,IAAMA,EAAQA,CAAK,IAAIC,EAAM,GAAK,IAAMA,EAAMA,CAAG,EAAA,EAG9EC,EAAkB,IAAM,CAC1B,MAAMH,EAAO,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,EAAI,EAAI,IAAI,KAAK,EAAE,YAAY,EAClEC,EAAQ,KAAK,MAAM,KAAK,SAAW,EAAE,EAAI,EACzCC,EAAM,KAAK,MAAM,KAAK,SAAW,EAAE,EAAI,EAC7C,MAAO,GAAGF,CAAI,IAAIC,EAAQ,GAAK,IAAMA,EAAQA,CAAK,IAAIC,EAAM,GAAK,IAAMA,EAAMA,CAAG,EAAA,EAG9EE,EAAoB,IAAM,CAC5B,MAAMC,EAAS,KAAK,OAAO,EAAI,GAAM,IAAM,IACrCC,EAAS,KAAK,MAAM,KAAK,OAAA,EAAW,GAAS,EAC5C,MAAA,GAAGD,CAAM,GAAGC,EAAO,WAAW,SAAS,EAAG,GAAG,CAAC,EAAA,EAInDC,EAAuB,IAAM,CAC/B,MAAMC,EAAO,CAAC,KAAM,KAAM,IAAI,EACvB,OAAAA,EAAK,KAAK,MAAM,KAAK,SAAWA,EAAK,MAAM,CAAC,CAAA,EAIjDC,EAAa,CAAC,OAAQ,SAAU,WAAY,WAAY,SAAU,WAAY,WAAY,SAAS,EAEnGC,EAAkB,CACpB,QACA,SACA,UACA,QACA,SACA,UACA,SACA,QACA,QACA,SACA,QACA,UACA,QACA,UACA,SACA,UACA,SACA,UACA,QACA,SACA,UAAA,EAEEC,EAAe,IACVF,EAAW,KAAK,MAAM,KAAK,SAAWA,EAAW,MAAM,CAAC,EAE7DG,EAAc,IACTF,EAAgB,KAAK,MAAM,KAAK,SAAWA,EAAgB,MAAM,CAAC,EAGtE,MAAA,CACH,QAAS,EACT,UAAWC,EAAa,EACxB,SAAUC,EAAY,EACtB,OAAQ,IACR,IAAKb,EAAa,EAClB,aAAcQ,EAAqB,EACnC,OAAQ,KACR,SAAUH,EAAkB,EAC5B,SAAUD,EAAgB,EAC1B,OAAQ,aAAA,CAEhB,EAEaU,GAAc,CACvB,QAAS,GACT,UAAW,GACX,SAAU,GACV,OAAQ,GACR,IAAK,GACL,aAAc,GACd,OAAQ,GACR,SAAU,GACV,SAAU,GACV,OAAQ,EACZ,EAEaC,EAAU,CACnB,MAAO,EACP,MAAO,CACX,EAEA,SAASC,GAAe,CACpB,WAAAC,EAAa,CAAC,EACd,cAAAC,EAAgB,IAAM,CAAC,EACvB,OAAAC,EACA,SAAAC,EAAW,EACX,UAAAC,EAAY,CAACN,EAAQ,MAAOA,EAAQ,KAAK,CAC7C,EAAG,CACCpN,EAAAA,UAAU,KACFsN,EAAW,QAAU,GACrBC,EAAevF,GACJ,CAAC,GAAGA,EAAM,CAAE,GAAGmF,EAAa,CAAA,CACtC,EAEE,IAAM,CAAA,GACd,CAACG,CAAU,CAAC,EAEf,MAAMK,EAAY,IAAM,CAEpB,GAAIL,EAAW,QAAUG,EAAU,OAG/B,IAAAG,EAAS,CAAE,GAAGT,IACd,GAAAO,EAAU,OAAS,EAAG,CAChB,MAAAG,EAAWP,EAAW,KAAMQ,GAAMA,EAAE,SAAWV,EAAQ,KAAK,EAC5DW,EAAWT,EAAW,KAAMQ,GAAMA,EAAE,SAAWV,EAAQ,KAAK,EAC9DS,GAAY,CAACE,IACbH,EAAO,QAAUR,EAAQ,OAEzB,CAACS,GAAYE,IACbH,EAAO,QAAUR,EAAQ,MAEjC,CACAG,EAAevF,GACJ,CAAC,GAAGA,EAAM4F,CAAM,CAC1B,CAAA,EAGCI,EAAgBjP,GAAU,CAC5B,QAAQ,IAAIA,CAAK,EACX,MAAAkP,EAAU,CAAC,GAAGX,CAAU,EACtBW,EAAA,OAAOlP,EAAO,CAAC,EACTwO,EAAA,CAAC,GAAGU,CAAO,CAAC,CAAA,EAGxBC,EAAiB,CAAC1N,EAAG,CAAE,KAAA2N,EAAM,MAAA/V,GAAS2G,IAAU,CAClD,QAAQ,IAAI,CAAE,CAACoP,CAAI,EAAG/V,CAAO,CAAA,EACvB,MAAA6V,EAAU,CAAC,GAAGX,CAAU,EACtBW,EAAAlP,CAAK,EAAEoP,CAAI,EAAI/V,EACvBmV,EAAcU,CAAO,CAAA,EAGnBG,EAAoBrP,GAAU,CAChC,QAAQ,IAAI,iBAAiB,EAE7BwO,EAAevF,GAAS,CACpB,MAAMqG,EAAUjC,KACV6B,EAAU,CAAC,GAAGjG,CAAI,EACxB,OAAAiG,EAAQlP,CAAK,EAAIsP,EACVJ,CAAA,CACV,CAAA,EAGL,cACK,MACG,CAAA,SAAA,CAAA7N,MAACkO,IAAK,GAAId,EACL,WAAW,IAAI,CAACtN,EAAMnB,WAEd,MACG,CAAA,SAAA,CAACuB,EAAAA,KAAA,MAAA,CAAI,MAAO,CAAE,aAAc,OAAQ,QAAS,OAAQ,eAAgB,eAAA,EACjE,SAAA,CAAAA,OAAC,OAAI,MAAO,CAAE,SAAU,OAAQ,WAAY,KAAS,EAAA,SAAA,CAAA,MAC7CvB,EAAQ,EAAG,IACdwP,MAAanO,EAAAA,IAACoO,GAAK,CAAA,KAAK,MAAM,QAAS,IAAMJ,EAAiBrP,CAAK,EAAG,EAAI,GAAA,EAC/E,EACAqB,EAAAA,IAAC,MACG,CAAA,SAAAA,EAAAA,IAAC8F,GAAO,CAAA,SAAQ,GAAC,KAAI,GAAC,QAAS,IAAM8H,EAAajP,CAAK,EAAG,KAAK,SAAS,KAAK,OACzE,SAACqB,EAAA,IAAAoO,GAAA,CAAK,KAAK,kBAAkB,MAAM,KAAM,CAAA,CAAA,CAC7C,CACJ,CAAA,CAAA,EACJ,QACC,MAAI,CAAA,MAAO,CAAE,MAAO,OAAQ,QAAS,OAAQ,WAAY,QAAA,EACtD,SAAClO,EAAA,KAAA,MAAA,CAAI,MAAO,CAAE,MAAO,MAEjB,EAAA,SAAA,CAACA,EAAAA,KAAAmO,GAAA,CAAU,OAAO,QACd,SAAA,CAAArO,EAAA,IAACsO,GAAA,CAEG,MAAK,GACL,MAAM,OACN,KAAK,UACL,SAAQ,GACR,QAAS,CACL,CAAE,IAAK,EAAG,KAAM,KAAM,MAAOtB,EAAQ,KAAM,EAC3C,CAAE,IAAK,EAAG,KAAM,KAAM,MAAOA,EAAQ,KAAM,CAC/C,EACA,MAAOlN,EAAK,QACZ,SAAU,CAACM,EAAGb,IAASuO,EAAe1N,EAAGb,EAAMZ,CAAK,EACpD,YAAY,KAEZ,SACI,EACI2O,EAAU,SAASN,EAAQ,KAAK,GAChCM,EAAU,SAASN,EAAQ,KAAK,EAAA,CAG5C,EACAhN,EAAA,IAACkO,GAAK,MAAL,CACG,KAAK,WACL,MAAM,gBACN,YAAY,SACZ,eAAe,QACf,MAAOpO,EAAK,SACZ,SAAU,CAACM,EAAGb,IAASuO,EAAe1N,EAAGb,EAAMZ,CAAK,EACpD,SAAQ,GACR,KAAK,MAAA,CACT,EACAqB,EAAA,IAACkO,GAAK,MAAL,CACG,KAAK,YACL,MAAM,iBACN,YAAY,aACZ,eAAe,QACf,MAAOpO,EAAK,UACZ,SAAU,CAACM,EAAGb,IAASuO,EAAe1N,EAAGb,EAAMZ,CAAK,EACpD,SAAQ,GACR,KAAK,MAAA,CACT,EACAqB,EAAA,IAACsO,GAAA,CACG,KAAK,SAEL,MAAK,GACL,MAAM,KACN,MAAOxO,EAAK,OACZ,SAAU,CAACM,EAAGb,IAASuO,EAAe1N,EAAGb,EAAMZ,CAAK,EACpD,SAAQ,GACR,QAAS,CACL,CAAE,IAAK,IAAK,KAAM,IAAK,MAAO,GAAI,EAClC,CAAE,IAAK,IAAK,KAAM,IAAK,MAAO,GAAI,CACtC,CAAA,CACJ,EACAqB,EAAA,IAACkO,GAAK,MAAL,CACG,KAAK,MAEL,MAAK,GACL,MAAOpO,EAAK,IACZ,SAAU,CAACM,EAAGb,IAASuO,EAAe1N,EAAGb,EAAMZ,CAAK,EACpD,MAAM,OACN,SAAQ,GACR,KAAK,MAAA,CACT,CAAA,EACJ,EACAuB,EAAAA,KAACmO,GAAU,CAAA,OAAO,QACd,SAAA,CAAArO,EAAA,IAACsO,GAAA,CACG,KAAK,eAEL,MAAK,GACL,MAAM,KACN,SAAQ,GACR,MAAOxO,EAAK,aACZ,SAAU,CAACM,EAAGb,IAASuO,EAAe1N,EAAGb,EAAMZ,CAAK,EACpD,QAASoN,GACT,UAAS,GACT,OAAQ,CAAC1T,EAASkH,IACPlH,EAAQ,OAAQyH,GAAS,WAC5B,QACIA,EAAAA,GAAAA,YAAAA,EAAM,OAANA,YAAAA,EAAY,SAASP,OACrBO,EAAAA,GAAAA,YAAAA,EAAM,SAANA,YAAAA,EAAc,cAAc,WAAWP,OACvCO,EAAAA,GAAAA,YAAAA,EAAM,QAANA,YAAAA,EAAa,cAAc,WAAWP,GAAI,CAEjD,EAEL,UAAS,GACT,aAAa,KAAA,CACjB,EACAS,EAAA,IAACsO,GAAA,CACG,KAAK,SAEL,MAAK,GACL,MAAM,OACN,SAAQ,GACR,MAAOxO,EAAK,OACZ,SAAU,CAACM,EAAGb,IAASuO,EAAe1N,EAAGb,EAAMZ,CAAK,EACpD,QAAS,CAAC,CAAE,IAAK,EAAG,KAAM,KAAM,MAAO,KAAM,EAC7C,YAAY,IAAA,CAChB,EACAqB,EAAA,IAACkO,GAAK,MAAL,CACG,KAAK,WACL,MAAM,OACN,YAAY,OACZ,MAAOpO,EAAK,SACZ,SAAU,CAACM,EAAGb,IAASuO,EAAe1N,EAAGb,EAAMZ,CAAK,EACpD,SAAQ,GACR,KAAK,MAAA,CACT,EACAqB,EAAA,IAACkO,GAAK,MAAL,CAEG,MAAK,GACL,KAAK,WACL,MAAM,OACN,MAAOpO,EAAK,SACZ,SAAU,CAACM,EAAGb,IAASuO,EAAe1N,EAAGb,EAAMZ,CAAK,EACpD,SAAQ,GACR,KAAK,MAAA,CACT,EACAqB,EAAA,IAACkO,GAAK,MAAL,CACG,KAAK,SACL,MAAOpO,EAAK,OACZ,SAAU,CAACM,EAAGb,IAASuO,EAAe1N,EAAGb,EAAMZ,CAAK,EACpD,MAAM,OACN,YAAY,OACZ,KAAK,KAAA,CACT,CAAA,EACJ,CAAA,CAAA,CACJ,CACJ,CAAA,CAAA,CAAA,EAhJMA,CAiJV,CAEP,EACL,EACCqB,EAAA,IAAA8F,GAAA,CAAO,SAAQ,GAAC,KAAI,GAAC,QAASyH,EAC3B,SAACvN,EAAA,IAAAoO,GAAA,CAAK,KAAK,KAAM,CAAA,EACrB,CACJ,CAAA,CAAA,CAER,CAEAnB,GAAe,UAAY,CACvB,WAAYjK,EAAU,MAAM,WAC5B,cAAeA,EAAU,KAAK,WAC9B,OAAQA,EAAU,OAClB,SAAUA,EAAU,OACpB,UAAWA,EAAU,QAAQA,EAAU,MAAM,CACjD,ECpUA,SAASuL,IAAuB,CAE5B,KAAM,CAACC,EAAYC,CAAa,EAAIhP,EAAQ,SAAC,EAAK,EAE5CiE,EAAqBC,SAAO,IAAI,EAEhC+K,EAAoB7K,cAAY,MAAOM,GAAQ,CACjDsK,EAAc,EAAI,EAClB/K,EAAmB,QAAU,IAAI,gBACjC,GAAI,CACA,MAAMU,EAAW,MAAM,MAAM,GAAGC,CAAc,kBAAmB,CAC7D,OAAQ,OACR,QAAS,CACL,eAAgB,mBAChB,cAAe,UAAUC,EAAQ,CAAE,EACtC,EACD,KAAM,KAAK,UAAUH,CAAG,EACxB,OAAQT,EAAmB,QAAQ,MACnD,CAAa,EACD,GAAI,CAACU,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,wBAAwB,CACzD,CAED,OADa,MAAM6E,EAAS,MAE/B,OAAQqC,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,sBAAuBA,CAAK,EAExCA,EAClB,QAAkB,CACNgI,EAAc,EAAK,CACtB,CACJ,EAAE,CAAE,CAAA,EAECjK,EAAQX,EAAAA,YAAY,IAAM,CACxBH,EAAmB,SACnBA,EAAmB,QAAQ,OAElC,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,WAAA8K,EAAY,kBAAAE,EAAmB,MAAAlK,EAC5C,CAEA+J,GAAqB,UAAY,CAAE,u8BC/CnC,SAASI,IAAe,CACpB,KAAM,CAACC,EAAQC,CAAS,EAAIpP,EAAQ,SAAA,EAC9B,CAACqP,EAAQC,CAAS,EAAItP,EAAQ,SAAA,EAC9B,CAAC4L,EAAU2D,CAAW,EAAIvP,EAAQ,SAAA,EAClCwP,EAAWtL,EAAAA,SAEXuL,EAAYrL,cAAY,MAAO8F,GAAS,CAC1CsF,EAAS,QAAU,IAAI,gBACvBD,EAAY,EAAI,EAChB,GAAI,CACA,MAAM5K,EAAW,MAAM,MAAM,GAAG+K,EAAa,aAAc,CACvD,OAAQ,OACR,QAAS,CACL,eAAgB,mBAChB,cAAe,UAAU7K,EAAQ,CAAE,EACtC,EACD,KAAM,KAAK,UAAU,CAAE,KAAAqF,CAAI,CAAE,EAC7B,OAAQsF,EAAS,QAAQ,MACzC,CAAa,EACD,GAAI,CAAC7K,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,4CAA4C,CAC7E,CACD,MAAMA,EAAO,MAAM6E,EAAS,OAEtB,CAAE,KAAA2J,EAAM,OAAAe,CAAQ,EAAGvP,EACzBsP,EAAUd,CAAI,EACdgB,EAAUD,CAAM,CACnB,OAAQrI,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,4BAA6BA,CAAK,EAE9CA,EAClB,QAAkB,CACNuI,EAAY,EAAK,CACpB,CACJ,EAAE,CAAE,CAAA,EAECxK,EAAQX,EAAAA,YAAY,IAAM,CACxBoL,EAAS,SACTA,EAAS,QAAQ,OAExB,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,OAAAL,EAAQ,OAAAE,EAAQ,SAAAzD,EAAU,UAAA6D,EAAW,MAAA1K,CAAK,CACvD,CCjDA,SAAS4K,GAAY,CAAE,KAAAzF,GAAQ,CAC3B,KAAM,CAAE,SAAA0F,EAAU,OAAAT,EAAQ,UAAAM,EAAW,MAAA1K,CAAA,EAAUmK,KAC/C/O,OAAAA,EAAAA,UAAU,KACF+J,GACAuF,EAAUvF,CAAI,EAEX,IAAM,CACHnF,GAAA,GAEX,CAACmF,CAAI,CAAC,oBACC,SAAOiF,CAAA,CAAA,CACrB,CAEAQ,GAAY,UAAY,CACpB,KAAMpM,EAAU,OAAO,UAC3B,EAEA,MAAAsM,GAAezI,GAAM,KAAKuI,EAAW,ECZ/BG,GAAW5O,GAAQ,CACrB,MAAM6O,EAAU3O,EAAMF,EAAK,eAAgB,IAAI,IAAM,EAE9C,OAAA9D,GAAO2S,EAAS,OAAO,CAClC,EAEMC,GAAW9O,GAAQ,CACrB,MAAM6O,EAAU3O,EAAMF,EAAK,eAAgB,IAAI,IAAM,EAE9C,OAAA9D,GAAO2S,EAAS,OAAO,CAClC,EAEaE,GAAW,CAACzO,EAASC,IAAY,CAC1C,MAAMyO,EAAM9O,EAAMI,EAAS,eAAgB,IAAI,IAAM,EAC/C2O,EAAM/O,EAAMK,EAAS,eAAgB,IAAI,IAAM,EAC/CG,EAAejJ,GAAoBwX,EAAKD,CAAG,EAC1C,MAAA,GAAG,KAAK,MAAMtO,EAAe,EAAE,CAAC,IAAIA,EAAe,EAAE,GAChE,EAEA,SAASwO,GAAQ,CAAE,QAAAjN,EAAU,CAAC,EAAG,MAAAkN,GAAS,OACtC,OACK5P,EAAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,UACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,cAClB,SAAA,CAAA6P,GAAU9P,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,gBAAkB,SAAM6P,EAAA,QACxD,MAAI,CAAA,UAAW7P,EAAO,gBACnB,SAAAD,EAAA,IAAC,OAAI,IAAK,GAAGyF,EAAc,wBAAuBH,EAAA1C,EAAQ,UAAR,YAAA0C,EAAiB,aAAa,OAAQ,IAAI,EAAG,CAAA,EACnG,QACC,MAAI,CAAA,UAAWrF,EAAO,QAAU,WAAQ,QAAQ,EAChDC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,cAClB,SAAA,CAAQ2C,EAAA,aACRA,EAAQ,WAAa,IAAIA,EAAQ,mBAAmB,GAAA,EACzD,CAAA,EACJ,EACC1C,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,iBACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,eACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,SACnB,SAAA,CAAAD,EAAAA,IAAC,OAAI,UAAWC,EAAO,KAAO,SAAQsP,GAAA3M,EAAQ,OAAO,EAAE,EACvD5C,EAAAA,IAAC,OAAI,UAAWC,EAAO,KAAO,SAAQwP,GAAA7M,EAAQ,OAAO,EAAE,CAAA,EAC3D,EACA5C,EAAAA,IAAC,MAAI,CAAA,UAAWC,EAAO,SAAW,YAAS2C,EAAQ,QAASA,EAAQ,OAAO,CAAE,CAAA,EAC5E1C,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,SACnB,SAAA,CAAAD,EAAAA,IAAC,OAAI,UAAWC,EAAO,KAAO,SAAQsP,GAAA3M,EAAQ,OAAO,EAAE,EACvD5C,EAAAA,IAAC,OAAI,UAAWC,EAAO,KAAO,SAAQwP,GAAA7M,EAAQ,OAAO,EAAE,CAAA,EAC3D,CAAA,EACJ,EACC5C,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,cAAgB,CAAA,EACtCC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,gBACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,YACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAK,WAAQ,UAAW,CAAA,EACxBA,EAAAA,IAAAoP,GAAA,CAAY,KAAMxM,EAAQ,UAAY,CAAA,CAAA,EAE3C,EACC1C,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,MACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,MAClB,SAAA,CAAA8P,GAAenN,EAAQ,UAAU,EAAE,IAAEA,EAAQ,KAAA,EAClD,EACC,CAAC,CAACA,EAAQ,sBACN,MAAI,CAAA,UAAW3C,EAAO,QAClB,SAAA,CAAQ2C,EAAA,cAAc,KACtBA,EAAQ,eAAiB,IAAIA,EAAQ,aAAa,IAAA,EACvD,CAAA,EAER,EAEC1C,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,YACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAK,WAAQ,UAAW,CAAA,EACxBA,EAAAA,IAAAoP,GAAA,CAAY,KAAMxM,EAAQ,UAAY,CAAA,CAAA,EAE3C,CAAA,EACJ,CAAA,EACJ,CACJ,CAAA,CAAA,CAER,CAEAiN,GAAQ,UAAY,CAChB,QAAS7M,EAAU,OAAO,WAC1B,MAAOA,EAAU,MACrB,EChFA,SAASgN,GAAe,CAAE,aAAAhM,EAAe,GAAI,YAAAC,EAAc,IAAM,CACvD,MAAAxB,GAAcwB,GAAA,YAAAA,EAAa,QAAS,EAEpCgM,EAAW,CAAC,CAAE,SAAAjP,EAAU,MAAA8O,KAGjB9P,EAAA,IAAA+C,EAAA,SAAA,CAAA,SAAA/B,EAAS,IAAI,CAAC4B,EAASjE,IAGXuB,EAAA,KAAA6C,WAAA,CAAA,SAAA,CAAApE,EAAQ,GACLuB,EAAAA,KAAC,MAAyB,CAAA,UAAWD,GAAO,eACxC,SAAA,CAAAD,EAAA,IAACkQ,GAAoB,EAAA,EAAE,IAAClQ,EAAAA,IAAC,QAAK,SAAE,IAAA,CAAA,EAChCA,EAAAA,IAAC,QAAK,UAAWC,GAAO,WAAa,SAAa+D,EAAArF,EAAQ,CAAC,EAAE,UAAW,CAAA,EACvEqB,EAAA,IAAA,OAAA,CAAK,UAAWC,GAAO,WACpB,SAAAD,EAAA,IAACoP,GAAY,CAAA,KAAMpL,EAAarF,EAAQ,CAAC,EAAE,UAAY,CAAA,EAC3D,EACCqB,EAAA,IAAA,OAAA,CAAK,UAAWC,GAAO,SACnB,SAASyP,GAAA1L,EAAarF,EAAQ,CAAC,EAAE,QAASqF,EAAarF,CAAK,EAAE,OAAO,EAC1E,CAAA,CAAA,EARM,OAASA,CASnB,EAEJqB,MAAC6P,IAA4B,QAAAjN,EAAkB,MAAOjE,GAAS,GAAKmR,CAAA,EAAtD,MAAQnR,CAAqD,CAC/E,CAAA,CAAA,CAEP,CACL,CAAA,EAIR,OACKuB,EAAAA,KAAA,MAAA,CAAI,UAAWD,GAAO,UACnB,SAAA,CAACD,EAAA,IAAA,MAAA,CAAI,UAAWC,GAAO,wBACnB,SAAAD,EAAA,IAACiQ,EAAS,CAAA,SAAUjM,EAAc,MAAOvB,GAAe,IAAM,CAAA,EAClE,EACCA,GACGzC,EAAA,IAAC,MAAI,CAAA,UAAWC,GAAO,uBACnB,SAACD,EAAAA,IAAAiQ,EAAA,CAAS,SAAUhM,EAAa,MAAOxB,GAAe,IAAM,CAAA,EACjE,CAER,CAAA,CAAA,CAER,CAEAuN,GAAe,UAAY,CACvB,aAAchN,EAAU,MAAM,WAC9B,YAAaA,EAAU,KAC3B,EAEA,MAAAmN,GAAetJ,GAAM,KAAKmJ,EAAc,ECzClC,CAAE,MAAA5N,GAAO,KAAAnD,EAAS,EAAAC,GAExB,SAASkR,GAAepF,EAAO,CAC3B,MAAMqF,EAAWC,KACXvL,EAAWC,KACXuL,EAAYC,KACZ,CAAE,KAAAjR,EAAM,QAAAuE,CAAA,EAAYuM,EAAS,OAAS,CAAA,EACtC,CAAE,QAAA9N,EAAS,UAAAkO,EAAW,SAAApD,EAAW,EAAG,WAAAqD,CAAW,EAAInR,GAAQ,GACjE,GAAI,CAACgD,GAAWA,EAAQ,MAAQ,GAC5B,OACKrC,EAAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,UACnB,SAAA,CAAAD,EAAA,IAAC2Q,GAAQ,EAAA,QACR,KAAG,EAAA,EACJ3Q,EAAAA,IAAC,OAAI,SAAc,gBAAA,CAAA,CACvB,CAAA,CAAA,EAGR,KAAM,CAACkN,EAAYC,CAAa,EAAI1N,EAAA,SAAS,CAAE,CAAA,EACzC2N,EAASwD,EAAAA,QACT,CAAE,WAAApC,EAAY,kBAAAE,EAAmB,MAAAlK,GAAU+J,GAAqB,EAChE,CAAE,QAAAtJ,CAAA,EAAYC,GAAI,OAAO,EACzB,CAAC2L,EAASC,CAAU,EAAIrR,WAAS,EAAK,EAE5CG,EAAAA,UAAU,KACMmR,KACL,IAAM,CACHvM,GAAA,GAEX,CAAE,CAAA,EAEL5E,EAAAA,UAAU,IAAM,CACZ,GAAIkE,EAAS,CACH,KAAA,CAAE,SAAAkN,EAAU,SAAAC,CAAa,EAAAnN,EACzBoJ,EAAa,CAAA,EACnB,QAAShJ,EAAI,EAAGA,EAAI8M,EAAU9M,IAC1BgJ,EAAW,KAAK,CAAE,QAASF,EAAQ,KAAO,CAAA,EAE9C,QAAS9I,EAAI,EAAGA,EAAI+M,EAAU/M,IAC1BgJ,EAAW,KAAK,CAAE,QAASF,EAAQ,KAAO,CAAA,EAE9CG,EAAcD,CAAU,CAC5B,CAAA,EACD,CAACpJ,CAAO,CAAC,EAEZ,MAAMoN,EAAQ,IAAM,CAChB,IAAIA,EAAQ,EACZ,QAASxD,KAAKR,EACNQ,EAAE,SAAWV,EAAQ,MACrBkE,GAAS,OAAO3O,EAAQ,UAAU,EAElC2O,GAAS,OAAO3O,EAAQ,UAAU,EAG1C,OAAO4O,GAAiBD,CAAK,CAAA,EAG3BzF,EAAe,IAAM,CAKnB,GAHkB,SAAS,eAAe2B,CAAM,EAClC,kBAAoB,IAElC,QAAQ,MAAM,GAAK,GAAM,OAC7B,MAAMjJ,EAAM,CACR,cAAe5B,EAAQ,cACvB,UAAAkO,EACA,WAAAvD,EACA,QAAA3K,EACA,QAAS,CACL,KAAMgO,EAAU,YAChB,MAAOA,EAAU,MACjB,OAAQA,EAAU,aACtB,CAAA,EAEJ,QAAQ,IAAIpM,CAAG,EACfuK,EAAkBvK,CAAG,EAChB,KAAM5E,GAAS,CACZ,MAAM6R,EAAQ7R,EAAK,MACnB0F,GAAA,MAAAA,EAAS,QAAQmM,GACjBN,EAAW,EAAI,CAAA,CAClB,EACA,MAAOvM,GAAQ,CACZ,QAAQ,MAAMA,CAAG,EACRU,GAAA,MAAAA,EAAA,MAAMV,EAAI,QAAO,CAC7B,CAAA,EAGH8M,EAAa,IAAM,CACrBtM,EAAS,CAAE,SAAU,mCAAA,EAAuC,CAAE,QAAS,GAAM,CAAA,EAG3EuM,EAAS,IAAM,CACjBvM,EAAS,CAAE,SAAU,4BAAA,EAAgC,CAAE,QAAS,GAAM,CAAA,EAGpEwM,EAAU,IAERvR,EAAA,IAACwR,GAAA,CACG,OAAO,UACP,MAAO,gBACP,SAAU,sBACV,MAAO,CACHxR,EAAAA,IAAC8F,GAAO,KAAK,UAAuB,KAAK,QAAQ,QAASuL,EAAY,SAAA,MAAA,EAA3C,QAE3B,QACCvL,EAAkB,CAAA,KAAK,QAAQ,QAASwL,EAAQ,eAArC,MAEZ,CACJ,CAAA,CAAA,EAKNG,EAAS,CAAC,CAAE,MAAAvO,EAAQ,MAAS,CAC/B,KAAM,CAACZ,EAAMoP,CAAO,EAAIjS,WAAS,EAAK,EAChC0D,EAAc,CAAC,CAAE,MAAAC,GAAO,QAAAC,EAC1B,IAAAnD,EAAA,KAACoD,EAAM,CAAA,UAAU,WAAW,KAAK,QAC7B,SAAA,CAACtD,EAAA,IAAAoC,GAAA,CAAM,MAAO,EAAI,SAAMgB,GAAA,QACvBnE,GAAK,CAAA,MAAO,CAAE,WAAY,YAAe,SAAQoE,GAAA,CACtD,CAAA,CAAA,EAEJ,OAEQnD,EAAA,KAAA6C,WAAA,CAAA,SAAA,CAAA/C,MAAC,KAAE,QAAS,IAAM0R,EAAQ,EAAI,EAAG,SAAI,OAAA,EACrC1R,EAAAA,IAAC6C,GAAM,CAAA,MAAM,OAAO,KAAAP,EAAY,SAAU,IAAMoP,EAAQ,EAAK,EAAG,OAAQ,KAAM,MAAO,IAAK,SAAQ,GAC9F,SAACxR,EAAAA,KAAAoD,EAAA,CAAM,UAAU,WAAW,KAAK,SAAS,MAAO,CAAE,MAAO,MAAA,EACtD,SAAA,CAAAtD,EAAA,IAACmD,EAAY,CAAA,MAAM,KAAK,QAASD,EAAM,OAAQ,QAC9CC,EAAY,CAAA,MAAM,KAAK,QAASD,EAAM,OAAQ,QAC9CC,EAAY,CAAA,MAAM,KAAK,QAASD,EAAM,SAAU,QAChDC,EAAY,CAAA,MAAM,KAAK,QAASD,EAAM,MAAO,CAAA,CAAA,CAClD,CACJ,CAAA,CACJ,CAAA,CAAA,CAAA,EAIFyO,EAAU,CAAC,CAAE,MAAAzO,EAAQ,MAAS,CAChC,KAAM,CAACZ,EAAMoP,CAAO,EAAIjS,WAAS,EAAK,EACtC,OAEQS,EAAA,KAAA6C,WAAA,CAAA,SAAA,CAAA/C,MAAC,KAAE,QAAS,IAAM0R,EAAQ,EAAI,EAAG,SAAI,OAAA,QACpC7O,GAAM,CAAA,MAAM,OAAO,KAAAP,EAAY,SAAU,IAAMoP,EAAQ,EAAK,EAAG,OAAQ,KAAM,MAAO,IAAK,SAAQ,GAC9F,SAAC1R,MAAAsD,EAAA,CAAM,UAAU,WAAW,KAAK,SAAS,MAAO,CAAE,MAAO,MACtD,EAAA,SAAAtD,EAAAA,IAACf,GAAK,CAAA,MAAO,CAAE,WAAY,YAAe,SAAMiE,EAAA,OAAA,CAAQ,CAC5D,CAAA,EACJ,CACJ,CAAA,CAAA,CAAA,EAIR,OAAI2N,QACQU,EAAQ,CAAA,CAAA,EAMfrR,EAAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,UACnB,SAAA,CAAAD,EAAA,IAAC2Q,GAAQ,EAAA,EACRzQ,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,yBACnB,SAAA,CAAAD,EAAA,IAAC,MAAI,CAAA,UAAWC,EAAO,MAAO,SAAI,OAAA,EACjCC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,gBACnB,SAAA,CAACD,EAAAA,IAAAyR,EAAA,CAAO,MAAOlP,EAAQ,IAAM,CAAA,EAC5BvC,EAAAA,IAAA,OAAA,CAAK,UAAWC,EAAO,OAAS,CAAA,EAChCD,EAAAA,IAAA2R,EAAA,CAAQ,MAAOpP,EAAQ,IAAM,CAAA,CAAA,EAClC,CAAA,EACJ,QACCyN,GAAe,CAAA,aAAczN,EAAQ,aAAc,YAAaA,EAAQ,YAAa,SAErF,KAAG,CAAA,SAAA,CAAA,QAAM8K,EAAW,GAAOnN,EAAAA,KAAA6C,EAAA,SAAA,CAAA,SAAA,CAAA,OAAKsK,EAAS,OAAA,EAAK,EAAI,GAAA,EAAC,EACnDrN,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,qBACnB,SAAAD,EAAA,IAACiN,GAAA,CACG,WAAAC,EACA,cAAAC,EACA,OAAAC,EACA,SAAAC,EACA,UAAW,EAACvJ,GAAA,YAAAA,EAAS,UAAW,GAAKkJ,EAAQ,OAAOlJ,GAAA,YAAAA,EAAS,UAAW,GAAKkJ,EAAQ,KAAK,CAAA,CAAA,EAElG,EAEAhN,EAAAA,IAAC,MAAG,SAAE,IAAA,CAAA,EACLE,EAAA,KAAA4C,GAAA,CAAM,OAAM,GAAC,WAAU,GACpB,SAAA,CAAC9C,EAAA,IAAA4R,GAAA,CACG,gBAACC,GACG,CAAA,SAAA,CAAA7R,EAAAA,IAAC8R,IAAgB,SAAI,MAAA,CAAA,EACrB9R,EAAAA,IAAC8R,IAAgB,SAAE,IAAA,CAAA,EACnB9R,EAAAA,IAAC8R,IAAgB,SAAE,IAAA,CAAA,EACnB9R,EAAAA,IAAC8R,IAAgB,SAAM,QAAA,CAAA,EACvB9R,EAAAA,IAAC8R,IAAgB,SAAE,IAAA,CAAA,CAAA,CAAA,CACvB,CACJ,CAAA,SACCC,GACG,CAAA,SAAA,CAAA7R,OAAC2R,GACG,CAAA,SAAA,CAAA7R,EAAAA,IAACgS,IAAU,SAAE,IAAA,CAAA,SACZA,GACI,CAAA,SAAA,CAAAzP,EAAQ,UAAY,MAAM,IAAE4O,GAAiB5O,EAAQ,UAAU,CAAA,EACpE,SACCyP,GACI,CAAA,SAAA,CAAAzP,EAAQ,UAAY,MAAM,IAAE4O,GAAiB5O,EAAQ,QAAQ,CAAA,EAClE,SACCyP,GACI,CAAA,SAAA,CAAAzP,EAAQ,UAAY,MAAM,IAAE4O,GAAiB5O,EAAQ,UAAU,CAAA,EACpE,EACAvC,EAAAA,IAACgS,GAAW,CAAA,SAAA9E,GAAA,YAAAA,EAAY,OAAQQ,GAAMA,EAAE,SAAWV,EAAQ,OAAO,MAAO,CAAA,CAAA,EAC7E,GACClJ,GAAA,YAAAA,EAAS,UAAW,GACjB5D,EAAA,KAAC2R,GACG,CAAA,SAAA,CAAA7R,EAAAA,IAACgS,IAAU,SAAE,IAAA,CAAA,SACZA,GACI,CAAA,SAAA,CAAAzP,EAAQ,UAAY,MAAM,IAAE4O,GAAiB5O,EAAQ,UAAU,CAAA,EACpE,SACCyP,GACI,CAAA,SAAA,CAAAzP,EAAQ,UAAY,MAAM,IAAE4O,GAAiB5O,EAAQ,QAAQ,CAAA,EAClE,SACCyP,GACI,CAAA,SAAA,CAAAzP,EAAQ,UAAY,MAAM,IAAE4O,GAAiB5O,EAAQ,UAAU,CAAA,EACpE,EACAvC,EAAAA,IAACgS,GAAW,CAAA,SAAA9E,GAAA,YAAAA,EAAY,OAAQQ,GAAMA,EAAE,SAAWV,EAAQ,OAAO,MAAO,CAAA,CAAA,EAC7E,CAAA,EAER,CAAA,EACJ,EAEAhN,EAAAA,IAAC,OAAI,UAAWC,EAAO,iBACnB,SAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,mBACnB,SAAA,CAACC,EAAA,KAAA,OAAA,CAAK,UAAWD,EAAO,gBACpB,SAAA,CAAAD,EAAA,IAAC,MAAI,CAAA,UAAWC,EAAO,MAAO,SAAG,MAAA,QAChC,OAAK,CAAA,UAAWA,EAAO,SAAW,SAAAsC,EAAQ,UAAY,MAAM,QAC5D,OAAK,CAAA,UAAWtC,EAAO,MAAQ,aAAQ,CAAA,EAC5C,EACAD,EAAAA,IAAC8F,GAAO,KAAK,UAAU,QAAS2F,EAAc,KAAM2B,EAAQ,SAE5D,IAAA,CAAA,CAAA,CAAA,CACJ,CACJ,CAAA,EACApN,EAAA,IAACiS,GAAO,CAAA,OAAQzD,EAAY,KAAI,GAAC,SAAQ,GACrC,SAAAxO,EAAA,IAACkS,GAAO,CAAA,SAAA,QAAM,CAAA,EAClB,CACJ,CAAA,CAAA,CAER,CCvPA,SAASC,GAAgBnH,EAAO,CAC5B,KAAM,CAACK,EAAU2D,CAAW,EAAIvP,EAAQ,SAAC,EAAK,EACxC,CAAC2S,EAAQC,CAAS,EAAI5S,EAAQ,SAAC,CAAE,CAAA,EAEjC,CAACyR,EAAOoB,CAAQ,EAAI7S,EAAQ,SAAC,CAAC,EAC9BiE,EAAqBC,SAAO,IAAI,EAEhC4O,EAAc1O,EAAW,YAAC,MAAO,CAAE,KAAA2O,EAAO,EAAG,SAAAC,EAAW,EAAI,EAAG,KAAO,CACxE,MAAMC,GAAUF,EAAO,GAAKC,EACtBE,EAAQF,EACdzD,EAAY,EAAI,EAChBtL,EAAmB,QAAU,IAAI,gBACjC,MAAMkP,EAAc,CAChB,MAAOD,EACP,OAAQD,CACpB,EACcG,EAAc,IAAI,gBAAgBD,CAAW,EAAE,SAAQ,EAC7D,GAAI,CACA,MAAMxO,EAAW,MAAM,MAAM,GAAGC,CAAc,mBAAmBwO,CAAW,GAAI,CAC5E,QAAS,CAAE,cAAe,UAAUvO,EAAQ,CAAE,EAAI,EAClD,OAAQZ,EAAmB,QAAQ,MACnD,CAAa,EACD,GAAI,CAACU,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,gDAAgD,CACjF,CACD,MAAMuT,EAAe,MAAM1O,EAAS,OAC9B,CAAE,OAAAgO,EAAQ,MAAAlB,CAAO,EAAG4B,EAC1B,OAAIV,GAEAC,EAAUD,CAAM,EAEhBlB,GACAoB,EAASpB,CAAK,EAEX4B,CACV,OAAQvO,EAAK,CACV,MAAIA,EAAI,OAAS,cACb,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,gCAAiCA,CAAG,EAEhDA,EAClB,QAAkB,CACNyK,EAAY,EAAK,CACpB,CACJ,EAAE,CAAE,CAAA,EAGLpP,EAAAA,UAAU,IAAM,CACZ2S,GACR,EAAO,CAACA,CAAW,CAAC,EAEhB,MAAM/N,EAAQX,EAAAA,YAAY,IAAM,CACxBH,EAAmB,SACnBA,EAAmB,QAAQ,OAElC,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,OAAA0O,EAAQ,MAAAlB,EAAO,SAAA7F,EAAU,QAASkH,EAAa,MAAA/N,EAC5D,CAEA2N,GAAgB,UAAY,CAAE,ECjE9B,SAASY,GAAsB/H,EAAO,CAClC,KAAM,CAACgI,EAAYC,CAAa,EAAIxT,EAAQ,SAAC,EAAK,EAC5CiE,EAAqBC,SAAO,IAAI,EAEhCuP,EAAgBrP,EAAW,YAC7B,MAAOsP,GAAY,CAEf,GADA,QAAQ,IAAIA,CAAO,EACf,CAACA,EACD,MAAM,IAAI,MAAM,0BAA0B,EAE9CzP,EAAmB,QAAU,IAAI,gBACjCuP,EAAc,EAAI,EAClB,GAAI,CACA,MAAM7O,EAAW,MAAM,MAAM,GAAGC,CAAc,2BAA2B8O,CAAO,GAAI,CAChF,OAAQ,OACR,QAAS,CAAE,cAAe,UAAU7O,EAAQ,CAAE,EAAI,EAClD,OAAQZ,EAAmB,QAAQ,MACvD,CAAiB,EACD,GAAI,CAACU,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,iDAAiD,CAClF,CACD,MAAMuT,EAAe,MAAM1O,EAAS,OACpC,eAAQ,IAAI,eAAgB0O,CAAY,EACjCA,CACV,OAAQrM,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,iCAAkCA,CAAK,EAEnDA,EACtB,QAAsB,CACNwM,EAAc,EAAK,CACtB,CACJ,EACD,CAAC5O,CAAc,CACvB,EAEUG,EAAQX,EAAAA,YAAY,IAAM,CACxBH,EAAmB,SACnBA,EAAmB,QAAQ,OAElC,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,cAAAwP,EAAe,WAAAF,EAAY,MAAAxO,EACxC,CAEAuO,GAAsB,UAAY,CAAE,EChDpC,SAASK,GAAQ,CAAE,QAAAD,GAAW,CAC1B,KAAM,CAAE,cAAAD,EAAe,WAAAF,CAAW,EAAID,GAAsB,EACtD,CAAE,QAAA9N,CAAA,EAAYC,GAAI,OAAO,EAE/B,GAAI,CAACiO,EACM,OAAA,KAEL,MAAAE,EAAaF,GAAY,CACnB,QAAA,IAAI,qBAAqBA,CAAO,EAAE,EAC1CD,EAAcC,CAAO,EAChB,KAAM5T,GAAS,CACZ,MAAM6R,EAAQ7R,EAAK,MACf6R,IACAnM,GAAA,MAAAA,EAAS,QAAQmM,GACrB,CACH,EACA,MAAO3K,GAAU,CACN,QAAA,MAAM,iCAAkCA,CAAK,EAC5CxB,GAAA,MAAAA,EAAA,MAAMwB,EAAM,QAAO,CAC/B,CAAA,EAIL,OAAAzG,EAAA,IAAC8F,EAAA,CACG,KAAK,OACL,QAASkN,EACT,MAAO,CAAE,QAAS,CAAE,EACpB,QAAS,IAAMK,EAAUF,CAAO,EAChC,aAAY,QAAQA,CAAO,GAC9B,SAAA,IAAA,CAAA,CAIT,CAEAC,GAAQ,UAAY,CAChB,QAASpQ,EAAU,OAAO,UAC9B,ECjCA,KAAM,CAAE,KAAA/D,EAAS,EAAAC,GAEXoU,GAAoB,IAAM,CAC5B,KAAM,CAACC,EAAcC,CAAe,EAAI/T,EAAA,SAAS,CAAE,CAAA,EAC7C,CAACgU,EAAaC,CAAc,EAAIjU,WAAS,CAAC,EAC1C,CAACgT,EAAUkB,CAAW,EAAIlU,WAAS,EAAE,EACrC,CAAE,OAAA2S,EAAQ,MAAAlB,EAAO,SAAA7F,EAAU,QAAAuI,CAAA,EAAYzB,KACvCpN,EAAWC,KAEX6O,EAAYhQ,EAAAA,YAAY,IAAM,CAChC+P,EAAQ,CAAE,KAAMH,EAAa,SAAAhB,CAAoB,CAAA,CAClD,EAAA,CAACmB,EAASH,EAAahB,CAAQ,CAAC,EAEnC7S,EAAAA,UAAU,IAAM,CACFiU,GAAA,EACX,CAACA,CAAS,CAAC,EAEd,MAAMlO,EAAa,CAAC,CAAE,MAAAmK,EAAO,QAAAzM,CAAA,IACxBnD,EAAAA,KAAAoD,EAAA,CAAM,UAAU,aAAa,KAAM,EAAG,MAAO,CAAE,MAAO,MAClD,EAAA,SAAA,CAAAwM,GAAU9P,EAAA,IAAAf,GAAA,CAAK,KAAK,YAAa,SAAM6Q,EAAA,EACxC9P,EAAAA,IAACf,IAAM,SAAQoE,CAAA,CAAA,CACnB,CAAA,CAAA,EAGE3C,EAAaoT,GAAe,CAC9B,GAAI,CAACA,EAAmB,MAAA,IACxB,MAAMlT,EAAaC,EAAMiT,EAAY,eAAgB,IAAI,IAAM,EAC3D,OAACC,GAAQnT,CAAU,EAChB/D,GAAO+D,EAAY,mBAAoB,CAAE,OAAQ/B,GAAM,EAD7B,GAC6B,EAG5D6D,EAAU,CACZ,CACI,MAAO,KACP,UAAW,UACX,IAAK,SACT,EACA,CACI,MAAO,OACP,UAAW,YACX,IAAK,YACL,OAASsR,GACEA,EAAOnX,GAAO,IAAI,KAAKmX,CAAI,EAAG,aAAc,CAAE,OAAQnV,EAAM,CAAA,EAAI,GAE/E,EAMA,CACI,MAAO,KACP,UAAW,UACX,IAAK,SACT,EACA,CACI,MAAO,KACP,IAAK,aACL,OAAQ,CAACoV,EAAGC,IAAW,CACb,MAAAzR,EAAc,EAAAyR,EAAO,cAEvB,OAAAhU,OAACoD,EAAM,CAAA,UAAU,WAAW,KAAM,GAAI,MAAO,CAAE,MAAO,MAAA,EAClD,SAAA,CAAAtD,MAAC2F,GAAW,MAAOlD,EAAc,KAAO,KAAM,QAASyR,EAAO,eAAgB,EAC7EA,EAAO,eACJlU,MAAC2F,EAAW,CAAA,MAAOlD,EAAc,KAAO,KAAM,QAASyR,EAAO,aAAe,CAAA,CAErF,CAAA,CAAA,CAER,CACJ,EAEA,CACI,MAAO,OACP,IAAK,UACL,OAAQ,CAACD,EAAGC,IAEJhU,OAACoD,EAAM,CAAA,UAAU,WAAW,KAAM,GAAI,MAAO,CAAE,MAAO,MAAA,EAClD,SAAA,CAAAtD,EAAA,IAAC2F,EAAW,CAAA,QAASjF,EAAUwT,EAAO,WAAW,EAAG,EACnDA,EAAO,YAAelU,EAAA,IAAA2F,EAAA,CAAW,QAASjF,EAAUwT,EAAO,UAAU,EAAG,CAC7E,CAAA,CAAA,CAGZ,EACA,CACI,MAAO,KACP,IAAK,aACL,OAAQ,CAACD,EAAGC,IAEJhU,OAACoD,EAAM,CAAA,UAAU,WAAW,KAAM,GAAI,MAAO,CAAE,MAAO,MAAA,EAClD,SAAA,CAACtD,EAAAA,IAAA2F,EAAA,CAAW,QAASuO,EAAO,cAAgB,CAAA,EAC3CA,EAAO,eAAiBlU,MAAC2F,EAAW,CAAA,QAASuO,EAAO,cAAe,CACxE,CAAA,CAAA,CAGZ,EACA,CACI,MAAO,OACP,IAAK,UACL,OAAQ,CAACD,EAAGC,IAEJhU,OAACoD,EAAM,CAAA,UAAU,WAAW,KAAM,GAAI,MAAO,CAAE,MAAO,MAAA,EAClD,SAAA,CAAAtD,EAAA,IAAC2F,EAAW,CAAA,QAASjF,EAAUwT,EAAO,WAAW,EAAG,EACnDA,EAAO,YAAelU,EAAA,IAAA2F,EAAA,CAAW,QAASjF,EAAUwT,EAAO,UAAU,EAAG,CAC7E,CAAA,CAAA,CAGZ,EAWA,CACI,MAAO,KACP,UAAW,aACX,IAAK,aACL,OAAQ,CAAClO,EAAOkO,IAAYlO,EAAQ,GAAGkO,EAAO,UAAY,KAAK,IAAIlO,CAAK,IAAM,GAClF,EACA,CACI,MAAO,KACP,UAAW,YACX,IAAK,WACT,EACA,CACI,MAAO,KACP,UAAW,oBACX,IAAK,mBACT,EAEA,CACI,MAAO,KACP,IAAK,SACL,OAAQ,CAACiO,EAAGC,IAAW,CACnB,MAAMzT,EAAMyT,EAAO,QACA,OAAAX,EAAa9S,CAAG,EAE/BP,EAAA,KAACoD,EAAM,CAAA,KAAK,QACR,SAAA,CAACtD,EAAAA,IAAAoT,GAAA,CAAQ,QAASc,EAAO,OAAS,CAAA,EAClClU,EAAA,IAAC8F,EAAA,CACG,KAAK,OACL,KAAK,QACL,MAAO,CAAE,QAAS,CAAE,EACpB,QAAS,IAAMf,EAASmP,EAAO,OAAO,EACzC,SAAA,IAAA,CAED,CAuBJ,CAAA,CAAA,CAER,CACJ,CAAA,EAGEC,EAAqBC,GAAe,CACtCV,EAAeU,EAAW,OAAO,EACjCT,EAAYS,EAAW,QAAQ,CAAA,EAc/B,OAAApU,EAAA,IAAC8C,GAAA,CACG,SAAQ,GACR,QAAAJ,EACA,WAAY0P,EACZ,QAAS/G,EACT,WAAY,CACR,QAASoI,EACT,SAAAhB,EACA,MAAAvB,EACA,gBAAiB,GACjB,gBAAiB,GACjB,UAAYA,GAAU,KAAKA,CAAK,KAChC,gBAAiB,CAAC,KAAM,KAAM,IAAI,CACtC,EACA,SAAUiD,EACV,OAAO,SAAA,CAAA,CAcnB,ECpOA,SAASE,IAAgB,CACrB,cACK,MACG,CAAA,SAAA,CAAArU,EAAAA,IAAC,MAAG,SAAK,OAAA,CAAA,QACRsU,GAAM,CAAA,QAASC,GAAc,KAAK,UAAU,SAAQ,GAAC,QACrD,KAAG,EAAA,QACHjB,GAAkB,EAAA,CACvB,CAAA,CAAA,CAER,+uCCdakB,GAAa,CACtB,QAAS,IACT,SAAU,GACd,EAEaC,GAAqB,CAC9B,CACI,SAAU,KACV,gBAAiB,SACjB,SAAU,MACV,eAAgB,WAChB,YAAa,MACb,YAAa,OACb,YAAa,KACb,MAAO,KACV,EACD,CACI,SAAU,MACV,gBAAiB,YACjB,SAAU,MACV,eAAgB,QAChB,YAAa,MACb,YAAa,OACb,YAAa,KACb,MAAO,KACV,EACD,CACI,SAAU,MACV,gBAAiB,YACjB,SAAU,MACV,eAAgB,QAChB,YAAa,MACb,YAAa,OACb,YAAa,KACb,MAAO,KACV,EACD,CACI,SAAU,OACV,gBAAiB,WACjB,SAAU,MACV,eAAgB,SAChB,YAAa,MACb,YAAa,OACb,YAAa,KACb,MAAO,KACV,EACD,CACI,SAAU,OACV,gBAAiB,aACjB,SAAU,MACV,eAAgB,SAChB,YAAa,MACb,YAAa,OACb,YAAa,KACb,MAAO,KACV,EACD,CACI,SAAU,MACV,gBAAiB,SACjB,SAAU,MACV,eAAgB,QAChB,YAAa,MACb,YAAa,OACb,YAAa,KACb,MAAO,KACV,EACD,CACI,SAAU,OACV,gBAAiB,WACjB,SAAU,MACV,eAAgB,SAChB,YAAa,MACb,YAAa,OACb,YAAa,KACb,MAAO,KACV,EACD,CACI,SAAU,KACV,gBAAiB,QACjB,SAAU,MACV,eAAgB,OAChB,YAAa,MACb,YAAa,OACb,YAAa,KACb,MAAO,KACV,CACL,EAEa1L,GAAW,CACpB,CACI,MAAO,KACP,MAAO,KACP,KAAM,SACN,YAAa,IAChB,EACD,CACI,MAAO,KACP,MAAO,KACP,KAAM,mBACN,YAAa,IAChB,EACD,CACI,MAAO,KACP,MAAO,KACP,KAAM,UACN,YAAa,IAChB,EACD,CACI,MAAO,KACP,MAAO,KACP,KAAM,kBACN,YAAa,IAChB,CACL,iYC3GA,SAAS2L,IAAsB,CAC3B,OACKxU,EAAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,UACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,oBACnB,eAAC,MAAI,CAAA,IAAKoK,GAAW,CACzB,CAAA,EACArK,EAAAA,IAAC,OAAI,UAAWC,EAAO,kBACnB,SAACD,EAAA,IAAA,MAAA,CAAI,IAAKwK,EAAA,CAAQ,CACtB,CAAA,EACAxK,EAAAA,IAAC,OAAI,UAAWC,EAAO,kBACnB,SAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,QACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,OACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,MACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,eACnB,eAAC,MAAI,CAAA,IAAKqK,GAAW,CACzB,CAAA,EAAM,SAAA,EAEV,EACCpK,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,MACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,eACnB,eAAC,MAAI,CAAA,IAAKqK,GAAW,CACzB,CAAA,EAAM,QAAA,EAEV,EACCpK,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,MACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,eACnB,eAAC,MAAI,CAAA,IAAKqK,GAAW,CACzB,CAAA,EAAM,QAAA,EAEV,CAAA,EACJ,EACCpK,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,OACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,MACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,eACnB,eAAC,MAAI,CAAA,IAAKqK,GAAW,CACzB,CAAA,EAAM,QAAA,EAEV,EACCpK,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,MACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,eACnB,eAAC,MAAI,CAAA,IAAKqK,GAAW,CACzB,CAAA,EAAM,QAAA,EAEV,CAAA,EACJ,CAAA,CAAA,CACJ,CACJ,CAAA,CACJ,CAAA,CAAA,CAER,kXCvDeqK,GAAA,qCCAAC,GAAA,qCCAAC,GAAA,qCCAAC,GAAA,qCCQf,SAASC,IAAgB,CACrB,OACK7U,EAAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,UACnB,SAAA,CAAAD,EAAAA,IAAC,OAAI,UAAWC,EAAO,iBACnB,SAAAD,MAAC0U,IAAoB,CAAA,EACzB,EAECxU,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,mBACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,kBACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,cACnB,eAAC,MAAI,CAAA,IAAK0U,GAAO,CACrB,CAAA,EACCzU,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,iBACnB,SAAA,CAAAD,EAAA,IAAC,MAAI,CAAA,UAAWC,EAAO,MAAO,SAAI,OAAA,EAClCD,EAAAA,IAAC,MAAG,SAAwB,0BAAA,CAAA,EAC5BA,EAAAA,IAAC,MAAG,SAAe,iBAAA,CAAA,CAAA,EACvB,CAAA,EACJ,EACCE,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,kBACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,cACnB,eAAC,MAAI,CAAA,IAAK2U,GAAO,CACrB,CAAA,EACC1U,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,iBACnB,SAAA,CAAAD,EAAA,IAAC,MAAI,CAAA,UAAWC,EAAO,MAAO,SAAI,OAAA,EAClCD,EAAAA,IAAC,MAAG,SAAiB,mBAAA,CAAA,EACrBA,EAAAA,IAAC,MAAG,SAAsB,wBAAA,CAAA,CAAA,EAC9B,CAAA,EACJ,EACCE,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,kBACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,cACnB,eAAC,MAAI,CAAA,IAAK4U,GAAO,CACrB,CAAA,EACC3U,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,iBACnB,SAAA,CAAAD,EAAA,IAAC,MAAI,CAAA,UAAWC,EAAO,MAAO,SAAI,OAAA,EAClCD,EAAAA,IAAC,MAAG,SAAe,iBAAA,CAAA,EACnBA,EAAAA,IAAC,MAAG,SAAY,cAAA,CAAA,CAAA,EACpB,CAAA,EACJ,EACCE,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,kBACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,cACnB,eAAC,MAAI,CAAA,IAAK6U,GAAO,CACrB,CAAA,EACC5U,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,iBACnB,SAAA,CAAAD,EAAA,IAAC,MAAI,CAAA,UAAWC,EAAO,MAAO,SAAI,OAAA,EAClCD,EAAAA,IAAC,MAAG,SAAY,cAAA,CAAA,EAChBA,EAAAA,IAAC,MAAG,SAAiB,mBAAA,CAAA,CAAA,EACzB,CAAA,EACJ,CAAA,EACJ,CACJ,CAAA,CAAA,CAER,omCCtDA,SAASgV,GAAehK,EAAO,CAC3B,KAAM,CAACK,EAAU2D,CAAW,EAAIvP,EAAQ,SAAC,EAAK,EACxC,CAACwV,EAAOC,CAAQ,EAAIzV,EAAQ,SAAC,CAAE,CAAA,EAC/B,CAACyR,EAAOoB,CAAQ,EAAI7S,EAAQ,SAAA,EAE5BwP,EAAWtL,EAAAA,SAEXwR,EAAatR,cAAY,MAAOuR,GAAU,CAC5C5Q,IACAyK,EAAS,QAAU,IAAI,gBACvBD,EAAY,EAAI,EAChB,MAAMqG,EAAIC,GAAYF,CAAK,EACrBvC,EAAc,IAAI,gBAAgBwC,CAAC,EAAE,SAAQ,EAEnD,GAAI,CACA,MAAMjR,EAAW,MAAM,MAAM,GAAGC,CAAc,iBAAiBwO,CAAW,GAAI,CAC1E,OAAQ5D,EAAS,QAAQ,OACzB,QAAS,CACL,cAAe,UAAU3K,EAAQ,CAAE,EACtC,CACjB,CAAa,EACD,GAAI,CAACF,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,0CAA0C,CAC3E,CACD,MAAMA,EAAO,MAAM6E,EAAS,OACtB,CAAE,MAAA6Q,EAAO,MAAA/D,CAAO,EAAG3R,EACzB,OAAA+S,EAASpB,CAAK,EACdgE,EAASD,GAAS,CAAA,CAAE,EACb1V,CACV,OAAQkH,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,qBAAsBA,CAAK,EAEvCA,EAClB,QAAkB,CACNuI,EAAY,EAAK,CACpB,CACJ,EAAE,CAAE,CAAA,EAECxK,EAAQX,EAAAA,YAAY,IAAM,CACxBoL,EAAS,SACTA,EAAS,QAAQ,OAExB,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,SAAA5D,EAAU,MAAA4J,EAAO,MAAA/D,EAAO,WAAAiE,EAAY,MAAA3Q,CAAK,CACtD,CC5CA,MAAM+Q,GAAa,CAACC,EAAQ,CAAE,SAAAC,EAAW,IAAM,UAAAC,EAAY,GAAM,QAAAC,EAAU,EAAM,EAAG,KAAO,CACvF,MAAMC,EAAajS,SAAO,IAAI,EACxBkS,EAAsBlS,SAAO,IAAI,EACjCmS,EAAanS,SAAO,EAAI,EACxBoS,EAAYpS,SAAO6R,CAAM,EACzB,CAACQ,EAAUC,CAAW,EAAIxW,EAAQ,SAACkW,CAAO,EAC1C,CAACO,EAAYC,CAAa,EAAI1W,EAAQ,SAACgW,CAAQ,EAGrD7V,EAAAA,UAAU,IAAM,CACZmW,EAAU,QAAUP,CAC5B,EAAO,CAACA,CAAM,CAAC,EAGX,MAAMY,EAAcvS,EAAAA,YAAY,IAAM,CAC9B+R,EAAW,SACX,aAAaA,EAAW,OAAO,EAE/BC,EAAoB,SACpB,cAAcA,EAAoB,OAAO,CAEhD,EAAE,CAAE,CAAA,EAGCQ,EAAwBxS,EAAAA,YAAY,IAAM,CAC5CsS,EAAcV,CAAQ,EACtB,MAAMxT,EAAY,KAAK,MAEvB4T,EAAoB,QAAU,YAAY,IAAM,CAC5C,MAAMS,EAAU,KAAK,IAAG,EAAKrU,EACvBsU,EAAYd,EAAWa,EAEzBC,GAAa,EACb,cAAcV,EAAoB,OAAO,EAEzCM,EAAcI,CAAS,CAE9B,EAAE,GAAI,CACf,EAAO,CAACd,CAAQ,CAAC,EAEPe,EAAU3S,EAAAA,YAAY,SAAY,CACpC,GAAI,GAACmS,GAAY,CAACF,EAAW,SAE7B,CAAAM,IAEA,GAAI,CACA,MAAML,EAAU,SAC5B,QAAkB,CACFD,EAAW,SAAWE,IACtBJ,EAAW,QAAU,WAAWY,EAASf,CAAQ,EACjDY,IAEP,EACJ,EAAE,CAACZ,EAAUO,EAAUI,EAAaC,CAAqB,CAAC,EAErDrM,EAAQnG,EAAAA,YAAY,IAAM,CAC5BoS,EAAY,EAAI,CACnB,EAAE,CAAE,CAAA,EAECQ,EAAO5S,EAAAA,YAAY,IAAM,CAC3BoS,EAAY,EAAK,EACjBG,IACAD,EAAcV,CAAQ,CAC9B,EAAO,CAACW,EAAaX,CAAQ,CAAC,EAEpBiB,EAAU7S,EAAAA,YAAY,IAAM,CAC9BuS,IACAI,GACR,EAAO,CAACA,EAASJ,CAAW,CAAC,EAGzBxW,OAAAA,EAAAA,UAAU,KACNkW,EAAW,QAAU,GAEd,IAAM,CACTA,EAAW,QAAU,GACrBM,GACZ,GACO,CAACA,CAAW,CAAC,EAGhBxW,EAAAA,UAAU,IAAM,CACZqW,EAAYN,CAAO,CAC3B,EAAO,CAACA,CAAO,CAAC,EAGZ/V,EAAAA,UAAU,KACFoW,EACIN,EACAc,KAEAZ,EAAW,QAAU,WAAWY,EAASf,CAAQ,EACjDY,KAGJD,IAGGA,GACR,CAACI,EAASR,EAAUN,EAAWD,EAAUW,EAAaC,CAAqB,CAAC,EAExE,CACH,MAAArM,EACA,KAAAyM,EACA,QAAAC,EACA,UAAWV,EACX,WAAAE,EACA,UAAYT,EAAWS,GAAcT,EAAY,GACzD,CACA,ECpHA,SAASkB,IAAoB,CACzB,KAAM,CAACnI,EAAYC,CAAa,EAAIhP,EAAQ,SAAC,EAAK,EAC5CwP,EAAWtL,EAAAA,SAEXiT,EAAiB/S,cAAY,MAAOM,GAAQ,CAC9CK,IACAyK,EAAS,QAAU,IAAI,gBACvBR,EAAc,EAAI,EAClB,GAAI,CACA,MAAMrK,EAAW,MAAM,MAAM,GAAGC,CAAc,qBAAsB,CAChE,OAAQ4K,EAAS,QAAQ,OACzB,OAAQ,OACR,QAAS,CACL,eAAgB,mBAChB,cAAe,UAAU3K,EAAQ,CAAE,EACtC,EACD,KAAM,KAAK,UAAUH,CAAG,CACxC,CAAa,EACD,GAAI,CAACC,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,wCAAwC,CACzE,CAED,OADa,MAAM6E,EAAS,MAE/B,OAAQqC,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,mBAAoBA,CAAK,EAErCA,EAClB,QAAkB,CACNgI,EAAc,EAAK,CACtB,CACJ,EAAE,CAAE,CAAA,EAECjK,EAAQX,EAAAA,YAAY,IAAM,CACxBoL,EAAS,SACTA,EAAS,QAAQ,OAExB,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,WAAAT,EAAY,eAAAoI,EAAgB,MAAApS,EACzC,CC5CA,SAASqS,IAAgB,CACrB,KAAM,CAACxL,EAAU2D,CAAW,EAAIvP,EAAQ,SAAC,EAAK,EACxC,CAACqX,EAAMC,CAAO,EAAItX,EAAQ,SAAC,CAAE,CAAA,EAE7BwP,EAAWtL,EAAAA,SAEXqT,EAAYnT,cAAY,MAAOoT,GAAO,CACxCzS,IACAwK,EAAY,EAAI,EAChBC,EAAS,QAAU,IAAI,gBACvB,GAAI,CACA,MAAM7K,EAAW,MAAM,MAAM,GAAGC,CAAc,iBAAiB4S,CAAE,GAAI,CACjE,OAAQhI,EAAS,QAAQ,OACzB,QAAS,CACL,cAAe,UAAU3K,EAAQ,CAAE,EACtC,CACjB,CAAa,EACD,GAAI,CAACF,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,yCAAyC,CAC1E,CACD,MAAMA,EAAO,MAAM6E,EAAS,OACtB,CAAE,KAAA0S,CAAM,EAAGvX,EACjB,OAAAwX,EAAQD,CAAI,EACLvX,CACV,OAAQkH,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,oBAAqBA,CAAK,EAEtCA,EAClB,QAAkB,CACNuI,EAAY,EAAK,CACpB,CACJ,EAAE,CAAE,CAAA,EAECxK,EAAQX,EAAAA,YAAY,IAAM,CACxBoL,EAAS,SACTA,EAAS,QAAQ,OAExB,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,SAAA5D,EAAU,KAAAyL,EAAM,UAAAE,EAAW,MAAAxS,CAAK,CAC7C,CCxCA,SAAS0S,GAAQ,CAAE,KAAApX,GAAQ,CACvB,KAAM,CAACqX,EAAUC,CAAW,EAAI3X,WAAS,EAAK,EACxC,CAAC4X,EAAaC,CAAc,EAAI7X,WAAS,EAAK,EAC9C,CAAC8X,EAAOC,CAAQ,EAAI/X,WAAS,CAAC,EAC9B,CAAE,WAAA+O,EAAY,eAAAoI,CAAe,EAAID,GAAkB,EACnD,CAAE,SAAAtL,EAAU,KAAAyL,EAAM,UAAAE,EAAW,MAAAxS,CAAA,EAAUqS,KACvC9R,EAAWC,KAEjBpF,EAAAA,UAAU,KACFkX,EAAK,gBACLU,EAASV,EAAK,cAAc,EAEzB,IAAMtS,EAAM,GACpB,CAACsS,EAAK,cAAc,CAAC,EAExBlX,EAAAA,UAAU,KACFuX,GACAH,EAAUlX,EAAK,EAAE,EAEd,IAAM0E,EAAM,GACpB,CAAC2S,CAAQ,CAAC,EAEbvX,EAAAA,UAAU,KACFyX,GACAL,EAAUlX,EAAK,EAAE,EAEd,IAAM0E,EAAM,GACpB,CAAC6S,CAAW,CAAC,EAEV,MAAAI,EAAiBC,GAAY,CAC/B,MAAMvT,EAAM,CACR,OAAQrE,EAAK,GACb,MAAAyX,EACA,QAAAG,CAAA,EAGJd,EAAezS,CAAG,EACb,KAAM5E,GAAS,CACZ6X,EAAY,EAAK,EACX,KAAA,CAAE,UAAAO,EAAW,MAAAvG,CAAU,EAAA7R,EACzBoY,IACA,MAAMvG,GAAS,IAAI,EACVrM,EAAA,wCAAwC4S,CAAS,EAAE,EAChE,CACH,EACA,MAAOlR,GAAU,CACd,MAAMA,EAAM,OAAO,CAAA,CACtB,CAAA,EAGT,OAEQvG,EAAA,KAAA6C,WAAA,CAAA,SAAA,CAAA/C,EAAA,IAAC8F,EAAA,CACG,UAAU,SACV,KAAK,QACL,QAAS,IAAMsR,EAAY,EAAI,EAC/B,QAAS5I,EACT,SAAU1O,EAAK,iBAAmB,EACrC,SAAA,IAAA,CAED,EACAE,EAAA,IAAC6C,GAAA,CACG,MAAM,gBACN,KAAMsU,EACN,SAAU,IAAMC,EAAY,EAAK,EACjC,OAAQ,KACR,SAAQ,GACR,aAAc,GACd,QAAS/L,EAET,SAAAnL,EAAAA,KAAC,MAAI,CAAA,MAAO,CAAE,QAAS,OAAQ,eAAgB,gBAAiB,UAAW,EAAA,EACvE,SAAA,CAAAF,EAAA,IAAC4X,GAAA,CACG,MAAOL,EACP,IAAKzX,EAAK,eACV,aAAcA,EAAK,eACnB,SAAW9H,GAAUwf,EAASxf,CAAK,CAAA,CACvC,EACAgI,EAAA,IAAC8F,EAAA,CACG,KAAK,UACL,QAAS,IAAM2R,EAAc,EAAK,EAClC,QAASjJ,EACT,SAAU+I,IAAU,EACvB,SAAA,IAAA,CAED,CAAA,EACJ,CAAA,CACJ,EACAvX,EAAA,IAAC8F,EAAA,CACG,UAAU,SACV,KAAK,QACL,QAAS,IAAMwR,EAAe,EAAI,EAClC,QAAS9I,EACT,SAAU1O,EAAK,iBAAmB,EACrC,SAAA,IAAA,CAED,EACAE,EAAA,IAAC6C,GAAA,CACG,MAAM,gBACN,KAAMwU,EACN,SAAU,IAAMC,EAAe,EAAK,EACpC,OAAQ,KACR,SAAQ,GACR,aAAc,GACd,QAASjM,EAET,SAAAnL,EAAAA,KAAC,MAAI,CAAA,MAAO,CAAE,QAAS,OAAQ,eAAgB,gBAAiB,UAAW,EAAA,EACvE,SAAA,CAAAF,EAAA,IAAC4X,GAAA,CACG,MAAOL,EACP,IAAKzX,EAAK,eACV,aAAcA,EAAK,eACnB,SAAW9H,GAAUwf,EAASxf,CAAK,CAAA,CACvC,EACAgI,EAAA,IAAC8F,EAAA,CACG,KAAK,UACL,QAAS,IAAM2R,EAAc,EAAI,EACjC,QAASjJ,EACT,SAAU+I,IAAU,EACvB,SAAA,IAAA,CAED,CAAA,EACJ,CAAA,CACJ,CACJ,CAAA,CAAA,CAER,CAEAL,GAAQ,UAAY,CAChB,KAAMlU,EAAU,OAAO,UAC3B,ECjIA,SAAS6U,GAAeC,EAAc,CAE5B,MAAAtZ,EAAQsZ,EAAa,MAAM,SAAS,EACnC,OAAAtZ,EAAQA,EAAM,CAAC,EAAI,IAC9B,CAEA,SAASuZ,GAAI,CAAE,KAAAjY,GAAQ,CACnB,KAAM,CAACkY,EAAWC,CAAY,EAAIxY,WAAS,EAAK,EAEhD,OACKS,EAAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,eACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,QACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,iBACnB,SAAA,CAACD,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,gBACnB,SAAAD,EAAA,IAAC,MAAA,CACG,IAAK,GAAGyF,EAAc,uBAAuBoS,GAAe/X,EAAK,YAAY,CAAC,OAC9E,IAAI,EAAA,CAAA,EAEZ,SACC,MACG,CAAA,SAAA,CAACE,EAAAA,IAAA,MAAA,CAAK,WAAK,YAAa,CAAA,EACxBA,MAAC,OAAK,SAAMkY,GAAApY,EAAK,OAAO,EAAE,OAAO,YAAY,EAAE,CAAA,EACnD,CAAA,EACJ,EACCI,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,mBACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,SACnB,SAAA,CAACD,EAAAA,IAAA,OAAA,CAAM,WAAK,cAAe,CAAA,EAC1B,MACDA,EAAAA,IAAC,OAAM,CAAA,SAAAF,EAAK,cAAe,CAAA,CAAA,EAC/B,EACCI,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,KACnB,SAAA,CAAAD,MAAC,OAAK,SAAMkY,GAAApY,EAAK,OAAO,EAAE,OAAO,OAAO,EAAE,EACzC,WACA,MAAI,CAAA,SAAA,CAAA,IAAEoY,GAAMpY,EAAK,OAAO,EAAE,OAAO,OAAO,CAAA,EAAE,CAAA,EAC/C,CAAA,EACJ,EACCI,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,iBACnB,SAAA,CAACD,EAAAA,IAAA8F,EAAA,CAAO,KAAK,OAAO,KAAK,QAAQ,QAAS,IAAMmS,EAAa,EAAI,EAAG,SAEpE,IAAA,CAAA,EACC/X,EAAA,KAAA2C,GAAA,CAAM,MAAM,KAAK,KAAMmV,EAAW,SAAU,IAAMC,EAAa,EAAK,EAAG,OAAQ,KAAM,SAAQ,GAC1F,SAAA,CAAA/X,OAAC,IAAE,CAAA,SAAA,CAAA,MACKJ,EAAK,cAAc,IAAEA,EAAK,cAAc,IAAA,EAChD,SACC,IAAE,CAAA,SAAA,CAAA,OAAKA,EAAK,YAAY,GAAA,EAAC,EAC1BE,EAAAA,IAAC,KAAE,SAAQ,UAAA,CAAA,CAAA,EACf,CAAA,EACJ,EACCE,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,gBACnB,SAAA,CAAAC,OAAC,MAAI,CAAA,SAAA,CAAA,IAAEJ,EAAK,WAAW,KAAA,EAAG,SACzB,MAAI,CAAA,SAAA,CAAA,KAAGA,EAAK,eAAe,KAAA,EAAG,CAAA,EACnC,EACCI,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,mBACnB,SAAA,CAAAD,EAAAA,IAAC,OAAI,SAAI,MAAA,CAAA,EACTA,EAAAA,IAAC,MAAK,CAAA,SAAAF,EAAK,cAAgBoY,GAAMpY,EAAK,aAAa,EAAE,OAAO,YAAY,EAAI,IAAK,CAAA,CAAA,EACrF,EACCI,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,kBACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,MACnB,SAAA,CAAAD,MAAC,OAAK,CAAA,UAAWC,EAAO,SAAW,WAAK,SAAS,EAAQ,UACxD,OAAK,CAAA,UAAWA,EAAO,MAAQ,WAAK,eAAe,CAAA,EACxD,EACCH,EAAK,aACFI,EAAAA,KAAC,MAAI,CAAA,UAAW,GAAGD,EAAO,KAAK,IAAIA,EAAO,YAAY,GAClD,SAAA,CAAAD,MAAC,OAAK,CAAA,UAAWC,EAAO,SAAW,WAAK,SAAS,EAAQ,UACxD,OAAK,CAAA,UAAWA,EAAO,MAAQ,WAAK,YAAY,CAAA,EACrD,CAAA,EAER,EAEAD,EAAAA,IAAC,OAAI,UAAWC,EAAO,kBACnB,SAACD,EAAAA,IAAAkX,GAAA,CAAQ,KAAApX,EAAY,CACzB,CAAA,CAAA,EACJ,EAECI,EAAA,KAAA,IAAA,CAAE,UAAWD,EAAO,MACjB,SAAA,CAACC,EAAA,KAAA,OAAA,CAAK,UAAWD,EAAO,WAAY,SAAA,CAAA,IAC9BH,EAAK,WAAW,UAAQA,EAAK,eAAe,OAAK,GAAA,EACvD,EACAE,EAAAA,IAAC,QAAK,UAAWC,EAAO,cACnB,SAAKH,EAAA,sBAAkB,OAAK,CAAA,SAAA,CAAA,QAAMoY,GAAMpY,EAAK,aAAa,EAAE,OAAO,YAAY,CAAA,CAAA,CAAE,CACtF,CAAA,CAAA,EACJ,CACJ,CAAA,CAAA,CAER,CAEAiY,GAAI,UAAY,CACZ,KAAM/U,EAAU,OAAO,UAC3B,EC1FA,SAASmV,IAAc,CACnB,KAAM,CAAE,SAAA9M,EAAU,MAAA4J,EAAO,WAAAE,EAAY,MAAA3Q,CAAA,EAAUwQ,KAEzCoD,EAAavU,EAAAA,YAAY,IACpBsR,EAAW,CAAE,UAAW,EAAM,CAAA,EACtC,CAACA,CAAU,CAAC,EAEMI,GAAW6C,EAAY,CACxC,SAAU,IACV,UAAW,GACX,QAAS,EAAA,CACZ,EAEDxY,EAAAA,UAAU,IACC,IAAM,CACH4E,GAAA,EAEX,CAAE,CAAA,EAEL,MAAM6T,EAAS,IACXnY,EAAAA,KAAC,MAAI,CAAA,UAAWD,EAAO,OACnB,SAAA,CAAAC,OAAC,IAAE,CAAA,SAAA,CAAA,oDAEEF,EAAA,IAAA,OAAA,CAAK,UAAWC,EAAO,QAAS,SAAE,KAAA,EAAO,GAAA,EAC9C,SACC,MAAI,CAAA,SAAA,CAAA,4BACyBD,EAAA,IAAA,OAAA,CAAK,UAAWC,EAAO,QAAS,SAAE,KAAA,EAAO,mCAAA,EAEvE,CACJ,CAAA,CAAA,EAGJ,OACKC,EAAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,UAGnB,SAAA,CAAAD,EAAA,IAAC,MAAI,CAAA,UAAWC,EAAO,kBAClB,WAAM,IAAI,CAACH,EAAMnB,IACbqB,EAAAA,IAAA+X,GAAA,CAAgB,KAAAjY,GAAPnB,CAAmB,CAChC,EACL,GACCsW,GAAA,YAAAA,EAAO,QAAS,GAAKjV,EAAAA,IAACqY,EAAO,CAAA,CAAA,CAClC,CAAA,CAAA,CAER,CCxCA,MAAMC,GAAgB,GAEhBC,GAAW,CACb,KAAM,GACN,OAAQ,CACZ,EAEMC,GAAM,CACR,SAAU,WACV,cAAe,eACnB,EAEA,SAASC,GAAuB,CAAE,KAAAC,EAAM,SAAAC,EAAU,gBAAAC,EAAkB,IAAM,CACtE,KAAM,CAACC,EAASC,CAAU,EAAIrZ,EAAAA,SAAS+Y,GAAI,aAAa,EAClD,CAACO,EAAWC,CAAY,EAAIvZ,WAAS,CAAC,EACtCwZ,EAAetV,SAAO,IAAI,EAC1B,CAAE,QAAAsB,CAAA,EAAYC,GAAI,OAAO,EAGzBgU,EAAiBN,EAAkB,KAAO,KAE1CO,EAAY/Y,GACV,MAAM,QAAQA,CAAC,EACRA,EAEJA,GAAA,YAAAA,EAAG,SAGRgZ,EAAe,CAACC,EAAMC,IAAa,CAErC,IAAIC,EAAeR,EACnB,QAAS7U,EAAI,EAAGA,EAAIoV,EAAS,OAAQpV,IAEjC,GADgBqV,GAAAD,EAASpV,CAAC,EAAE,KACxBqV,EAAeL,EACf,OAAAjU,GAAA,MAAAA,EAAS,MAAM,cAAciU,EAAiB,KAAO,IAAI,MAClDM,GAAO,YAGtB,OAAAR,EAAaO,CAAY,EAClB,EAAA,EAGLE,EAAYJ,GAAS,CACvBL,EAAcU,GAAaA,EAAWL,EAAK,IAAI,CAAA,EAG7CM,EAAkBC,GAAc,CAE9B,GADI,QAAA,IAAI,UAAWA,CAAS,EAC5BA,EAAU,YAAY,OAAS,EAAG,CAC5B,MAAAC,EAAoBD,EAAU,YAAY,CAAC,EAC7C,GAAAC,EAAkB,KAAK,OAAS,EAAG,CAC7B,MAAA9L,EAAO8L,EAAkB,KAAK,CAAC,EAC/BC,EAASD,EAAkB,OACjC,GAAI,MAAM,QAAQC,CAAM,GAAKA,EAAO,OAAS,EAAG,CAC5C,QAAQ,IAAIA,CAAM,EACZ,MAAAC,EAASD,EAAO,KAAK;AAAA,CAAI,EAC/B7U,GAAA,MAAAA,EAAS,MAAM8U,EACnB,CACA,OAAQhM,EAAM,CACV,IAAK,iBACD+K,EAAWN,GAAI,QAAQ,EACvB,MACJ,IAAK,qBACDM,EAAWN,GAAI,aAAa,EAE5B,MACJ,QACI,MACR,CACAS,EAAa,QAAQ,OACzB,CACJ,CAAA,EAIA,OAAA/Y,EAAA,KAACgO,EAAA,CACG,KAAAwK,EACA,OAAO,WACP,SAAAC,EACA,eAAAgB,EACA,UAAS,GACT,aAAa,MACb,mBAAoB,CAAE,SAAU,SAAU,MAAO,QAAS,EAE1D,SAAA,CAACzZ,EAAA,KAAA,UAAA,CAAQ,UAAWD,EAAO,eACvB,SAAA,CAACD,EAAAA,IAAA,UAAA,CAAQ,UAAWC,EAAO,aACvB,gBAAC,MAAI,CAAA,UAAWA,EAAO,KACnB,SAAA,CAAAD,EAAA,IAAC,SAAA,CACG,UAAWC,EAAO,QAClB,KAAK,SACL,QAAS,IAAM6Y,EAAWN,GAAI,aAAa,EAC3C,gBAAeK,IAAYL,GAAI,eAAiB,OACnD,SAAA,MAAA,CAED,EACAxY,EAAA,IAAC,SAAA,CACG,UAAWC,EAAO,QAClB,KAAK,SACL,QAAS,IAAM6Y,EAAWN,GAAI,QAAQ,EACtC,gBAAeK,IAAYL,GAAI,UAAY,OAC9C,SAAA,MAAA,CAED,CAAA,CAAA,CACJ,CACJ,CAAA,EACAxY,EAAA,IAAC,UAAA,CACG,UAAW,GAAGC,EAAO,gBAAgB,IAAIA,EAAO,QAAQ,GACxD,gBAAe4Y,IAAYL,GAAI,UAAY,OAE3C,eAACtK,EAAK,KAAL,CAAU,KAAK,iBAAiB,aAAc,GAC1C,SAAA,CAAC8L,EAAQ,CAAE,IAAAC,EAAK,OAAAC,EAAQ,KAAAC,KAEhBja,OAAA6C,EAAAA,SAAA,CAAA,SAAA,CAAOiX,EAAA,IAAI,CAACI,EAAOzb,WACf,MAAI,CAAA,UAAWsB,EAAO,yBACnB,SAAA,CAACD,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,eACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,aAAa,EAChC,MAAO,CACH,CACI,SAAU,GACV,QAAS,QACb,CACJ,CAAA,EAEApa,EAAA,IAACgI,EAAA,CACG,WAAU,GACV,WAAU,GACV,YAAY,MACZ,QAASyM,GACT,sBAAuB,GACvB,aAAe6F,UAENhX,EACG,CAAA,SAAA,CAACtD,EAAA,IAAA,OAAA,CAAM,SAAOsa,EAAA,KAAK,YAAY,SAC9B,OAAK,CAAA,SAAA,CAAA,IAAEA,EAAO,KAAK,gBAAgB,GAAA,EAAC,CACzC,CAAA,CAAA,CAER,CACJ,CAAA,EAER,EACCta,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,aACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,WAAW,EAC9B,SAAQ,GACR,MAAO,CACH,CACI,SAAU,GACV,QAAS,QACb,CACJ,CAAA,EAEApa,EAAA,IAACgI,EAAA,CACG,WAAU,GACV,WAAU,GACV,YAAY,MACZ,QAASyM,GACT,sBAAuB,GACvB,aAAe6F,UAENhX,EACG,CAAA,SAAA,CAACtD,EAAA,IAAA,OAAA,CAAM,SAAOsa,EAAA,KAAK,YAAY,SAC9B,OAAK,CAAA,SAAA,CAAA,IAAEA,EAAO,KAAK,gBAAgB,GAAA,EAAC,CACzC,CAAA,CAAA,CAER,CACJ,CAAA,EAER,EACCta,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,eACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,MAAM,EACzB,SAAQ,GACR,MAAO,CACH,CACI,SAAU,GACV,QAAS,OACb,CACJ,EACA,cAAgBpiB,IAAW,CACvB,MAAOA,EAAQkgB,GAAMlgB,CAAK,EAAI,MAAA,GAElC,kBAAoB4C,GAChBA,EAAOA,EAAK,OAAO,YAAY,EAAI,MAAA,EAGvCoF,EAAA,IAACua,GAAA,CACG,KAAK,OACL,OAAO,aACP,YAAY,KACZ,aAAeC,GAEJA,GAAWA,EAAUtC,GAAM,EAAE,MAAM,KAAK,EAEnD,MAAO,CAAE,MAAO,MAAO,CAAA,CAC3B,CAAA,EAER,EACClY,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,kBACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,aAAa,CAAA,EAEhCpa,EAAA,IAACgI,EAAA,CACG,WAAU,GACV,YAAa,KACb,QAASe,GACT,sBAAuB,GACvB,aAAeuR,UAENhX,EACG,CAAA,SAAA,CAACtD,EAAA,IAAA,OAAA,CAAM,SAAOsa,EAAA,KAAK,YAAY,SAC9B,OAAK,CAAA,SAAA,CAAA,IAAEA,EAAO,KAAK,KAAK,GAAA,EAAC,CAC9B,CAAA,CAAA,CAER,CACJ,CAAA,EAER,EACCta,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,gBACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,OAAO,EAC1B,aAAc5F,GAAW,QACzB,SAAQ,EAAA,EAERxU,EAAA,IAACgI,EAAA,CACG,sBAAuB,GACvB,QAAS,CACL,CAAE,MAAOwM,GAAW,QAAS,MAAO,KAAM,EAC1C,CAAE,MAAOA,GAAW,SAAU,MAAO,KAAM,CAC/C,CAAA,CACJ,CAAA,EAER,EACCxU,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,wBACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,eAAe,EAClC,UAAYpiB,GAAUA,EAAM,IAAK8H,GAASA,EAAK,OAAO,aAAa,CAAA,EAEnEE,EAAA,IAACgI,EAAA,CACG,KAAK,OACL,YAAY,OACZ,gBAAiB,CAAC,GAAG,EACrB,gBAAiB,KACjB,WAAY,IAAA,CAChB,CAAA,EAGR,EAEChI,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,iBACnB,SAAAD,EAAA,IAACya,GAAA,CACG,MAAO,CAAE,OAAQ,SAAU,EAC3B,QAAS,IAAMP,EAAOE,EAAM,IAAI,CAAA,CAAA,EAExC,CAAA,GAzJkDA,EAAM,GA0J5D,CACH,EACApa,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,sBACnB,SAACC,OAAA4F,EAAA,CAAO,KAAK,UAAU,MAAK,GAAC,QAAS,IAAMmU,EACxC,EAAA,SAAA,CAAAja,EAAA,IAAC0a,GAAa,EAAA,EAAE,OAAA,CAAA,CACpB,CACJ,CAAA,CAAA,CAAA,CACJ,CAER,CAAA,CAAA,CACJ,EACA1a,EAAA,IAAC,UAAA,CACG,UAAW,GAAGC,EAAO,gBAAgB,IAAIA,EAAO,aAAa,GAC7D,gBAAe4Y,IAAYL,GAAI,eAAiB,OAEhD,eAACtK,EAAK,KAAL,CAAU,KAAK,qBAAqB,aAAc,GAC9C,SAAA,CAAC8L,EAAQ,CAAE,IAAAC,EAAK,OAAAC,EAAQ,KAAAC,KAEhBja,OAAA6C,EAAAA,SAAA,CAAA,SAAA,CAAOiX,EAAA,IAAI,CAACI,EAAOzb,WACf,MAAI,CAAA,UAAWsB,EAAO,yBACnB,SAAA,CAACD,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,eACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,aAAa,EAChC,MAAO,CACH,CACI,SAAU,GACV,QAAS,QACb,CACJ,CAAA,EAEApa,EAAAA,IAAC2a,GAAM,CAAA,YAAY,KAAM,CAAA,CAAA,EAEjC,EACC3a,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,aACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,WAAW,EAC9B,MAAO,CACH,CACI,SAAU,GACV,QAAS,QACb,CACJ,CAAA,EAEApa,EAAAA,IAAC2a,GAAM,CAAA,YAAY,KAAM,CAAA,CAAA,EAEjC,EACC3a,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,eACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,MAAM,EACzB,cAAgBpiB,IAAW,CACvB,MAAOA,EAAQkgB,GAAMlgB,CAAK,EAAI,MAAA,GAElC,kBAAoB4C,GAChBA,EAAOA,EAAK,OAAO,YAAY,EAAI,OAEvC,MAAO,CACH,CACI,SAAU,GACV,QAAS,OACb,CACJ,CAAA,EAEAoF,EAAA,IAACua,GAAA,CACG,KAAK,OACL,OAAO,aACP,YAAY,KACZ,aAAeC,GAEJA,GAAWA,EAAUtC,GAAM,EAAE,MAAM,KAAK,EAEnD,MAAO,CAAE,MAAO,MAAO,CAAA,CAC3B,CAAA,EAER,EACClY,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,kBACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,aAAa,CAAA,EAEhCpa,EAAAA,IAAC2a,GAAM,CAAA,YAAY,IAAK,CAAA,CAAA,EAEhC,EACC3a,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,gBACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,OAAO,EAC1B,aAAc5F,GAAW,OAAA,EAEzBxU,EAAA,IAACgI,EAAA,CACG,sBAAuB,GACvB,QAAS,CACL,CAAE,MAAOwM,GAAW,QAAS,MAAO,KAAM,EAC1C,CAAE,MAAOA,GAAW,SAAU,MAAO,KAAM,CAC/C,CAAA,CACJ,CAAA,EAER,EACCxU,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,wBACnB,SAAAoa,EAAA,cAACnM,EAAK,KAAL,CACI,GAAGkM,EACJ,IAAK,KAAK,OAAO,EACjB,KAAM,CAACA,EAAM,KAAM,eAAe,EAClC,UAAYpiB,GAAUA,EAAM,IAAK8H,GAASA,EAAK,OAAO,aAAa,CAAA,EAEnEE,EAAA,IAACgI,EAAA,CACG,KAAK,OACL,YAAY,OACZ,gBAAiB,CAAC,GAAG,EACrB,gBAAiB,KACjB,WAAY,IAAA,CAChB,CAAA,EAGR,EAoBChI,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,iBACnB,SAAAD,EAAA,IAACya,GAAA,CACG,MAAO,CAAE,OAAQ,SAAU,EAC3B,QAAS,IAAMP,EAAOE,EAAM,IAAI,CAAA,CAAA,EAExC,CAAA,GA/HkDA,EAAM,GAgI5D,CACH,EACApa,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,sBACnB,SAACC,OAAA4F,EAAA,CAAO,KAAK,UAAU,MAAK,GAAC,QAAS,IAAMmU,EACxC,EAAA,SAAA,CAAAja,EAAA,IAAC0a,GAAa,EAAA,EAAE,OAAA,CAAA,CACpB,CACJ,CAAA,CAAA,CAAA,CACJ,CAER,CAAA,CAAA,CACJ,CAAA,EACJ,QAEC,KAAG,EAAA,EACHxa,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,uBACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,kBACnB,SAAA,CAACC,EAAA,KAAA,UAAA,CAAQ,UAAWD,EAAO,kBACvB,SAAA,CAACD,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,gBACnB,SAAAD,EAAA,IAACkO,EAAK,KAAL,CACG,MAAM,KACN,KAAK,WACL,aAAc,GACd,MAAO,CACH,CACI,SAAU,EAEd,CACJ,EAEA,SAAAlO,EAAA,IAAC4X,GAAA,CACG,KAAK,SACL,YAAY,KACZ,IAAK,GACL,IAAKU,GACL,MAAO,CAAE,MAAO,MAAO,CAAA,CAC3B,CAAA,CAAA,EAER,EACCtY,EAAA,IAAA,MAAA,CAAI,UAAWC,EAAO,gBACnB,SAAAD,EAAA,IAACkO,EAAK,KAAL,CAAU,KAAK,WAAW,MAAM,KAC7B,SAAAlO,EAAA,IAAC4X,GAAA,CACG,KAAK,SACL,YAAY,KACZ,IAAK,EACL,IAAKU,GACL,MAAO,CAAE,MAAO,MAAO,CAAA,GAE/B,CACJ,CAAA,CAAA,EACJ,EACAtY,EAAAA,IAAC,WAAQ,UAAWC,EAAO,mBACvB,SAACD,MAAAkO,EAAK,KAAL,CAAU,MAAM,OAAO,KAAK,YACzB,eAACyM,GAAM,CAAA,YAAY,OAAO,UAAW,GAAI,EAC7C,CACJ,CAAA,EAEC3a,MAAA,UAAA,CAAQ,UAAWC,EAAO,eACvB,SAACD,EAAA,IAAAkO,EAAK,KAAL,CAAU,KAAK,SAAS,MAAM,KAAK,YAAa,GAAO,SAAAqK,GACpD,SAAAvY,EAAA,IAAC2a,GAAM,SAAN,CACG,YAAY,8BACZ,WAAU,GACV,UAAS,GACT,SAAU,CAAE,QAAS,EAAG,QAAS,CAAE,EACnC,UAAW,GAAA,GAEnB,CACJ,CAAA,EAEC3a,EAAA,IAAA,UAAA,CAAQ,UAAWC,EAAO,eACvB,SAAAD,EAAA,IAACkO,EAAK,KAAL,CACG,UAAS,GACT,MAAM,eACN,SAAAqK,GACA,aACK,IAAE,CAAA,SAAA,CAAA,UACSQ,EAAY,KAAO,MAAM,QAAQ,CAAC,EAAE,SAAOG,EAAiB,KAAO,KAAM,IAAI,IAAA,EAEzF,EAGJ,SAAAlZ,EAAAA,IAACkO,EAAK,KAAL,CAAU,KAAK,QAAQ,cAAc,WAAW,kBAAmBiL,EAAU,QAAO,GACjF,SAAAjZ,EAAA,KAACsZ,GAAO,QAAP,CACG,KAAK,QACL,aAAAJ,EACA,SAAAK,EACA,SAAS,OACT,SAAQ,GAER,SAAA,CAAAzZ,MAAC,IAAE,CAAA,UAAU,uBACT,SAAAA,MAAC4a,IAAc,CAAA,EACnB,EACC5a,EAAA,IAAA,IAAA,CAAE,UAAU,kBAAkB,SAAY,eAAA,EAC1CA,EAAA,IAAA,IAAA,CAAE,UAAU,kBAAkB,SAAc,iBAAA,EAC5CA,EAAA,IAAA,IAAA,CAAE,UAAU,kBAAkB,SAAS,YAAA,CAAA,CAAA,CAAA,EAEhD,CAAA,CAAA,EAER,EAEAA,EAAA,IAAC,UAAQ,CAAA,UAAWC,EAAO,eACvB,eAACiO,EAAK,KAAL,CAAU,SAAAqK,GACP,SAACvY,EAAA,IAAA6a,GAAA,CACG,eAAC/U,EAAO,CAAA,IAAKmT,EAAc,KAAK,UAAU,SAAS,SAAS,MAAK,GAAC,SAAA,MAElE,CAAA,CACJ,CAAA,CACJ,CAAA,EACJ,EACAjZ,EAAAA,IAAC,WAAQ,UAAWC,EAAO,cACvB,SAACD,EAAA,IAAAkO,EAAK,KAAL,CAAU,SAAAqK,GACP,SAAAvY,EAAA,IAAC8a,GAAA,CACG,MAAM,OACN,YAAY,eACZ,UAAW,IAAMpC,EAAK,YAAY,EAClC,SAAWtY,GAAM,CACb,QAAQ,IAAIA,CAAC,CACjB,EACA,OAAO,KACP,WAAW,KAEX,SAAAJ,EAAA,IAAC8F,EAAO,CAAA,KAAK,OAAO,KAAK,QAAQ,KAAM9F,EAAAA,IAAC+a,GAAa,CAAA,CAAA,EAAI,SAEzD,MAAA,CAAA,CAAA,GAER,CACJ,CAAA,CAAA,EACJ,QACC,MAAI,CAAA,UAAW9a,EAAO,mBACnB,SAAAD,MAAC+U,IAAc,CAAA,EACnB,CAAA,EACJ,CAAA,CAAA,CAAA,CAGZ,CAEA0D,GAAuB,UAAY,CAC/B,KAAMzV,EAAU,OAAO,WACvB,SAAUA,EAAU,KAAK,WACzB,gBAAiBA,EAAU,MAC/B,EC9iBA,SAASgY,GAAsBhQ,EAAO,CAClC,KAAM,CAACwD,EAAYC,CAAa,EAAIhP,EAAQ,SAAC,EAAK,EAE5C,CAACwb,EAASC,CAAU,EAAIzb,EAAQ,SAAC,CAAC,EAClCiE,EAAqBC,SAAO,IAAI,EAGhCwX,EAAsBtX,cAAY,MAAOuX,GAAa,CACxD3M,EAAc,EAAI,EAClB/K,EAAmB,QAAU,IAAI,gBACjC,GAAI,CAGA,MAAMU,EAAW,MAAMiX,GAAM,KAAK,GAAGhX,CAAc,wBAAyB+W,EAAU,CAClF,QAAS,CAAE,cAAe,UAAU9W,EAAQ,CAAE,EAAI,EAClD,OAAQZ,EAAmB,QAAQ,OACnC,iBAAmB4X,GAAkB,CACjC,MAAMpK,EAAQoK,EAAc,MAC5B,IAAIC,EAAmB,KAAK,MAAOD,EAAc,OAAS,IAAOpK,CAAK,EACtEgK,EAAWK,CAAgB,CAC9B,CACjB,CAAa,EACD,GAAInX,EAAS,OAAS,KAAOA,EAAS,QAAU,IAAK,CACjD,MAAM7E,EAAO6E,EAAS,KACtB,MAAM,IAAI,MAAM7E,EAAK,OAAS,gDAAgD,CACjF,CAED,OADa6E,EAAS,IAEzB,OAAQqC,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,gCAAiCA,CAAK,EAElDA,EAClB,QAAkB,CACNgI,EAAc,EAAK,CACtB,CACJ,EAAE,CAAE,CAAA,EAEL0M,EAAoB,UAAY,CAE5B,SAAU,CAACnQ,EAAOwQ,EAAUC,IAAkB,CAC1C,GAAI,EAAEzQ,EAAMwQ,CAAQ,YAAa,UAC7B,OAAO,IAAI,MACP,gBAAgBA,CAAQ,gBAAgBC,CAAa,kCACzE,CAES,CACT,EAEI,MAAMjX,EAAQX,EAAAA,YAAY,IAAM,CACxBH,EAAmB,SACnBA,EAAmB,QAAQ,OAElC,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,WAAA8K,EAAY,QAAAyM,EAAS,oBAAAE,EAAqB,MAAA3W,CAAK,CAC5D,CAEAwW,GAAsB,UAAY,CAAE,wTC1DpC,SAASU,IAAkB,CACvB,KAAM,CAAChD,CAAI,EAAIxK,EAAK,QAAQ,EACtB,CAAE,QAAAjJ,CAAA,EAAYC,GAAI,OAAO,EACzB,CAAC2L,EAAS8K,CAAU,EAAIlc,WAAS,EAAK,EACtCsF,EAAWC,KAEX,CAAE,WAAAwJ,EAAY,oBAAA2M,EAAqB,QAAAF,GAAYD,GAAsB,EAErErC,EAAW,MAAOiD,GAAW,CAE3B,GADJ,QAAQ,IAAIA,CAAM,EACd,QAAQ,QAAQ,IAAM,GAAM,OAChC,MAAMC,EAAoB,QACpBT,EAAW,IAAI,SACf9B,EAAWZ,EAAK,cAAcmD,CAAiB,EAC/CvC,GAAYA,EAAS,QAAU,GACxBA,EAAA,QAASD,GAAS,CACd+B,EAAA,OAAO,UAAW/B,EAAK,aAAa,CAAA,CAChD,EAGL,OAAOuC,EAAOC,CAAiB,EAE/BT,EAAS,OAAO,OAAQ,KAAK,UAAUQ,CAAM,CAAC,EAC1C,GAAA,CACM,MAAAE,EAAO,MAAMX,EAAoBC,CAAQ,EAC3CU,EAAK,MACI7W,GAAA,MAAAA,EAAA,QAAQ6W,EAAK,OAEtB7W,GAAA,MAAAA,EAAS,QAAQ,iDAGrByT,EAAK,YAAY,EACjBiD,EAAW,EAAI,QACVlV,EAAO,CACHxB,GAAA,MAAAA,EAAA,MAAMwB,EAAM,SACb,QAAA,MAAM,SAAUA,CAAK,CACjC,CACA,EAGE8K,EAAU,IAERvR,EAAA,IAACwR,GAAA,CACG,OAAO,UACP,MAAM,OACN,gBACK,MAAI,CAAA,SAAA,CAAA,yCAEA,KAAG,EAAA,EAAE,oCAAA,EACV,EAEJ,MAAO,CACHxR,EAAAA,IAAC8F,EAAO,CAAA,KAAK,UAAwB,QAAS,IAAMf,EAAS,WAAW,EAAG,SAAA,IAAA,EAAhD,SAE3B,EACA/E,MAAC8F,GAAkB,QAAS,IAAM6V,EAAW,EAAK,EAAG,eAAzC,MAEZ,CACJ,CAAA,CAAA,EAKZ,OAAI9K,QACQU,EAAQ,CAAA,CAAA,EAIfrR,EAAAA,KAAA,MAAA,CAAI,UAAWD,GAAO,UACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,GAAO,iBACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,IAAKlB,EAAa,CAAA,EACtBoB,EAAA,KAAA,MAAA,CAAI,UAAWD,GAAO,gBACnB,SAAA,CAAAD,EAAA,IAAC,MAAI,CAAA,UAAWC,GAAO,UAAW,SAAI,OAAA,EACrCC,EAAA,KAAA,MAAA,CAAI,UAAWD,GAAO,UAAW,SAAA,CAAA,QACxBD,EAAA,IAAA,OAAA,CAAK,UAAWC,GAAO,SAAU,SAAK,QAAA,EAAO,OAAA,EACvD,CAAA,EACJ,CAAA,EACJ,EACAD,EAAAA,IAAC0G,IAAK,SAAU8H,EAAY,QAASyM,EAAS,WAAU,GAAC,KAAK,OAAQ,CAAA,EACtEjb,EAAAA,IAAC,OAAI,UAAWC,GAAO,kBACnB,SAACD,EAAA,IAAAyY,GAAA,CAAuB,KAAAC,EAAY,SAAAC,CAAA,CAAoB,CAC5D,CAAA,CACJ,CAAA,CAAA,CAER,CCvFA,SAASoD,GAAkB/Q,EAAO,CAC9B,KAAM,CAACK,EAAU2D,CAAW,EAAIvP,EAAQ,SAAC,EAAK,EACxC,CAACuc,EAAWC,CAAY,EAAIxc,EAAQ,SAAC,CAAE,CAAA,EACvC,CAACyR,EAAOoB,CAAQ,EAAI7S,EAAQ,SAAC,CAAC,EAC9BiE,EAAqBC,SAAO,IAAI,EAEhCuY,EAAiBrY,EAAAA,YAAY,MAAO,CAAE,KAAA2O,EAAM,SAAAC,CAAU,EAAG,KAAO,CAClE,MAAMC,GAAUF,EAAO,GAAKC,EACtBE,EAAQF,EACdzD,EAAY,EAAI,EAChBtL,EAAmB,QAAU,IAAI,gBAEjC,GAAI,CACA,MAAMU,EAAW,MAAM,MAAM,GAAGC,CAAc,iCAAiCsO,CAAK,WAAWD,CAAM,GAAI,CACrG,OAAQ,MACR,QAAS,CAAE,cAAe,UAAUpO,EAAQ,CAAE,EAAI,EAClD,OAAQZ,EAAmB,QAAQ,MACnD,CAAa,EACD,GAAI,CAACU,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,yCAAyC,CAC1E,CACD,MAAMxD,EAAS,MAAMqI,EAAS,OAC9B,OAAA6X,EAAalgB,EAAO,SAAS,EAC7BuW,EAASvW,EAAO,KAAK,EACdA,CACV,OAAQ0K,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,+BAAgCA,CAAK,EAEjDA,EAClB,QAAkB,CACNuI,EAAY,EAAK,CACpB,CACJ,EAAE,CAAE,CAAA,EAECxK,EAAQX,EAAAA,YAAY,IAAM,CACxBH,EAAmB,SACnBA,EAAmB,QAAQ,OAElC,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,SAAA2H,EAAU,UAAA2Q,EAAW,MAAA9K,EAAO,MAAA1M,EAAO,eAAA0X,CAAc,CAC9D,CAEAH,GAAkB,UAAY,CAAE,ECnDhC,MAAMtb,GAAM,sCAEC0b,GAAW,IAAM,CAC1B,MAAM/G,EAAQ,eAAe,QAAQ3U,EAAG,EACxC,OAAO2U,EAAQ,KAAK,MAAMA,CAAK,EAAIgH,EACvC,EAEaC,GAAajH,GAAU,CAChC,eAAe,QAAQ3U,GAAK,KAAK,UAAU2U,CAAK,CAAC,CACrD,ECFagH,GAAkB,CAC3B,KAAM,EACN,SAAU,EACd,EAEA,SAASE,IAA2B,CAChC,KAAM,CAAE,SAAAjR,EAAU,eAAA6Q,EAAgB,UAAAF,EAAW,MAAA9K,EAAO,MAAA1M,CAAA,EAAUuX,KACxD,CAACQ,EAAUC,CAAW,EAAI/c,EAAAA,SAAS0c,GAAU,CAAA,EAEnDvc,EAAAA,UAAU,IACC,IAAM,CACH4E,GAAA,EAEX,CAAE,CAAA,EAEL5E,EAAAA,UAAU,IAAM,CACZiU,EAAU0I,CAAQ,CAAA,EACnB,CAACA,CAAQ,CAAC,EAEb,MAAM1I,EAAY,CAAC,CAAE,KAAArB,EAAM,SAAAC,CAAS,EAAI,CAAA,IAAO,CAC3C,QAAQ,IAAI,YAAa,CAAE,KAAAD,EAAM,SAAAC,CAAU,CAAA,EAE3CyJ,EAAe,CAAE,KAAA1J,EAAM,SAAAC,CAAU,CAAA,EAC5B,KAAM1W,GAAW,CAGJsgB,GAAA,CAAE,KAAA7J,EAAM,SAAAC,CAAA,CAAU,CAAA,CAC/B,EACA,MAAOhM,GAAU,CACN,QAAA,MAAM,4BAA6BA,CAAK,CAAA,CACnD,CAAA,EAGH0N,EAAqBsI,GAAkB,CAEzCD,EAAa5U,IACF,CAAE,GAAGA,EAAM,KAAM6U,EAAc,QAAS,SAAUA,EAAc,UAC1E,CAAA,EAGC/Z,EAAU,CACZ,CACI,MAAO,OACP,UAAW,CAAC,UAAW,WAAW,EAClC,IAAK,WACT,EACA,CACI,MAAO,OACP,UAAW,CAAC,UAAW,WAAW,EAClC,IAAK,YACL,OAAQ,CAACsR,EAAME,IACJgE,GAAMlE,CAAI,EAAE,OAAO,kBAAkB,CAEpD,EACA,CACI,MAAO,KACP,IAAK,aACL,OAAQ,CAACA,EAAME,IAAW,CACtB,KAAM,CAAE,SAAAlD,EAAU,SAAAC,GAAaiD,EAAO,QACtC,cACK,OACI,CAAA,SAAA,CAAAlD,EAAS,KACTC,EAAW,GAAK,MAAMA,CAAQ,IACnC,CAAA,CAAA,CAER,CACJ,EAEA,CACI,MAAO,KACP,UAAW,CAAC,UAAW,gBAAgB,EACvC,IAAK,iBACL,OAASjQ,GAEAhB,EAAA,IAAA+C,EAAA,SAAA,CAAA,SAAA/B,EAAS,IAAI,CAAC4B,EAASjE,IACpBuB,EAAA,KAAC,MACG,CAAA,SAAA,CAACF,EAAAA,IAAA0c,GAAA,CAAI,MAAM,OAAO,MAAO,CAAE,aAAc,KAAA,EACpC,SAAA9Z,EAAQ,IACb,CAAA,EACC5C,EAAA,IAAA0c,GAAA,CAAI,MAAM,OAAO,MAAO,CAAE,aAAc,KAAM,EAC1C,YAAG9Z,EAAQ,WAAW,MAAMA,EAAQ,SAAS,GAClD,EACC5C,EAAA,IAAA0c,GAAA,CAAI,MAAM,QAAS,WAAQ,YAAY,EACxC1c,EAAAA,IAAC0c,IAAI,MAAM,QAAS,WAAQ,cAAc,KAAK,IAAI,EAAE,EACpD1c,EAAA,IAAA0c,GAAA,CAAI,MAAM,QAAS,WAAQ,WAAW,CAAA,GATjC/d,CAUV,CACH,EACL,CAER,EACA,CACI,MAAO,KACP,UAAW,WACX,IAAK,WACL,OAAQ,CAACge,EAAUzI,KACJA,EAAO,QAAQ,GACtByI,GAAYA,EAAS,OAAS,GACdA,EAAS,KAAMC,GAAYA,EAAQ,YAAcpM,KAAc,EAAE,EAErExQ,EAAAA,IAAA6c,GAAA,CAAM,OAAO,UAAU,KAAK,KAAM,CAAA,EAG1C7c,EAAAA,IAAA6c,GAAA,CAAM,OAAO,aAAa,KAAK,KAAM,CAAA,EAErD,EACA,CACI,MAAO,KACP,IAAK,SACL,OAAQ,CAAC5I,EAAGC,IAAW,CACb,MAAA+C,EAAK/C,EAAO,QAAQ,GAEtB,OAAAlU,EAAAA,IAAC8c,GAAK,CAAA,GAAI7F,EACN,SAAAjX,EAAAA,IAAC8F,EAAO,CAAA,KAAK,OAAO,KAAK,QAAQ,SAAA,IAAA,CAEjC,CACJ,CAAA,CAER,CACJ,CAAA,EAIA,OAAA9F,EAAA,IAAC8C,GAAA,CACG,QAAAJ,EACA,WAAYsZ,EACZ,QAAS3Q,EACT,OAAS6I,GAAWA,EAAO,QAAQ,GACnC,WAAY,CACR,QAASqI,EAAS,KAClB,SAAUA,EAAS,SACnB,MAAArL,EACA,gBAAiB,GACjB,gBAAiB,GACjB,UAAYA,GAAU,SAASA,CAAK,SACpC,gBAAiB,CAAC,IAAK,KAAM,KAAM,IAAI,CAC3C,EACA,SAAUiD,EACV,SAAQ,EAAA,CAAA,CAGpB,CAEAmI,GAAyB,UAAY,CAAC,ECnJtC,SAASS,IAAqB,CAC1B,cACK,MACG,CAAA,SAAA,CAAA/c,EAAAA,IAAC,MAAG,SAAI,MAAA,CAAA,QACPgd,GAAoB,EAAA,CACzB,CAAA,CAAA,CAER,CAEAD,GAAmB,UAAY,CAAC,ECRhC,SAASE,GAAgBjS,EAAO,CAC5B,KAAM,CAACK,EAAU2D,CAAW,EAAIvP,EAAQ,SAAC,EAAK,EACxC,CAACF,EAAMC,CAAO,EAAIC,EAAQ,SAAC,CAAE,CAAA,EAC7BiE,EAAqBC,SAAO,IAAI,EAEhCkQ,EAAYhQ,cAAY,MAAOoT,GAAO,CACxCjI,EAAY,EAAI,EAChBtL,EAAmB,QAAU,IAAI,gBAEjC,GAAI,CACA,MAAMU,EAAW,MAAM,MAAM,GAAGC,CAAc,2BAA2B4S,CAAE,GAAI,CAC3E,OAAQ,MACR,QAAS,CAAE,cAAe,UAAU3S,EAAQ,CAAE,EAAI,EAClD,OAAQZ,EAAmB,QAAQ,MACnD,CAAa,EACD,GAAI,CAACU,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,+CAA+C,CAChF,CACD,MAAMxD,EAAS,MAAMqI,EAAS,OAC9B,OAAA5E,EAAQzD,EAAO,IAAI,EACZA,CACV,OAAQ0K,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,+BAAgCA,CAAK,EAEjDA,EAClB,QAAkB,CACNuI,EAAY,EAAK,CACpB,CACJ,EAAE,CAAE,CAAA,EAECxK,EAAQX,EAAAA,YAAY,IAAM,CACxBH,EAAmB,SACnBA,EAAmB,QAAQ,OAElC,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,SAAA2H,EAAU,KAAA9L,EAAM,UAAAsU,EAAW,MAAArP,CAAK,CAC7C,CAEAyY,GAAgB,UAAY,CAAE,EC5C9B,SAASC,GAAsBlS,EAAO,CAClC,KAAM,CAACwD,EAAYC,CAAa,EAAIhP,EAAQ,SAAC,EAAK,EAC5CiE,EAAqBC,SAAO,IAAI,EAEhCwZ,EAAsBtZ,EAAAA,YAAY,MAAOoT,EAAI9S,IAAQ,CACvDT,EAAmB,QAAU,IAAI,gBACjC,GAAI,CACA+K,EAAc,EAAI,EAClB,MAAMrK,EAAW,MAAM,MAAM,GAAGC,CAAc,2BAA2B4S,CAAE,GAAI,CAC3E,OAAQ,QACR,KAAM,KAAK,UAAU9S,CAAG,EACxB,QAAS,CAAE,cAAe,UAAUG,EAAQ,CAAE,EAAI,EAClD,OAAQZ,EAAmB,QAAQ,MACnD,CAAa,EACD,GAAI,CAACU,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,gDAAgD,CACjF,CAED,OADa,MAAM6E,EAAS,MAE/B,OAAQqC,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,gCAAiCA,CAAK,EAElDA,EAClB,QAAkB,CACNgI,EAAc,EAAK,CACtB,CACJ,EAAE,CAAE,CAAA,EAECjK,EAAQX,EAAAA,YAAY,IAAM,CACxBH,EAAmB,SACnBA,EAAmB,QAAQ,OAElC,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,WAAA8K,EAAY,oBAAA2O,EAAqB,MAAA3Y,EAC9C,CAEA0Y,GAAsB,UAAY,CAAE,ECtCpC,KAAM,CAAE,SAAAE,EAAa,EAAAzC,GAErB,SAAS0C,IAAmB,CAClB,KAAA,CAAE,GAAApG,GAAOqG,KACT,CAAE,SAAAjS,EAAU,KAAA9L,EAAM,UAAAsU,EAAW,MAAO0J,CAAA,EAAeN,KACnD,CAAE,WAAAzO,EAAY,oBAAA2O,EAAqB,MAAOK,CAAA,EAAgBN,KAC1D,CAAC/Y,EAAKsZ,CAAM,EAAIhe,EAAA,SAAS,CAAE,CAAA,EAC3B,CAACie,EAAeC,CAAgB,EAAIle,WAAS,EAAK,EAClD,CAACme,EAAYC,CAAa,EAAIpe,WAAS,EAAK,EAE5C,CAAE,QAAAwF,CAAA,EAAYC,GAAI,OAAO,EAE/B,GAAI,CAAC+R,EACM,OAAAjX,EAAA,IAAC,OAAI,SAAa,eAAA,CAAA,EAG7BJ,EAAAA,UAAU,KACNiU,EAAUoD,CAAE,EACL,IAAM,CACEsG,IACCC,GAAA,GAEjB,CAACvG,CAAE,CAAC,EAEPrX,EAAAA,UAAU,IAAM,CACRL,EAAK,SAEEke,EAAA,CACH,UAAWle,EAAK,QAAQ,UACxB,OAAQA,EAAK,QAAQ,MAAA,CACxB,CACL,EACD,CAACA,EAAK,OAAO,CAAC,EAEX,MAAAue,EAAYve,GACTA,EAGE,CACH,CACI,IAAK,IACL,MAAO,OACP,gBACK,MACI,CAAA,SAAA,CAAAA,EAAK,UAAW,IACjBS,EAAA,IAAC8F,EAAA,CACG,KAAK,OACL,KAAK,QACL,QAAS,IAAM6X,EAAkB/V,GAAS,CAACA,CAAI,EAC/C,WAAOmW,GAAa,EAAA,CAAA,CACvB,EACD7d,EAAA,KAAC2C,GAAA,CACG,KAAM6a,EACN,SAAU,IAAMC,EAAiB,EAAK,EACtC,OAAO,OACP,WAAW,SACX,KAAMK,EACN,SAAQ,GAER,SAAA,CAAAhe,EAAAA,IAAC,MAAG,SAAe,iBAAA,CAAA,EACnBA,EAAA,IAAC2a,GAAA,CACG,MAAOxW,EAAI,UACX,SAAW/D,GAAM,CACP,MAAA6d,EAAY7d,EAAE,OAAO,MAC3Bqd,EAAO,CAAE,GAAGtZ,EAAK,UAAA8Z,CAAW,CAAA,CAChC,CAAA,CACJ,CAAA,CAAA,CACJ,CAAA,EACJ,CAER,EACA,CACI,IAAK,IACL,MAAO,OACP,SAAU/F,GAAM3Y,EAAK,SAAS,EAAE,OAAO,qBAAqB,CAChE,EACA,CACI,IAAK,IACL,MAAO,MACP,SAAUA,EAAK,QACnB,EACA,CACI,IAAK,IACL,MAAO,MACP,SAAUA,EAAK,QACnB,EACA,CACI,IAAK,IACL,MAAO,KACP,KAAM,EACN,SACKS,EAAA,IAAAsD,EAAA,CAAM,UAAU,WACZ,SAAA/D,EAAK,eAAe,IAAI,CAACO,EAAMnB,WAEvB,MACG,CAAA,SAAA,CAAAqB,EAAA,IAAC0c,GAAI,CAAA,MAAM,OAAQ,SAAA5c,EAAK,KAAK,EAC5BE,EAAA,IAAA0c,GAAA,CAAI,MAAM,OAAQ,WAAK,YAAY,EACnC1c,EAAA,IAAA0c,GAAA,CAAI,MAAM,OAAQ,WAAK,UAAU,EACjC1c,EAAA,IAAA0c,GAAA,CAAI,MAAM,QAAS,WAAK,YAAY,EACpC1c,EAAA,IAAA0c,GAAA,CAAI,MAAM,QAAS,WAAK,WAAW,EACpC1c,EAAAA,IAAC0c,IAAI,MAAM,QAAS,WAAK,cAAc,KAAK,IAAI,EAAE,CAAA,CAAA,EAN5C/d,CAOV,CAEP,EACL,CAER,EACA,CACI,IAAK,IACL,MAAO,KACP,KAAM,EACN,gBACK,MACI,CAAA,SAAA,CAAAY,EAAK,OAAQ,IACdS,EAAA,IAAC8F,EAAA,CACG,KAAK,OACL,KAAK,QACL,QAAS,IAAM+X,EAAejW,GAAS,CAACA,CAAI,EAC5C,WAAOmW,GAAa,EAAA,CAAA,CACvB,EACD7d,EAAA,KAAC2C,GAAA,CACG,KAAM+a,EACN,SAAU,IAAMC,EAAc,EAAK,EACnC,KAAMG,EACN,OAAO,OACP,SAAQ,GAER,SAAA,CAAAhe,EAAAA,IAAC,MAAG,SAAW,aAAA,CAAA,EACfA,EAAA,IAACod,GAAA,CACG,MAAOjZ,EAAI,OACX,SAAW/D,GAAM,CACP,MAAA8d,EAAS9d,EAAE,OAAO,MACxBqd,EAAO,CAAE,GAAGtZ,EAAK,OAAA+Z,CAAQ,CAAA,CAC7B,EACA,YAAY,KACZ,SAAU,CACN,QAAS,CACb,CAAA,CACJ,CAAA,CAAA,CAQJ,CAAA,EACJ,CAER,CAAA,EAjHO,GAqHTF,EAAe,IAAM,CACvBb,EAAoBlG,EAAI,CAAE,UAAW9S,EAAI,UAAW,OAAQA,EAAI,MAAQ,CAAA,EACnE,KAAMga,GAAQ,CACXR,EAAiB,EAAK,EACtBE,EAAc,EAAK,EACfM,EAAI,OACIlZ,EAAA,QAAQkZ,EAAI,KAAK,EAE7BtK,EAAUoD,CAAE,CAAA,CACf,EACA,MAAO1S,GAAQ,CACJU,EAAA,MAAMV,EAAI,OAAO,CAAA,CAC5B,CAAA,EAGT,cACK,MACG,CAAA,SAAA,CAAAvE,EAAA,IAAC2Q,GAAQ,EAAA,SACR,KAAG,CAAA,SAAA,CAAA,QACK3Q,EAAAA,IAAC0G,GAAK,CAAA,SAAU2E,CAAU,CAAA,CAAA,EACnC,SACC,MACG,CAAA,SAAA,CAACrL,EAAAA,IAAAoe,GAAA,CAAa,MAAON,EAASve,EAAK,OAAO,EAAG,SAAQ,GAAC,OAAQ,CAAG,CAAA,QAChE,KAAG,EAAA,EACJS,EAAAA,IAACqe,GAAS,CAAA,YAAapH,CAAI,CAAA,CAAA,EAC/B,CACJ,CAAA,CAAA,CAER,CCzLA,SAASqH,IAAiB,CACtB,KAAM,CAACjT,EAAU2D,CAAW,EAAIvP,EAAQ,SAAC,EAAK,EACxC,CAACF,EAAMC,CAAO,EAAIC,EAAQ,SAAC,CAAE,CAAA,EAC7B,CAAC8e,EAAOC,CAAQ,EAAI/e,EAAQ,SAAC,CAAE,CAAA,EAC/BiE,EAAqBC,SAAO,IAAI,EAEhC8a,EAAa5a,cAAY,MAAOsP,GAAY,CAC9C,QAAQ,IAAI,kBAAmBA,CAAO,EACtCnE,EAAY,EAAI,EAChB,GAAI,CACAtL,EAAmB,QAAU,IAAI,gBACjC,MAAMU,EAAW,MAAM,MAAM,GAAGC,CAAc,mBAAmB8O,CAAO,GAAI,CACxE,OAAQ,MACR,QAAS,CAAE,cAAe,UAAU7O,EAAQ,CAAE,EAAI,EAClD,OAAQZ,EAAmB,QAAQ,MACnD,CAAa,EACD,GAAI,CAACU,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,+CAA+C,CAChF,CACD,MAAMA,EAAO,MAAM6E,EAAS,OAC5B,OAAA5E,EAAQD,CAAI,EACZ,QAAQ,IAAI,QAASA,EAAK,KAAK,EAC/Bif,EAASjf,EAAK,KAAK,EACZA,CACV,OAAQkH,EAAO,CACZ,MAAIA,EAAM,OAAS,cACf,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,+BAAgCA,CAAK,EAEjDA,EAClB,QAAkB,CACNuI,EAAY,EAAK,CACpB,CACJ,EAAE,CAAE,CAAA,EAECxK,EAAQX,EAAAA,YAAY,IAAM,CACxBH,EAAmB,SACnBA,EAAmB,QAAQ,OAElC,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,SAAA2H,EAAU,KAAA9L,EAAM,MAAAgf,EAAO,WAAAE,EAAY,MAAAja,CAAK,CACrD,CC9CO,MAAMka,GAAY,CACrB,MAAO,EACP,OAAQ,CACZ,EAEA,SAASC,IAAiB,CACtB,KAAM,CAACnQ,EAAYC,CAAa,EAAIhP,EAAQ,SAAC,EAAK,EAC5C,CAACF,EAAMC,CAAO,EAAIC,EAAQ,SAAA,EAC1BwP,EAAWtL,EAAAA,SAEXib,EAAc/a,cAAY,MAAOM,GAAQ,CAC3CsK,EAAc,EAAI,EAClB,GAAI,CACA,QAAQ,IAAItK,CAAG,EACf8K,EAAS,QAAU,IAAI,gBACvB,MAAM7K,EAAW,MAAM,MAAM,GAAGC,CAAc,iBAAkB,CAC5D,OAAQ,OACR,QAAS,CACL,eAAgB,mBAChB,cAAe,UAAUC,EAAQ,CAAE,EACtC,EACD,KAAM,KAAK,UAAUH,CAAG,EACxB,OAAQ8K,EAAS,QAAQ,MACzC,CAAa,EACD,GAAI,CAAC7K,EAAS,GAAI,CACd,MAAM7E,EAAO,MAAM6E,EAAS,OAC5B,MAAM,IAAI,MAAM7E,EAAK,OAAS,wCAAwC,CACzE,CACD,MAAMA,EAAO,MAAM6E,EAAS,OAC5B,OAAA5E,EAAQD,CAAI,EACLA,CACV,OAAQgF,EAAK,CACV,MAAIA,EAAI,OAAS,cACb,QAAQ,IAAI,qBAAqB,EAC3B,IAAI,MAAM,qBAAqB,IAErC,QAAQ,MAAM,wBAAyBA,CAAG,EAExCA,EAClB,QAAkB,CACNkK,EAAc,EAAK,CACtB,CACJ,EAAE,CAAE,CAAA,EAECjK,EAAQX,EAAAA,YAAY,IAAM,CACxBoL,EAAS,SACTA,EAAS,QAAQ,OAExB,EAAE,CAAE,CAAA,EAEL,MAAO,CAAE,WAAAT,EAAY,KAAAjP,EAAM,YAAAqf,EAAa,MAAApa,CAAK,CACjD,CC5CA,SAASqa,GAAgB7T,EAAO,OAC5B,KAAM,CAAE,GAAImI,CAAQ,EAAImK,GAAU,EAC5B,CAAE,SAAAjS,EAAU,WAAAoT,EAAY,MAAAF,EAAO,MAAOhB,CAAA,EAAee,KACrD,CAAE,WAAA9P,EAAY,YAAAoQ,EAAa,MAAOE,CAAA,EAAeH,KAEvD,GAAI,CAACxL,EACM,OAAAnT,EAAA,IAAC,OAAI,SAAkB,oBAAA,CAAA,EAGlCJ,EAAAA,UAAU,KACFuT,GACAsL,EAAWtL,CAAO,EAEf,IAAM,CACEoK,IACAuB,GAAA,GAEhB,CAAC3L,CAAO,CAAC,EAEN,MAAA4L,EAAkBpe,GAAQ,CAC5B,GAAI,CAACA,EAAY,MAAA,IACjB,MAAMC,EAAaC,EAAMF,EAAK,eAAgB,IAAI,IAAM,EACxD,OAAO9D,GAAO+D,EAAY,eAAgB,CAAE,OAAQ/B,GAAM,CAAA,EAG9D,GAAIwM,EACO,OAAArL,EAAA,IAAC,OAAI,SAAU,YAAA,CAAA,EAGpB,MAAAgf,EAAeC,GAAc,CAC/B,IAAIC,EAAM,GACV,OAAQD,EAAW,CACf,KAAKP,GAAU,MACLQ,EAAA,WACN,MACJ,KAAKR,GAAU,OACLQ,EAAA,WACN,MACJ,QACY,QAAA,MAAM,sBAAuBD,CAAS,EAC9C,MACR,CACI,GAAA,QAAQC,CAAG,IAAM,GACjB,OAEJ,MAAM/a,EAAM,CACR,cAAeoa,EAAM,cACrB,QAASA,EAAM,QACf,UAAAU,EACA,WAAYV,EAAM,UAAA,EAEtBK,EAAYza,CAAG,EACV,KAAM5E,GAAS,CACZ,MAAMA,EAAK,KAAK,CAAA,CACnB,EACA,MAAOkH,GAAU,CACd,MAAMA,EAAM,OAAO,CAAA,CACtB,CAAA,EAGT,cACK,MACG,CAAA,SAAA,CAAAzG,EAAA,IAAC2Q,GAAQ,EAAA,QACR,KAAG,EAAA,EACH3Q,EAAA,IAAA0G,GAAA,CAAK,SAAU8H,EAAY,WAAU,GAAC,EACvCtO,EAAAA,KAACke,GAAa,CAAA,SAAQ,GAClB,SAAA,CAAApe,MAACoe,GAAa,KAAb,CAAkB,MAAM,WAAY,WAAM,QAAQ,QAClDA,GAAa,KAAb,CAAkB,MAAM,MAAO,WAAM,IAAI,QACzCA,GAAa,KAAb,CAAkB,MAAM,WAAY,WAAM,QAAQ,QAClDA,GAAa,KAAb,CAAkB,MAAM,KAAM,WAAM,kBAAkB,QACtDA,GAAa,KAAb,CAAkB,MAAM,KAAM,WAAM,QAAQ,QAC5CA,GAAa,KAAb,CAAkB,MAAM,KAAM,WAAM,UAAU,EAC9Cle,EAAA,KAAAke,GAAa,KAAb,CAAkB,MAAM,KACrB,SAAA,CAAApe,EAAA,IAACkQ,GAAoB,EAAA,EAAE,IAAE6O,EAAeR,EAAM,WAAW,EAAE,MAAIA,EAAM,cAAA,EACzE,EACCre,EAAA,KAAAke,GAAa,KAAb,CAAkB,MAAM,KACrB,SAAA,CAAApe,EAAA,IAACkQ,GAAoB,EAAA,EAAE,IAAE6O,EAAeR,EAAM,WAAW,EAAE,MAAIA,EAAM,cAAA,EACzE,EACCre,EAAA,KAAAke,GAAa,KAAb,CAAkB,MAAM,KACpB,SAAA,CAAAG,EAAM,UAAY,MAAM,IAAEA,EAAM,UAAA,EACrC,SACCH,GAAa,KAAb,CAAkB,MAAM,KAAK,KAAM,EAChC,SAAA,CAAApe,EAAA,IAACmf,GAAa,EAAA,EAAE,KAAE7Z,EAAAiZ,EAAM,aAAN,YAAAjZ,EAAkB,KAAK,MAAM,SAAOiZ,EAAM,SAAS,SAAOA,EAAM,SAAS,GAAA,EAC/F,CAAA,EACJ,QACC,KAAG,EAAA,QACHjK,GAAM,CAAA,QAASC,GAAc,KAAK,UAAU,SAAQ,GAAC,QACrD,KAAG,EAAA,EACHrU,EAAA,KAAAoD,EAAA,CAAM,UAAU,aAAa,MAAM,QAChC,SAAA,CAAAtD,EAAA,IAAC8F,EAAO,CAAA,KAAK,OAAO,KAAK,QAAQ,QAAS,IAAMkZ,EAAYN,GAAU,KAAK,EAAG,SAAUlQ,EAAY,SAEpG,OAAA,EACCxO,EAAA,IAAA8F,EAAA,CAAO,KAAK,OAAO,KAAK,QAAQ,QAAS,IAAMkZ,EAAYN,GAAU,MAAM,EAAG,SAAUlQ,EAAY,SAErG,OAAA,CAAA,EACJ,CACJ,CAAA,CAAA,CAER,sjBCtGA,SAAS4Q,IAAkB,CACvB,OACKlf,EAAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,UACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,iBACnB,SAAA,CAACD,EAAAA,IAAA,MAAA,CAAI,IAAKlB,EAAa,CAAA,EACtBoB,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,gBACnB,SAAA,CAAAD,EAAA,IAAC,MAAI,CAAA,UAAWC,EAAO,UAAW,SAAI,OAAA,EACrCC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,UAAW,SAAA,CAAA,QACxBD,EAAA,IAAA,OAAA,CAAK,UAAWC,EAAO,SAAU,SAAK,QAAA,EAAO,OAAA,EACvD,CAAA,EACJ,CAAA,EACJ,EACCC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,kBACnB,SAAA,CAACD,EAAAA,IAAA,UAAA,CAAQ,UAAWC,EAAO,aACvB,eAAC,MAAI,CAAA,UAAWA,EAAO,KACnB,SAAAD,MAAC,UAAO,UAAWC,EAAO,QAAS,KAAK,SAAS,gBAAe,OAAQ,SAAA,SAAA,CAExE,EACJ,CACJ,CAAA,EACCC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,uBACnB,SAAA,CAACC,EAAA,KAAA,MAAA,CAAI,UAAWD,EAAO,gBACnB,SAAA,CAAAD,EAAA,IAAC,MAAI,CAAA,UAAWC,EAAO,MAAO,SAAc,iBAAA,EAC3CD,EAAA,IAAA8c,GAAA,CAAK,GAAG,6BAA6B,SAAoB,uBAAA,CAAA,EAC9D,QACC3E,GAAY,EAAA,CAAA,EACjB,CAAA,EACJ,CACJ,CAAA,CAAA,CAER,CCxBA,SAASkH,IAAQ,CACb,OACKrf,EAAA,IAAAsf,GAAA,CACG,SAACpf,EAAAA,KAAAqf,EAAA,CAAM,KAAK,IACR,SAAA,CAACvf,EAAA,IAAAuf,EAAA,CAAM,KAAK,iBACR,SAACvf,EAAAA,IAAAuf,EAAA,CAAM,MAAK,GAAC,QAASvf,EAAA,IAACof,GAAgB,CAAA,CAAA,CAAI,CAAA,EAC/C,EACAlf,EAAAA,KAACqf,EAAM,CAAA,KAAK,QACR,SAAA,CAACvf,EAAAA,IAAAuf,EAAA,CAAM,MAAK,GAAC,MAAK,GAAC,QAASvf,EAAA,IAAC0b,KAAgB,CAAI,CAAA,EACjD1b,EAAAA,IAACuf,GAAM,KAAK,YAAY,MAAK,GAAC,QAAUvf,EAAA,IAAA+c,GAAA,CAAA,CAAmB,CAAI,CAAA,EAC/D/c,EAAAA,IAACuf,GAAM,KAAK,gBAAgB,MAAK,GAAC,QAAUvf,EAAA,IAAAqd,GAAA,CAAA,CAAiB,CAAI,CAAA,CAAA,EACrE,EACAnd,EAAAA,KAACqf,EAAM,CAAA,KAAK,QACR,SAAA,CAAAvf,EAAA,IAACuf,EAAA,CACG,MAAK,GACL,QACIvf,EAAAA,IAACwf,GACG,CAAA,SAAAxf,EAAAA,IAAC+K,IAAc,CAAA,EACnB,CAAA,CAER,EACA/K,EAAAA,IAACuf,GAAM,KAAK,SAAS,MAAK,GAAC,QAAUvf,EAAA,IAAAqU,GAAA,CAAA,CAAc,CAAI,CAAA,EACvDrU,EAAAA,IAACuf,GAAM,KAAK,aAAa,MAAK,GAAC,QAAUvf,EAAA,IAAA6e,GAAA,CAAA,CAAgB,CAAI,CAAA,EAC7D7e,EAAAA,IAACuf,GAAM,KAAK,OAAO,MAAK,GAAC,QAAUvf,EAAA,IAAAoQ,GAAA,CAAA,CAAe,CAAI,CAAA,CAAA,EAC1D,EACApQ,EAAA,IAACuf,EAAA,CACG,KAAK,IACL,cAAU/N,GAAO,CAAA,OAAO,MAAM,MAAM,MAAM,SAAS,8CAA8C,CAAA,CACrG,CAAA,CACJ,CAAA,CACJ,CAAA,CAER","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]}