touchstudy-core 0.1.12 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/redux/commons/action.ts","../src/utils/isLocalHost.ts","../src/utils/constants.ts","../src/utils/utcToLocalTime.ts","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/configs/api.ts","../src/containers/Login/apiClient/index.ts","../src/containers/Login/configs/constants.ts","../src/utils/useGoogleSignOut.ts","../src/containers/Login/views/block/BlockLogin.tsx","../src/utils/getAccessToken.ts","../src/containers/Login/hooks/useLogin.ts","../src/containers/Login/views/Login.tsx","../node_modules/redux-logger/dist/redux-logger.js","../node_modules/redux/dist/redux.legacy-esm.js","../src/redux/commons/reducer.ts","../src/rootReducer.ts","../src/store.ts","../src/components/Commons/NotFound.tsx","../src/components/Loading/Loading.tsx","../src/services/accountService.ts","../src/layouts/LayoutContext.tsx","../src/components/Dialogs/ConfirmDialog.tsx","../src/components/Dialogs/CommonDialog.tsx","../src/components/Alerts/CommonAlert.tsx","../src/utils/formatTime.ts","../src/utils/diffFromNow.ts","../src/components/Paginations/CustomPagination.tsx","../src/utils/types.ts","../src/i18n.ts","../src/configs/constants.ts","../src/utils/useLanguage.ts","../src/layouts/TheLanguageDropdown.tsx","../src/utils/minutesToTimeSpan.ts","../src/utils/toISOString.ts","../src/utils/canAccessRoute.ts","../src/components/Selects/CustomSelect.tsx","../src/components/Chats/configs/types.ts","../src/components/Chats/ChatRightItem.tsx","../src/components/Chats/ChatLeftItem.tsx","../src/components/Chats/ChatItem.tsx","../src/components/Chats/ChatList.tsx","../src/components/Chats/InputChat.tsx","../src/components/Chats/ChatHeader.tsx","../src/components/Chats/ChatContainer.tsx","../src/components/Chats/apiClient/conversationService.ts","../src/components/Chats/configs/constants.ts","../src/components/Chats/apiClient/examService.ts","../src/components/Chats/hooks/useExamList.ts","../src/components/Chats/hooks/useMessageList.ts","../src/components/Chats/hooks/useChatContainer.ts","../src/components/Chats/apiClient/studentStatusService.ts","../src/components/Chats/hooks/useConversationList.ts","../src/components/Chats/hooks/usePusherConversation.ts","../src/components/Selects/CustomCreatable.tsx","../src/components/Selects/CustomAsyncSelect.tsx","../src/containers/Exams/configs/constants.ts","../src/containers/Exams/components/QuestionView.tsx","../src/containers/Exams/components/ArticleGroupView.tsx","../src/containers/Exams/hooks/useExamDetailView.ts","../src/containers/Exams/views/ExamDetailView.tsx","../src/index.tsx"],"sourcesContent":["import { createAction } from \"@reduxjs/toolkit\"\n\nexport const setLoading = createAction<boolean | undefined>(\"common/setLoading\")\n\nexport const setAlert = createAction<any>(\"common/setAlert\")\n\nexport const setUser = createAction<any>(\"common/setUser\")\n\nexport const setLanguage = createAction<string>(\"common/setLanguage\")\n\nexport const reset = createAction<undefined>(\"common/reset\")\n","const isLocalHost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n)\n\nexport default isLocalHost\n","import isLocalHost from \"./isLocalHost\";\n\nexport const GOOGLE_RECAPTCHA_KEY = \"6LfNtLUaAAAAAL24lbBV11jS-gBtt1mhtxb4NXs0\"\n\nexport const GOOGLE_CLIENT_ID = \"64118819726-0qlur4qjrs9jbuu6rnoa0u91g680lmpg.apps.googleusercontent.com\"\n\nexport const GOOGLE_RECAPTCHA_ID = \"6LfNtLUaAAAAAL24lbBV11jS-gBtt1mhtxb4NXs0\";\n\nexport const GOOGLE_RECAPTCHA_SECRET = \"6LfNtLUaAAAAAC7zhleGzO61FgFwGF0H5FAsKYux\";\n\nexport const ACCESS_TOKEN = \"ACCESS_TOKEN\"\n\nexport const DATE_MIN_VALUE = \"0001-01-01T00:00:00+00:00\"\nexport const DATE_TIME_MIN_VALUE = \"0001-01-01T00:00:00\"\n\nexport const BASE_URL = (() => {\n return isLocalHost ? \"https://localhost:7045\" : \"https://api.studypeak.io\"\n})()\n\nexport const PUSHER_CONFIG = {\n cluster: \"ap1\",\n key: \"9018c77328885a14150b\"\n}\n\nexport const EXAM_CHANNEL = \"presence-exam-channel\"\nexport const EXAM_STUDENT_CHANNEL = \"EXAM-CHANNEL-{examCode}-STUDENT-{studentId}\"\n\n\nexport const getAccessToken = () => {\n try {\n return localStorage.getItem(ACCESS_TOKEN);\n } catch (err) {\n return null;\n }\n}\n\nexport const encodeParams = (params: any) => {\n return Object.keys(params)\n .filter(key => params[key] || params[key] === 0 || params[key] === false)\n .map(key => {\n if (Array.isArray(params[key])) {\n return params[key].map((i: any) => `${encodeURIComponent(key)}=${encodeURIComponent(i)}`).join('&')\n }\n return `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`\n }).join('&')\n}\n","import moment from \"moment\"\nimport { DATE_MIN_VALUE, DATE_TIME_MIN_VALUE } from \"../utils/constants\"\n\nexport default (time?: string, FORMAT?: string) => {\n if (time === DATE_MIN_VALUE || time === DATE_TIME_MIN_VALUE) return \"\"\n try {\n return moment.utc(time).local().format(FORMAT || \"yyyy-MM-DD\");\n } catch {\n return \"\"\n }\n}\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import axios, { AxiosInstance } from \"axios\"\nimport { ACCESS_TOKEN, BASE_URL, getAccessToken, encodeParams } from \"../utils/constants\"\nimport moment from \"moment\"\n\nexport const api: AxiosInstance = axios.create({\n baseURL: BASE_URL,\n timeout: 0,\n headers: {\n \"Content-Type\": \"application/json\"\n },\n paramsSerializer: params => {\n return encodeParams(params)\n }\n})\n\nexport const apiUpload: AxiosInstance = axios.create({\n baseURL: BASE_URL,\n timeout: 60000,\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n})\n;[api, apiUpload].forEach(i =>\n i.interceptors.request.use(\n (config: any) => {\n const token = getAccessToken()\n if (token) {\n config.headers.Authorization = `Bearer ${token}`\n localStorage.setItem(\"LAST_TIME_REQUETST\", moment().utc().format(\"YYYY-MM-DD HH:mm:ss\"))\n }\n return config\n },\n (error: any) => Promise.reject(error)\n )\n)\n;[api, apiUpload].forEach(i =>\n i.interceptors.response.use(\n response => {\n return response\n },\n error => {\n console.log({ error })\n if (error.response?.status === 401) {\n window.location.href = \"/login\"\n }\n if (error.response?.status == 403) {\n localStorage.removeItem(ACCESS_TOKEN)\n localStorage.removeItem(\"USER_EMAIL\")\n window.location.href = \"/login\"\n }\n return Promise.reject(error)\n }\n )\n)\n","import { api } from \"../../../configs/api\"\nimport { BASE_URL } from \"../../../utils/constants\"\n\nconst ACCOUNT_URL = `${BASE_URL}/api/account`\n\nexport const getGoogleClientId = () =>\n api.get(`${ACCOUNT_URL}/send-google`)\n\nexport const apiLoginGoogle = (body: any, role: string) => api.post(`${BASE_URL}/api/auth/${role}/login`, body)\n\n","export enum AuthenticationMessage {\n NotAllowedToRegister = \"NotAllowedToRegister\",\n InvalidGoogleToken = \"InvalidGoogleToken\"\n}\n\nexport enum Role {\n Student = \"Student\",\n Teacher = \"Teacher\",\n Admin = \"Admin\"\n}","import { useDispatch } from \"react-redux\";\nimport { ACCESS_TOKEN, GOOGLE_CLIENT_ID } from \"./constants\";\nimport { useGoogleLogout } from \"@leecheuk/react-google-login\"\nimport { reset } from \"../redux/commons/action\";\n\ninterface Props{\n onLogoutSuccess?: () => void\n onFailure?: () => void\n onNavigate: Function\n}\nconst useGoogleSignOut = (props: Props) => {\n const dispatch = useDispatch()\n const {\n onLogoutSuccess,\n onFailure\n } = props\n\n\n const handleLogoutSuccess = () => {\n onLogoutSuccess?.()\n }\n\n const handleLogoutFailure = () => {\n onFailure?.()\n }\n\n const { signOut, loaded } = useGoogleLogout({\n clientId: GOOGLE_CLIENT_ID,\n onLogoutSuccess: handleLogoutSuccess,\n onFailure: handleLogoutFailure,\n })\n\n const handleSignOut = () => {\n localStorage.removeItem(\"USER_INFORMATION\")\n localStorage.removeItem(ACCESS_TOKEN);\n try {\n signOut()\n } catch (error) {\n console.log({error});\n }\n dispatch(reset())\n window.location.href = \"/login\"\n }\n return {\n handleSignOut, loaded\n }\n}\n\nexport default useGoogleSignOut","import React, { FC } from \"react\"\nimport { Col, Form, Row } from \"reactstrap\"\nimport styles from \"../../../../styles.module.scss\"\n\nimport { ACCESS_TOKEN, GOOGLE_CLIENT_ID } from \"../../../../utils/constants\"\nimport { Formik } from \"formik\"\nimport * as yup from \"yup\"\n// import { GoogleReCaptcha, useGoogleReCaptcha } from \"react-google-recaptcha-v3\"\nimport GoogleLogin from \"@leecheuk/react-google-login\"\nimport { INavigateProps } from \"../../../../utils/types\"\nimport { apiLoginGoogle } from \"../../apiClient/index\"\nimport { useDispatch } from \"react-redux\"\nimport { setLoading } from \"../../../../redux/commons/action\"\nimport { AuthenticationMessage, Role } from \"../../configs/constants\"\nimport useGoogleSignOut from \"../../../../utils/useGoogleSignOut\"\n\ninterface Props {\n defaultInfo?: any\n role?: Role\n}\n\nconst ERROR_MESSAGE = \"Login fail!\"\n\nconst schema = yup.object({\n email: yup.string().email(\"Email is invalid\").required(\"Email is required\"),\n password: yup.string().required(\"Password is required\"),\n rememberMe: yup.boolean()\n})\n\nconst BlockLogin: FC<Props & INavigateProps> = ({\n defaultInfo,\n onNavigate,\n role = Role.Student\n}) => {\n const dispatch = useDispatch()\n // const { executeRecaptcha, } = useGoogleReCaptcha()\n const {\n handleSignOut\n } = useGoogleSignOut({onNavigate})\n // const clickHandler = useCallback(async () => {\n // if (!executeRecaptcha) {\n // return\n // }\n // try {\n // const result = await executeRecaptcha(\"login\")\n // return result\n // } catch (error) {\n // console.log({error});\n // }\n // return\n // }, [executeRecaptcha])\n\n // const handleVerify = useCallback(() => {}, [])\n const onSuccessGoogle = async (res: any) => {\n if (!!res?.accessToken) {\n let {\n email,\n imageUrl,\n name // fullName\n } = res.profileObj\n let accessToken = res.tokenObj.id_token\n let googleId = res.googleId\n\n const infoLogin = {\n imageUrl: imageUrl,\n fullName: name,\n email: email,\n token: accessToken,\n googleId: googleId\n }\n dispatch(setLoading(true))\n try {\n const res1 = await apiLoginGoogle(infoLogin, role)\n const isFirstLogin = res1.data.isFirstLogin\n const tokenJWT = res1.data.token\n localStorage.setItem(\n \"USER_INFORMATION\",\n JSON.stringify(infoLogin)\n )\n \n localStorage.setItem(ACCESS_TOKEN, tokenJWT)\n if (role === Role.Student && isFirstLogin) {\n onNavigate(\"/register/info\")\n }else{\n onNavigate(\"/\")\n }\n } catch (error) {\n let message = undefined\n const type = error?.response?.data?.type\n \n if(type === AuthenticationMessage.NotAllowedToRegister){\n alert(\"가입 권한이 없는 계정입니다. 관리자에게 문의하세요.\")\n }\n else if(type){\n message = error?.response?.data?.message || ERROR_MESSAGE\n }else{\n message = error?.response?.data || ERROR_MESSAGE\n }\n message && alert(message)\n handleSignOut()\n }\n dispatch(setLoading(false))\n }\n }\n\n const onFailureGoogle = (err: any) => {\n console.log(\"error: login google\", err)\n onNavigate(\"/login\")\n }\n return (\n <Formik\n initialValues={defaultInfo}\n validationSchema={schema}\n onSubmit={() => {}}\n >\n {formikProps => {\n const { handleSubmit } = formikProps\n\n return (\n <Row className={`${styles[\"box-login\"]}`}>\n <Col className=\"p-0 d-flex justify-content-center\">\n <Form\n className={`${styles[\"block-login\"]}`}\n onSubmit={handleSubmit}\n >\n <div className={`${styles[\"block-form\"]}`}>\n <img\n src={\"/images/logo.jpeg\"}\n className={`${styles[\"img-login-rectangle\"]}`}\n />\n {/* <FormGroup>\n <GoogleReCaptcha\n action=\"login\"\n onVerify={handleVerify}\n />\n </FormGroup> */}\n <Col className=\"p-0 mt-1 mb-4\">\n <GoogleLogin\n clientId={GOOGLE_CLIENT_ID}\n buttonText=\"Google 계정으로 로그인\"\n onSuccess={onSuccessGoogle}\n onFailure={onFailureGoogle}\n cookiePolicy={\"single_host_origin\"}\n className={`${styles[\"btn-login-google\"]}`}\n isSignedIn={true}\n />\n </Col>\n </div>\n </Form>\n </Col>\n </Row>\n )\n }}\n </Formik>\n )\n}\n\nexport default BlockLogin\n","import { ACCESS_TOKEN } from \"./constants\"\n\nexport default () => {\n try {\n return localStorage.getItem(ACCESS_TOKEN);\n } catch (err) {\n return null;\n }\n}","import { useCallback, useEffect, useState } from \"react\"\nimport { gapi } from 'gapi-script';\nimport { GOOGLE_CLIENT_ID } from \"../../../utils/constants\"\nimport getAccessToken from \"../../../utils/getAccessToken\";\n\ntype LoginInfo = {\n email: string\n password: string\n captcha: string\n rememberMe: boolean\n}\n\nconst defaultInfo: LoginInfo = {\n email: \"\",\n password: \"\",\n captcha: \"\",\n rememberMe: false\n}\n\nconst useLogin = (onNavigate: Function) => {\n const [openLogin, setOpenLogin] = useState<boolean>(false)\n const [infoUser, setInfoUser] = useState<any>();\n const toggle = useCallback(() => {\n setOpenLogin(!openLogin)\n }, [openLogin])\n const [isShowPassword, setIsShowPassword] = useState<boolean>(false)\n\n useEffect(() => {\n const start = () => {\n gapi.client.init({\n clientId: GOOGLE_CLIENT_ID,\n scope: 'email',\n });\n }\n \n !!gapi && gapi.load('client:auth2', start);\n }, [gapi]);\n\n useEffect(() => {\n const token = getAccessToken()\n if(!!token) onNavigate(\"/\")\n }, [])\n\n return {\n defaultInfo,\n openLogin,\n toggle,\n isShowPassword,\n setIsShowPassword,\n infoUser,\n setInfoUser\n }\n}\n\nexport default useLogin\n","import React, { FC } from \"react\"\n// import { GoogleReCaptchaProvider } from \"react-google-recaptcha-v3\"\nimport { Col, Row } from \"reactstrap\"\n\n// import { GOOGLE_RECAPTCHA_ID } from \"../../../utils/constants\"\nimport BlockLogin from \"./block/BlockLogin\"\nimport useLogin from \"../hooks/useLogin\"\nimport styles from \"../../../styles.module.scss\"\nimport { INavigateProps } from \"../../../utils/types\"\nimport { Role } from \"../configs/constants\"\n\ninterface Props{\n role?: Role\n}\nconst Login: FC<INavigateProps & Props> = ({ onNavigate, role }) => {\n const { defaultInfo } = useLogin(onNavigate)\n return (\n <div className={`${styles[\"login\"]} container-fluid font-family-lato`}>\n <Row className={\"h-100\"}>\n <Col\n lg={12}\n md={12}\n xs={12}\n className=\"d-flex justify-content-center h-100 align-items-center\"\n >\n {/* <GoogleReCaptchaProvider\n useRecaptchaNet\n reCaptchaKey={GOOGLE_RECAPTCHA_ID}\n scriptProps={{\n async: true,\n defer: true,\n appendTo: \"body\"\n }}\n > */}\n <BlockLogin\n defaultInfo={defaultInfo}\n onNavigate={onNavigate}\n role={role}\n />\n {/* </GoogleReCaptchaProvider> */}\n </Col>\n </Row>\n </div>\n )\n}\n\nexport default Login\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e.reduxLogger=e.reduxLogger||{})}(this,function(e){\"use strict\";function t(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}function r(e,t){Object.defineProperty(this,\"kind\",{value:e,enumerable:!0}),t&&t.length&&Object.defineProperty(this,\"path\",{value:t,enumerable:!0})}function n(e,t,r){n.super_.call(this,\"E\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0}),Object.defineProperty(this,\"rhs\",{value:r,enumerable:!0})}function o(e,t){o.super_.call(this,\"N\",e),Object.defineProperty(this,\"rhs\",{value:t,enumerable:!0})}function i(e,t){i.super_.call(this,\"D\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0})}function a(e,t,r){a.super_.call(this,\"A\",e),Object.defineProperty(this,\"index\",{value:t,enumerable:!0}),Object.defineProperty(this,\"item\",{value:r,enumerable:!0})}function f(e,t,r){var n=e.slice((r||t)+1||e.length);return e.length=t<0?e.length+t:t,e.push.apply(e,n),e}function u(e){var t=\"undefined\"==typeof e?\"undefined\":N(e);return\"object\"!==t?t:e===Math?\"math\":null===e?\"null\":Array.isArray(e)?\"array\":\"[object Date]\"===Object.prototype.toString.call(e)?\"date\":\"function\"==typeof e.toString&&/^\\/.*\\//.test(e.toString())?\"regexp\":\"object\"}function l(e,t,r,c,s,d,p){s=s||[],p=p||[];var g=s.slice(0);if(\"undefined\"!=typeof d){if(c){if(\"function\"==typeof c&&c(g,d))return;if(\"object\"===(\"undefined\"==typeof c?\"undefined\":N(c))){if(c.prefilter&&c.prefilter(g,d))return;if(c.normalize){var h=c.normalize(g,d,e,t);h&&(e=h[0],t=h[1])}}}g.push(d)}\"regexp\"===u(e)&&\"regexp\"===u(t)&&(e=e.toString(),t=t.toString());var y=\"undefined\"==typeof e?\"undefined\":N(e),v=\"undefined\"==typeof t?\"undefined\":N(t),b=\"undefined\"!==y||p&&p[p.length-1].lhs&&p[p.length-1].lhs.hasOwnProperty(d),m=\"undefined\"!==v||p&&p[p.length-1].rhs&&p[p.length-1].rhs.hasOwnProperty(d);if(!b&&m)r(new o(g,t));else if(!m&&b)r(new i(g,e));else if(u(e)!==u(t))r(new n(g,e,t));else if(\"date\"===u(e)&&e-t!==0)r(new n(g,e,t));else if(\"object\"===y&&null!==e&&null!==t)if(p.filter(function(t){return t.lhs===e}).length)e!==t&&r(new n(g,e,t));else{if(p.push({lhs:e,rhs:t}),Array.isArray(e)){var w;e.length;for(w=0;w<e.length;w++)w>=t.length?r(new a(g,w,new i(void 0,e[w]))):l(e[w],t[w],r,c,g,w,p);for(;w<t.length;)r(new a(g,w,new o(void 0,t[w++])))}else{var x=Object.keys(e),S=Object.keys(t);x.forEach(function(n,o){var i=S.indexOf(n);i>=0?(l(e[n],t[n],r,c,g,n,p),S=f(S,i)):l(e[n],void 0,r,c,g,n,p)}),S.forEach(function(e){l(void 0,t[e],r,c,g,e,p)})}p.length=p.length-1}else e!==t&&(\"number\"===y&&isNaN(e)&&isNaN(t)||r(new n(g,e,t)))}function c(e,t,r,n){return n=n||[],l(e,t,function(e){e&&n.push(e)},r),n.length?n:void 0}function s(e,t,r){if(r.path&&r.path.length){var n,o=e[t],i=r.path.length-1;for(n=0;n<i;n++)o=o[r.path[n]];switch(r.kind){case\"A\":s(o[r.path[n]],r.index,r.item);break;case\"D\":delete o[r.path[n]];break;case\"E\":case\"N\":o[r.path[n]]=r.rhs}}else switch(r.kind){case\"A\":s(e[t],r.index,r.item);break;case\"D\":e=f(e,t);break;case\"E\":case\"N\":e[t]=r.rhs}return e}function d(e,t,r){if(e&&t&&r&&r.kind){for(var n=e,o=-1,i=r.path?r.path.length-1:0;++o<i;)\"undefined\"==typeof n[r.path[o]]&&(n[r.path[o]]=\"number\"==typeof r.path[o]?[]:{}),n=n[r.path[o]];switch(r.kind){case\"A\":s(r.path?n[r.path[o]]:n,r.index,r.item);break;case\"D\":delete n[r.path[o]];break;case\"E\":case\"N\":n[r.path[o]]=r.rhs}}}function p(e,t,r){if(r.path&&r.path.length){var n,o=e[t],i=r.path.length-1;for(n=0;n<i;n++)o=o[r.path[n]];switch(r.kind){case\"A\":p(o[r.path[n]],r.index,r.item);break;case\"D\":o[r.path[n]]=r.lhs;break;case\"E\":o[r.path[n]]=r.lhs;break;case\"N\":delete o[r.path[n]]}}else switch(r.kind){case\"A\":p(e[t],r.index,r.item);break;case\"D\":e[t]=r.lhs;break;case\"E\":e[t]=r.lhs;break;case\"N\":e=f(e,t)}return e}function g(e,t,r){if(e&&t&&r&&r.kind){var n,o,i=e;for(o=r.path.length-1,n=0;n<o;n++)\"undefined\"==typeof i[r.path[n]]&&(i[r.path[n]]={}),i=i[r.path[n]];switch(r.kind){case\"A\":p(i[r.path[n]],r.index,r.item);break;case\"D\":i[r.path[n]]=r.lhs;break;case\"E\":i[r.path[n]]=r.lhs;break;case\"N\":delete i[r.path[n]]}}}function h(e,t,r){if(e&&t){var n=function(n){r&&!r(e,t,n)||d(e,t,n)};l(e,t,n)}}function y(e){return\"color: \"+F[e].color+\"; font-weight: bold\"}function v(e){var t=e.kind,r=e.path,n=e.lhs,o=e.rhs,i=e.index,a=e.item;switch(t){case\"E\":return[r.join(\".\"),n,\"→\",o];case\"N\":return[r.join(\".\"),o];case\"D\":return[r.join(\".\")];case\"A\":return[r.join(\".\")+\"[\"+i+\"]\",a];default:return[]}}function b(e,t,r,n){var o=c(e,t);try{n?r.groupCollapsed(\"diff\"):r.group(\"diff\")}catch(e){r.log(\"diff\")}o?o.forEach(function(e){var t=e.kind,n=v(e);r.log.apply(r,[\"%c \"+F[t].text,y(t)].concat(P(n)))}):r.log(\"—— no diff ——\");try{r.groupEnd()}catch(e){r.log(\"—— diff end —— \")}}function m(e,t,r,n){switch(\"undefined\"==typeof e?\"undefined\":N(e)){case\"object\":return\"function\"==typeof e[n]?e[n].apply(e,P(r)):e[n];case\"function\":return e(t);default:return e}}function w(e){var t=e.timestamp,r=e.duration;return function(e,n,o){var i=[\"action\"];return i.push(\"%c\"+String(e.type)),t&&i.push(\"%c@ \"+n),r&&i.push(\"%c(in \"+o.toFixed(2)+\" ms)\"),i.join(\" \")}}function x(e,t){var r=t.logger,n=t.actionTransformer,o=t.titleFormatter,i=void 0===o?w(t):o,a=t.collapsed,f=t.colors,u=t.level,l=t.diff,c=\"undefined\"==typeof t.titleFormatter;e.forEach(function(o,s){var d=o.started,p=o.startedTime,g=o.action,h=o.prevState,y=o.error,v=o.took,w=o.nextState,x=e[s+1];x&&(w=x.prevState,v=x.started-d);var S=n(g),k=\"function\"==typeof a?a(function(){return w},g,o):a,j=D(p),E=f.title?\"color: \"+f.title(S)+\";\":\"\",A=[\"color: gray; font-weight: lighter;\"];A.push(E),t.timestamp&&A.push(\"color: gray; font-weight: lighter;\"),t.duration&&A.push(\"color: gray; font-weight: lighter;\");var O=i(S,j,v);try{k?f.title&&c?r.groupCollapsed.apply(r,[\"%c \"+O].concat(A)):r.groupCollapsed(O):f.title&&c?r.group.apply(r,[\"%c \"+O].concat(A)):r.group(O)}catch(e){r.log(O)}var N=m(u,S,[h],\"prevState\"),P=m(u,S,[S],\"action\"),C=m(u,S,[y,h],\"error\"),F=m(u,S,[w],\"nextState\");if(N)if(f.prevState){var L=\"color: \"+f.prevState(h)+\"; font-weight: bold\";r[N](\"%c prev state\",L,h)}else r[N](\"prev state\",h);if(P)if(f.action){var T=\"color: \"+f.action(S)+\"; font-weight: bold\";r[P](\"%c action \",T,S)}else r[P](\"action \",S);if(y&&C)if(f.error){var M=\"color: \"+f.error(y,h)+\"; font-weight: bold;\";r[C](\"%c error \",M,y)}else r[C](\"error \",y);if(F)if(f.nextState){var _=\"color: \"+f.nextState(w)+\"; font-weight: bold\";r[F](\"%c next state\",_,w)}else r[F](\"next state\",w);l&&b(h,w,r,k);try{r.groupEnd()}catch(e){r.log(\"—— log end ——\")}})}function S(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign({},L,e),r=t.logger,n=t.stateTransformer,o=t.errorTransformer,i=t.predicate,a=t.logErrors,f=t.diffPredicate;if(\"undefined\"==typeof r)return function(){return function(e){return function(t){return e(t)}}};if(e.getState&&e.dispatch)return console.error(\"[redux-logger] redux-logger not installed. Make sure to pass logger instance as middleware:\\n// Logger with default options\\nimport { logger } from 'redux-logger'\\nconst store = createStore(\\n reducer,\\n applyMiddleware(logger)\\n)\\n// Or you can create your own logger with custom options http://bit.ly/redux-logger-options\\nimport createLogger from 'redux-logger'\\nconst logger = createLogger({\\n // ...options\\n});\\nconst store = createStore(\\n reducer,\\n applyMiddleware(logger)\\n)\\n\"),function(){return function(e){return function(t){return e(t)}}};var u=[];return function(e){var r=e.getState;return function(e){return function(l){if(\"function\"==typeof i&&!i(r,l))return e(l);var c={};u.push(c),c.started=O.now(),c.startedTime=new Date,c.prevState=n(r()),c.action=l;var s=void 0;if(a)try{s=e(l)}catch(e){c.error=o(e)}else s=e(l);c.took=O.now()-c.started,c.nextState=n(r());var d=t.diff&&\"function\"==typeof f?f(r,l):t.diff;if(x(u,Object.assign({},t,{diff:d})),u.length=0,c.error)throw c.error;return s}}}}var k,j,E=function(e,t){return new Array(t+1).join(e)},A=function(e,t){return E(\"0\",t-e.toString().length)+e},D=function(e){return A(e.getHours(),2)+\":\"+A(e.getMinutes(),2)+\":\"+A(e.getSeconds(),2)+\".\"+A(e.getMilliseconds(),3)},O=\"undefined\"!=typeof performance&&null!==performance&&\"function\"==typeof performance.now?performance:Date,N=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},P=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)},C=[];k=\"object\"===(\"undefined\"==typeof global?\"undefined\":N(global))&&global?global:\"undefined\"!=typeof window?window:{},j=k.DeepDiff,j&&C.push(function(){\"undefined\"!=typeof j&&k.DeepDiff===c&&(k.DeepDiff=j,j=void 0)}),t(n,r),t(o,r),t(i,r),t(a,r),Object.defineProperties(c,{diff:{value:c,enumerable:!0},observableDiff:{value:l,enumerable:!0},applyDiff:{value:h,enumerable:!0},applyChange:{value:d,enumerable:!0},revertChange:{value:g,enumerable:!0},isConflict:{value:function(){return\"undefined\"!=typeof j},enumerable:!0},noConflict:{value:function(){return C&&(C.forEach(function(e){e()}),C=null),c},enumerable:!0}});var F={E:{color:\"#2196F3\",text:\"CHANGED:\"},N:{color:\"#4CAF50\",text:\"ADDED:\"},D:{color:\"#F44336\",text:\"DELETED:\"},A:{color:\"#2196F3\",text:\"ARRAY:\"}},L={level:\"log\",logger:console,logErrors:!0,collapsed:void 0,predicate:void 0,duration:!1,timestamp:!0,stateTransformer:function(e){return e},actionTransformer:function(e){return e},errorTransformer:function(e){return e},colors:{title:function(){return\"inherit\"},prevState:function(){return\"#9E9E9E\"},action:function(){return\"#03A9F4\"},nextState:function(){return\"#4CAF50\"},error:function(){return\"#F20404\"}},diff:!1,diffPredicate:void 0,transformer:void 0},T=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.dispatch,r=e.getState;return\"function\"==typeof t||\"function\"==typeof r?S()({dispatch:t,getState:r}):void console.error(\"\\n[redux-logger v3] BREAKING CHANGE\\n[redux-logger v3] Since 3.0.0 redux-logger exports by default logger with default settings.\\n[redux-logger v3] Change\\n[redux-logger v3] import createLogger from 'redux-logger'\\n[redux-logger v3] to\\n[redux-logger v3] import { createLogger } from 'redux-logger'\\n\")};e.defaults=L,e.createLogger=S,e.logger=T,e.default=T,Object.defineProperty(e,\"__esModule\",{value:!0})});\n","// src/utils/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n// src/utils/symbol-observable.ts\nvar $$observable = /* @__PURE__ */ (() => typeof Symbol === \"function\" && Symbol.observable || \"@@observable\")();\nvar symbol_observable_default = $$observable;\n\n// src/utils/actionTypes.ts\nvar randomString = () => Math.random().toString(36).substring(7).split(\"\").join(\".\");\nvar ActionTypes = {\n INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,\n REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nvar actionTypes_default = ActionTypes;\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null)\n return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}\n\n// src/utils/kindOf.ts\nfunction miniKindOf(val) {\n if (val === void 0)\n return \"undefined\";\n if (val === null)\n return \"null\";\n const type = typeof val;\n switch (type) {\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\": {\n return type;\n }\n }\n if (Array.isArray(val))\n return \"array\";\n if (isDate(val))\n return \"date\";\n if (isError(val))\n return \"error\";\n const constructorName = ctorName(val);\n switch (constructorName) {\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n }\n return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n if (val instanceof Date)\n return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n let typeOfVal = typeof val;\n if (process.env.NODE_ENV !== \"production\") {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n\n// src/createStore.ts\nfunction createStore(reducer, preloadedState, enhancer) {\n if (typeof reducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = void 0;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n let currentReducer = reducer;\n let currentState = preloadedState;\n let currentListeners = /* @__PURE__ */ new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = /* @__PURE__ */ new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== \"string\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach((listener) => {\n listener();\n });\n return action;\n }\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = nextReducer;\n dispatch({\n type: actionTypes_default.REPLACE\n });\n }\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = observer;\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [symbol_observable_default]() {\n return this;\n }\n };\n }\n dispatch({\n type: actionTypes_default.INIT\n });\n const store = {\n dispatch,\n subscribe,\n getState,\n replaceReducer,\n [symbol_observable_default]: observable\n };\n return store;\n}\nfunction legacy_createStore(reducer, preloadedState, enhancer) {\n return createStore(reducer, preloadedState, enhancer);\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/combineReducers.ts\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === actionTypes_default.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n if (reducerKeys.length === 0) {\n return \"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach((key) => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === actionTypes_default.REPLACE)\n return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? \"keys\" : \"key\"} \"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. Expected to find one of the known reducer keys instead: \"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach((key) => {\n const reducer = reducers[key];\n const initialState = reducer(void 0, {\n type: actionTypes_default.INIT\n });\n if (typeof initialState === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n if (typeof reducer(void 0, {\n type: actionTypes_default.PROBE_UNKNOWN_ACTION()\n }) === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\nfunction combineReducers(reducers) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducers[key] === \"undefined\") {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === \"function\") {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n let unexpectedKeyCache;\n if (process.env.NODE_ENV !== \"production\") {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state = {}, action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== \"production\") {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === \"undefined\") {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : \"(unknown type)\"}, the slice reducer for key \"${key}\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\n// src/bindActionCreators.ts\nfunction bindActionCreator(actionCreator, dispatch) {\n return function(...args) {\n return dispatch(actionCreator.apply(this, args));\n };\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n// src/compose.ts\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\n// src/applyMiddleware.ts\nfunction applyMiddleware(...middlewares) {\n return (createStore2) => (reducer, preloadedState) => {\n const store = createStore2(reducer, preloadedState);\n let dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n };\n const middlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map((middleware) => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}\n\n// src/utils/isAction.ts\nfunction isAction(action) {\n return isPlainObject(action) && \"type\" in action && typeof action.type === \"string\";\n}\nexport {\n actionTypes_default as __DO_NOT_USE__ActionTypes,\n applyMiddleware,\n bindActionCreators,\n combineReducers,\n compose,\n createStore,\n isAction,\n isPlainObject,\n legacy_createStore\n};\n//# sourceMappingURL=redux.mjs.map","import { createReducer } from \"@reduxjs/toolkit\"\n\nimport {\n setLoading,\n setAlert,\n setUser,\n setLanguage,\n reset\n} from \"./action\"\n\nconst initialState: any = {\n isLoading: false,\n alert: {\n type: \"\",\n message: \"\"\n },\n user: null\n}\n\n\nconst commonReducer = createReducer(initialState, builder => {\n builder\n .addCase(setLoading, (state, action) => {\n state.isLoading = action.payload\n })\n .addCase(setAlert, (state, action) => {\n state.alert = action.payload\n })\n .addCase(setUser, (state, action) => {\n state.user = action.payload\n })\n .addCase(setLanguage, (state, action) => {\n state.language = action.payload\n })\n .addCase(reset, (_state, _action) => {\n return initialState\n })\n})\n\nexport default commonReducer","import { combineReducers } from \"redux\"\n\nimport common from \"./redux/commons/reducer\"\n\nconst rootReducer = combineReducers({\n common\n})\n\nexport default rootReducer\n","import { configureStore } from \"@reduxjs/toolkit\"\nimport logger from \"redux-logger\"\n\nimport rootReducer from \"./rootReducer\"\n\nconst store = configureStore({\n reducer: rootReducer,\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware({ serializableCheck: false }).concat(logger)\n})\n\nexport default store\n","import React, { FC, useEffect } from \"react\"\n\nconst TITLE = \"Not found\"\nconst NotFound: FC = () => {\n useEffect(() => {\n document.title = TITLE\n })\n return (\n <div className=\"not-found d-flex justify-content-center\">\n <div className=\"clearfix pt-5\">\n <h1 className=\"float-left display-3 fw-bold mr-4 text-center\">404</h1>\n <div className=\"float-left\">\n <h4 className=\"pt-3\">Oops! You are lost.</h4>\n <p className=\"text-muted mb-2\">\n The page you are looking for was not found.\n </p>\n <div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default NotFound\n","import React, { FC, CSSProperties } from \"react\"\nimport { useSelector } from \"react-redux\"\nimport moment from \"moment\"\n\nconst loadingStyle: CSSProperties = {\n minWidth: \"100vw\",\n minHeight: \"100vh\",\n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 999999999,\n backgroundColor: \"rgba(0, 0, 0, 0.4)\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n}\n\nconst Loading: FC = () => {\n const isLoading = useSelector((state: any) => state.common.isLoading)\n localStorage.setItem(\"LAST_TIME_REQUETST\", moment().utc().format(\"YYYY-MM-DD HH:mm:ss\"))\n return isLoading ? (\n <div style={loadingStyle}>\n <div className=\"spinner-border text-secondary\" role=\"status\">\n <span className=\"sr-only\"></span>\n </div>\n </div>\n ) : null\n}\n\nexport default Loading","import { api } from \"../configs/api\"\nimport { BASE_URL } from \"../utils/constants\"\n\nconst AUTH_URL = `${BASE_URL}/api/auth`\n\nexport const getInfo = () => api.get(`${AUTH_URL}/info`)","import React, { FC, Fragment, PropsWithChildren, useCallback, useEffect } from \"react\"\nimport { getAccessToken } from \"../utils/constants\"\nimport { useDispatch, useSelector } from \"react-redux\"\nimport { setLoading, setUser } from \"../redux/commons/action\"\nimport { getInfo } from \"../services/accountService\"\nimport useGoogleSignOut from \"../utils/useGoogleSignOut\"\n\ninterface Props {\n onNavigate: (pathname: string) => void\n role: string\n}\n\nconst LayoutContext: FC<Props & PropsWithChildren> = ({\n children,\n role,\n onNavigate\n}) => {\n const {\n handleSignOut\n } = useGoogleSignOut({onNavigate})\n\n const dispatch = useDispatch()\n const user = useSelector((state: any) => state?.common?.user)\n const roles = user?.roles || []\n const resetAuth = () => {\n handleSignOut()\n }\n\n const checkRoleUser = useCallback(() => {\n if(!user) return\n if(!roles.includes(role))\n {\n alert(`${user.email} not allow to register ${role}`)\n resetAuth()\n }\n }, [role, JSON.stringify(user)])\n\n const loadInfo = async () => {\n const token = getAccessToken()\n if(!token) {\n resetAuth()\n return\n }\n dispatch(setLoading(true))\n try {\n const info = await getInfo()\n if (!info) {\n resetAuth()\n }\n dispatch(setUser(info.data))\n } catch (err) {\n console.log({err});\n role === \"Student\" ? alert(\"학생, 다시 로그인해주세요.\") : alert(\"선생님, 다시 로그인해주세요.\")\n resetAuth()\n }\n dispatch(setLoading(false))\n }\n useEffect(() => {\n !user && loadInfo()\n !!user && checkRoleUser()\n }, [JSON.stringify(user)])\n\n return <Fragment>{children}</Fragment>\n}\n\nexport default LayoutContext\n","import React, { ChangeEvent, FC, useEffect, useState } from \"react\"\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input } from \"reactstrap\"\n\ninterface Props {\n text: string\n cancelText?: string\n okText?: string\n onConfirm: () => void\n open: boolean\n toggle: () => void\n isDelete?: boolean\n title?: string\n confirmText?: string\n}\nexport const ConfirmDialog: FC<Props> = ({\n open,\n text,\n cancelText = \"No\",\n okText = \"Yes\",\n isDelete,\n title = \"Confirmation\",\n toggle,\n onConfirm,\n confirmText\n}) => {\n const [confirmTextValue, setConfirmTextValue] = useState<string>()\n const handleConfirm = () => {\n onConfirm()\n }\n const handleChangeConfirmText = (e: ChangeEvent<HTMLInputElement>) => {\n setConfirmTextValue(e.target.value)\n }\n const handlePaste = (e: any) => {\n e.preventDefault()\n }\n\n useEffect(() => {\n !open && setConfirmTextValue(undefined)\n }, [open])\n const isValid = !!confirmText && !!confirmTextValue && confirmTextValue.trim() === confirmText.trim()\n return (\n <Modal isOpen={open} toggle={toggle} centered zIndex={1102}>\n <ModalHeader toggle={toggle}>{title}</ModalHeader>\n <ModalBody>\n <p><strong>{text}</strong></p>\n {\n !!confirmText &&\n <div>\n <p>Enter \"<strong>{confirmText}</strong>\" to confirm delete</p>\n <Input\n value={confirmTextValue} onChange={handleChangeConfirmText}\n placeholder=\"Please enter...\"\n onPaste={handlePaste}\n invalid={!isValid && confirmTextValue !== undefined}\n valid={isValid}\n />\n </div>\n }\n </ModalBody>\n <ModalFooter>\n <Button\n color=\"secondary\"\n className=\"px-3\"\n onClick={toggle}>\n {cancelText}\n </Button>\n <Button\n color={isDelete ? \"danger\" : \"primary\"}\n className=\"px-3\"\n disabled={!!confirmText && confirmTextValue?.trim() !== confirmText.trim()}\n onClick={handleConfirm}\n >\n {okText}\n </Button>\n </ModalFooter>\n </Modal>\n )\n}\n","import { FC, PropsWithChildren } from \"react\"\nimport { Modal, ModalHeader } from \"reactstrap\"\nimport React from \"react\"\n\ninterface Props {\n open: boolean\n onClose: () => void\n centered?: boolean\n title: string\n size?: \"xs\" | \"lg\" | \"xl\"\n backdrop?: boolean | \"static\"\n}\n\nconst CommonDialog: FC<Props & PropsWithChildren> = ({\n open,\n children,\n centered,\n title,\n size = \"xs\",\n onClose,\n backdrop\n}) => {\n return (\n <Modal backdrop={backdrop} isOpen={open} toggle={onClose} centered={centered} size={size} zIndex={1102}>\n <ModalHeader toggle={onClose}>{title}</ModalHeader>\n {children}\n </Modal>\n )\n}\n\nexport default CommonDialog\n","import React, { FC, useRef, useEffect } from \"react\"\nimport { useSelector, useDispatch } from \"react-redux\"\nimport { Alert } from \"reactstrap\"\n\nimport { setAlert } from \"../../redux/commons/action\"\n\nconst CommonAlert: FC = () => {\n const dispatch = useDispatch()\n const alert = useSelector((state: any) => state.common.alert)\n const timeout = useRef<any>()\n\n const onDismiss = () => {\n dispatch(setAlert({ message: \"\" }))\n timeout && timeout.current && clearTimeout(timeout.current)\n }\n\n useEffect(() => {\n if (!!alert.message?.length) {\n timeout && timeout.current && clearTimeout(timeout.current)\n timeout.current = setTimeout(() => {\n dispatch(setAlert({ message: \"\" }))\n }, 3000)\n }\n }, [alert])\n\n return alert.message?.length > 0 ? (\n <div className=\"app-alert\">\n <Alert\n color={alert.type}\n isOpen={alert.message.length > 0}\n toggle={onDismiss}\n >\n {alert.message}\n </Alert>\n </div>\n ) : null\n}\n\nexport default CommonAlert\n","import moment from \"moment\"\nimport { DATE_MIN_VALUE } from \"../utils/constants\"\n\nexport default (time: string, ORIGINAL_FORMAT: string, FORMAT?: string) => {\n if (time === DATE_MIN_VALUE) return \"\"\n try {\n return moment(time, ORIGINAL_FORMAT).format(FORMAT || \"yyyy-MM-DD\");\n } catch {\n return \"\"\n }\n}\n","import moment, { unitOfTime } from \"moment\"\nimport { DATE_MIN_VALUE } from \"../utils/constants\"\n\nexport default (time: string, unitOfTime: unitOfTime.Diff, targetTime?: string) => {\n if (time === DATE_MIN_VALUE || targetTime === DATE_MIN_VALUE) return 0\n try {\n var now = !!targetTime ? moment() : moment.utc(targetTime).local();\n return now.diff(moment.utc(time).local(), unitOfTime)\n } catch {\n return \"\"\n }\n}\n","import React from \"react\"\nimport { FC } from \"react\"\nimport { Pagination, PaginationItem, PaginationLink } from \"reactstrap\"\n\ninterface Props {\n currentPage: number\n totalPage: number\n onChangePage: (page: number) => void\n}\nconst CustomPagination: FC<Props> = ({\n currentPage,\n totalPage,\n onChangePage\n}) => {\n\n return (\n <Pagination className=\"w-fit\">\n <PaginationItem disabled={currentPage <= 1}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(currentPage - 1)\n }}\n previous\n href=\"#\"\n />\n </PaginationItem>\n <PaginationItem active={1 === currentPage} key={1}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(1)\n }}\n href=\"#\"\n >\n {1}\n </PaginationLink>\n </PaginationItem>\n\n {\n totalPage > 2 && <PaginationItem active={2 === currentPage} key={1}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(2)\n }}\n href=\"#\"\n >\n {2}\n </PaginationLink>\n </PaginationItem>\n }\n\n {\n currentPage > 4 && currentPage !== totalPage && totalPage !== 5\n &&\n <PaginationItem disabled key={\"first\"}>\n <PaginationLink\n href=\"#\"\n >\n ...\n </PaginationLink>\n </PaginationItem>\n }\n {\n (currentPage === 1 || currentPage === totalPage) && totalPage === 5 && \n <PaginationItem key={3}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(3)\n }}\n href=\"#\"\n >\n 3\n </PaginationLink>\n </PaginationItem>\n }\n {\n [currentPage - 1, currentPage, currentPage + 1]\n .filter(page => page > 2 && page < totalPage - 1).map(page => (\n <PaginationItem active={page === currentPage} key={page}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(page)\n }}\n href=\"#\"\n >\n {page}\n </PaginationLink>\n </PaginationItem>\n ))\n }\n\n {\n totalPage - currentPage > 4\n &&\n <PaginationItem disabled key={\"last\"}>\n <PaginationLink\n href=\"#\"\n >\n ...\n </PaginationLink>\n </PaginationItem>\n }\n\n {totalPage > 3 && (\n <PaginationItem active={totalPage - 1 === currentPage} key={totalPage - 1}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(totalPage - 1)\n }}\n href=\"#\"\n >\n {totalPage - 1}\n </PaginationLink>\n </PaginationItem>\n )}\n {totalPage > 1 && (\n <PaginationItem active={totalPage === currentPage} key={totalPage}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(totalPage)\n }}\n href=\"#\"\n >\n {totalPage}\n </PaginationLink>\n </PaginationItem>\n )}\n <PaginationItem disabled={currentPage >= totalPage}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(currentPage + 1)\n }}\n next\n href=\"#\"\n />\n </PaginationItem>\n </Pagination>\n )\n}\n\nexport default CustomPagination\n","export interface INavigateProps{\n onNavigate: (pathname: string) => void\n}\n\nexport enum ExamEvent {\n StartExam = \"start-exam\",\n TerminateExam = \"terminate-exam\",\n AddExtraDuration = \"add-extra-duration-exam\",\n TeacherKickOutStudent = \"teacher-kick-out-student\"\n }\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport lang_ko from \"./lang/lang_ko.json\"\nimport lang_en from \"./lang/lang_en.json\"\n\ni18n.use(initReactI18next)\n .init({\n lng: \"ko\",\n fallbackLng: \"ko\",\n interpolation: {\n escapeValue: false,\n },\n resources: {\n ko: {\n translation: lang_ko\n },\n en: {\n translation: lang_en\n },\n },\n });\n\nexport default i18n;","export type Language = {\n code: string\n name: string\n fullName: string\n shortName: string\n nativeName: string\n image: string\n momentLangCode: string\n}\n\nexport const DEFAULT_LANGUAGE_INDEX = 0\n\nexport const LANGUAGES: Language[] = [\n {\n code: \"ko\",\n fullName: \"Korean\",\n shortName: \"Korean\",\n nativeName: \"Korean\",\n name: \"Korean\",\n image: \"/images/korea.png\",\n momentLangCode: \"ko\"\n },\n {\n code: \"en\",\n fullName: \"English\",\n shortName: \"English\",\n nativeName: \"English\",\n name: \"English\",\n image: \"/images/usa.png\",\n momentLangCode: \"en-au\"\n }\n]\n","import { useState, useEffect, useMemo } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useDispatch } from \"react-redux\"\nimport { DEFAULT_LANGUAGE_INDEX, LANGUAGES, Language } from \"../configs/constants\"\nimport { setLanguage } from \"../redux/commons/action\"\nimport moment from \"moment\"\nimport \"moment/locale/ko.js\"\nimport \"moment/locale/en-au.js\"\n\nconst useLanguage = () => {\n const defaultLanguage =\n !!localStorage.getItem(\"language\")\n ? localStorage.getItem(\"language\")\n : navigator.language || LANGUAGES[DEFAULT_LANGUAGE_INDEX].code\n\n const dispatch = useDispatch()\n const { i18n } = useTranslation()\n const [dropdownOpen, setDropdownOpen] = useState(false)\n const [language, setItemLanguage] = useState(defaultLanguage!)\n const toggle = () => setDropdownOpen(prevState => !prevState)\n const changeLanguageApp = (lang: string) => {\n let language = LANGUAGES.find(i => i.code === lang)\n if (!language) language = LANGUAGES[DEFAULT_LANGUAGE_INDEX]\n i18n.changeLanguage(language.code)\n moment.locale(language.momentLangCode)\n localStorage.setItem(\"language\", language.code)\n setItemLanguage(language.code)\n dispatch(setLanguage(language.code))\n }\n\n useEffect(() => {\n changeLanguageApp(language)\n }, [language])\n\n const currentLanguage = useMemo(() => {\n const currentLang = LANGUAGES.find((i: Language) => i.code === language)\n if(!currentLang) return null\n return currentLang\n }, [language])\n return {\n language,\n dropdownOpen,\n currentLanguage,\n toggle,\n setItemLanguage\n }\n}\n\nexport default useLanguage","import React from \"react\"\nimport { IoChevronDown } from \"react-icons/io5\";\nimport styles from \"../styles.module.scss\"\nimport {\n Dropdown,\n DropdownItem,\n DropdownMenu,\n DropdownToggle\n} from \"reactstrap\"\nimport { Language, LANGUAGES } from \"../configs/constants\";\nimport useLanguage from \"../utils/useLanguage\";\n\nconst TheLanguageDropdown = () => {\n const {\n currentLanguage,\n language,\n dropdownOpen,\n toggle,\n setItemLanguage\n } = useLanguage()\n\n return (\n <Dropdown\n isOpen={dropdownOpen}\n toggle={toggle}\n className={`${styles[\"dropdown-menu\"]}`}\n >\n <DropdownToggle\n className={`${styles[\"header-avatar\"]} d-flex align-items-center`}\n >\n <span style={{ color: \"#000\", textTransform: \"capitalize\", display: 'flex', alignItems: 'center' }}>\n {!!currentLanguage && <img className={`mr-2 ${styles['dropdown-menu-flag']}`} src={currentLanguage.image} />}\n {!!currentLanguage && currentLanguage.shortName}\n <IoChevronDown className=\"ml-2\" style={{ fontSize: '15px', marginLeft: \"5px\", marginTop: \"2px\" }} />\n </span>\n </DropdownToggle>\n <DropdownMenu className={styles[\"dropdown-content-language\"]}>\n {\n LANGUAGES.map((lang: Language, index: number) => (\n <DropdownItem\n key={lang.code}\n className={`${styles[\"dropdown-change\"]} px-0 py-0 ${index === LANGUAGES.length - 1 ? \"pb-2\" : \"pt-2\"}`}\n onClick={() => setItemLanguage(lang.code)}\n >\n <div\n className={`${styles[\"dropdown-item-language\"]} ${styles[\"item-logout\"]} ${\n language == lang.code ? styles['dropdown-item-language-active'] : \"\"\n } d-flex align-items-center w-100`}\n >\n <span className=\"mr-2 d-flex hover-opacity\">\n <img\n style={{ width: \"30px\", marginRight: \"10px\" }}\n src={lang.image}\n />\n </span>\n {lang.name}\n </div>\n </DropdownItem>\n ))\n }\n </DropdownMenu>\n </Dropdown>\n )\n}\n\nexport default TheLanguageDropdown\n","export default (time: number) => {\n const h = Math.floor(time / 60)\n const m = time % 60\n return `${h.toString().padStart(2, \"0\")}:${m\n .toString()\n .padStart(2, \"0\")}:00`\n}\n","import moment from \"moment\"\n\nexport default (time?: string) => {\n try {\n return moment(time).toISOString()\n } catch {\n return \"\"\n }\n}\n","const canAccess = (userRoles: any[], componentRoles: any[]) => {\n if (!Array.isArray(userRoles)) {\n return false\n }\n if (Array.isArray(componentRoles)) {\n const intersects = userRoles.filter(i => componentRoles.includes(i))\n return intersects.length > 0\n }\n return true\n}\n\nexport default canAccess\n","import React from \"react\"\nimport Select, { DropdownIndicatorProps, components } from 'react-select'\nimport { FaCaretDown } from \"react-icons/fa\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DropdownIndicator = (props: DropdownIndicatorProps) => {\n return <components.DropdownIndicator {...props}>\n <FaCaretDown color=\"#5458D5\"/>\n </components.DropdownIndicator>\n}\n\nconst CustomOption = (props: any) => {\n return (\n <components.Option {...props}>\n <div style={{ fontSize: \"14px\", fontWeight: 500, }}>\n {props.data.label}\n </div>\n </components.Option>\n );\n };\n\nconst customStyles = {\n control: (baseStyles: any, state: any) => ({\n ...baseStyles,\n fontSize: \"14px\",\n fontWeight: 700,\n color: \"#5458D5\",\n borderColor: state.isFocused ? '#5458D5' : '#C3C5FE'\n }),\n input: (baseStyles: any, _: any) => ({\n ...baseStyles,\n fontSize: \"14px\",\n fontWeight: 700,\n color: \"#5458D5\"\n }),\n singleValue: (baseStyles: any) => ({\n ...baseStyles,\n fontSize: \"14px\",\n fontWeight: 700,\n color: \"#5458D5\"\n }),\n};\nconst CustomSelect = ({\n isDefault,\n defaultValue,\n options,\n isDisabled,\n scrollBottom,\n value,\n isMulti,\n ...rest\n}: any) => {\n const { t } = useTranslation()\n const initialValues = Array.isArray(value) ? options.filter((i: any)=> value.includes(i.value)) : isMulti ? options.filter((i: any) => i.value == value) : options.find((i: any) => i.value == value)\n return (\n <Select\n isDisabled={isDisabled}\n options={options}\n value={!isDefault ? (initialValues ?? null) : undefined}\n defaultValue={isDefault ? initialValues : undefined}\n menuPlacement={scrollBottom ? \"top\" : \"auto\"}\n isMulti={isMulti}\n components={{\n IndicatorSeparator: () => null,\n DropdownIndicator,\n Option: CustomOption\n }}\n styles={customStyles}\n placeholder={t(\"select_placeholder\")}\n {...rest}\n />\n )\n}\n\nexport default CustomSelect\n","import { ExamStatus } from \"./constants\"\n\nexport type ConversationResponse = {\n id: number\n student: UserResponse\n teacher: UserResponse\n lastMessage: MessageResponse\n totalUnReadMessage: number\n}\n\nexport type UserResponse = {\n id: number\n displayName: string\n avatar: string\n}\n\nexport type ConversationFilter = {\n currentPage: number,\n pageSize: number,\n textSearch: string\n}\n\nexport type MessageFilter = {\n currentPage?: number,\n pageSize?: number,\n textSearch?: string,\n sortColumnDirection?: OrderBy,\n sortColumnName?: MessageSortBy\n examId?: number\n beforeDate?: string\n}\n\nexport enum MessageSortBy {\n CreatedAt = \"CreatedAt\"\n}\n\nexport enum OrderBy {\n ASC = \"ASC\",\n DESC = \"DESC\"\n}\n\nexport enum StudentSortBy {\n CreatedAt = \"CreatedAt\",\n DisplayName = \"DisplayName\"\n}\n\nexport enum StudentOrderBy {\n ASC = \"ASC\",\n DESC = \"DESC\"\n}\n\nexport type MessageResponse = {\n id?: number\n isStudent: boolean\n conversationId?: number\n content: string\n isRead: boolean\n readAt?: string\n examId?: number\n createdAt: string\n exam?: ExamResponse\n action?: MessageAction\n isSystemLog?: boolean\n type?: MessageSourceType\n parentId?: number\n parentContent?: string\n}\n\nexport type ExamResponse = {\n id: number\n title: string\n code: string\n startTime: string\n createdAt: string\n}\n\nexport type MessageRequest = {\n content: string\n examId?: number\n parentId?: number,\n parentContent?: string\n examTitle?: string\n examCode?: string\n}\n\nexport enum MessageAction{\n Default,\n Took\n}\n\nexport enum MessageSourceType{\n Default,\n Exam,\n Class\n}\n\nexport type ExamFilter = {\n currentPage: number,\n pageSize: number,\n sortColumnName: string,\n textSearch: string,\n sortColumnDirection: string,\n statuses?: ExamStatus[]\n}\n\nexport type Option = {\n value: number\n label: string\n}\n\nexport enum MessageStatus{\n Default = \"Sent\",\n Sending = \"Sending...\",\n SentError = \"Sent fail, Retry\"\n}","import React, { FC, useEffect, useState } from \"react\";\nimport styles from \"./styles/chatStyles.module.scss\";\nimport { Collapse } from \"reactstrap\";\nimport { Link } from \"react-router-dom\";\nimport { IChatItemWithActionProps } from \"./ChatItem\";\nimport utcToLocalTime from \"../../utils/utcToLocalTime\";\nimport { MessageRequest, MessageStatus } from \"./configs/types\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface Props extends IChatItemWithActionProps{\n onReTrySendMessage?: (req?: MessageRequest) => void\n}\nconst ChatRightItem: FC<Props> = ({\n id,\n content,\n createdAt,\n isRead,\n examCode,\n isSystemLog,\n parentId,\n showExamHeader = false,\n isFirst = true,\n isLast,\n actionLink,\n examId,\n examTitle,\n parentContent,\n status,\n selectedReplyMessageId,\n selectedReplyItemRef,\n onAddExamMessage,\n onReTrySendMessage,\n onGotoParentMessage\n}) => {\n const [isShowTime, setShowTime] = useState<boolean>(false);\n const [isShowInfo, setShowInfo] = useState<boolean>(false);\n const { t } = useTranslation()\n const handleShowInfo = () => {\n setShowInfo(!isShowInfo);\n !isFirst && !isSystemLog && setShowTime(!isShowInfo);\n };\n\n const handleReTrySendMessage = () => {\n if(status !== MessageStatus.SentError || !content) return\n onReTrySendMessage?.({\n content,\n examId,\n examTitle,\n parentContent,\n parentId\n })\n }\n\n useEffect(() => {\n setShowTime(isSystemLog || !!isFirst);\n }, [isFirst, isSystemLog]);\n return (\n <li\n ref={selectedReplyMessageId === id ? selectedReplyItemRef : undefined}\n className={`px-3 ${!isLast ? \"pb-1\" : \"pb-3\"} ${\n !!examCode ? \"border border-top-0 border-info\" : \"\"\n } ${\n !!examCode && isLast\n ? \"border-bottom-1 mb-3\"\n : \"border-bottom-0\"\n }`}\n >\n {showExamHeader && isFirst && (\n <div\n className={`d-flex bg-info justify-content-between px-3 mb-3 py-1 ${styles[\"list__item__header\"]}`}\n >\n <Link to={`${actionLink || \"/\"}`} className=\"text-black\">\n {examTitle}\n </Link>\n {!!examId && !!examTitle && !!examCode && <span className=\"pointer text-black\" onClick={() => onAddExamMessage?.(examId, examTitle, examCode)}>\n Add message to exam\n </span>}\n </div>\n )}\n {\n (isSystemLog || !!isFirst)\n ?\n <p className=\"mb-0 py-1 px-3 fs-6 text-muted text-center\">\n {utcToLocalTime(createdAt, t(\"date_time_format\"))}\n </p>\n :\n <Collapse className=\"w-100\" isOpen={isShowTime}>\n <p className=\"mb-0 py-1 px-3 fs-6 text-muted text-center\">\n {utcToLocalTime(createdAt, t(\"date_time_format\"))}\n </p>\n </Collapse>\n }\n {isSystemLog ? (\n <div className=\"text-center w-100\">\n <Link\n to={`${actionLink || \"/\"}`}\n title=\"See the results\"\n className=\"text-primary\"\n >\n {content}\n </Link>\n </div>\n ) : (\n <div className={`d-flex align-items-start w-100 flex-row-reverse`}>\n <div className=\"d-flex flex-column align-items-end\">\n {parentId && (\n <p\n className={`px-3 bg-light opacity-50 pointer ${styles[\"list__item__message\"]} ${styles[\"list__item__message--reply-from-right\"]} mb-0 fw-medium ${styles[\"reply-text\"]}`}\n onClick={() => onGotoParentMessage?.(parentId)}\n >\n <b>Reply To:</b> {parentContent}\n </p>\n )}\n <p\n className={`mb-0 py-2 px-3 fw-medium pointer ${\n styles[\"list__item__message\"]\n } ${\n parentId ? styles[\"list__item__message--reply-right\"] : \"\"\n } text-end bg-primary text-white`}\n onClick={handleShowInfo}\n >\n {content}\n </p>\n {status !== MessageStatus.Default && <p onClick={handleReTrySendMessage} className={`fs-6 mb-0 ${status === MessageStatus.SentError ? \"text-danger text-decoration-underline pointer\" : \"\"}`}>{status}</p>}\n {!isSystemLog && status === MessageStatus.Default && (\n <Collapse isOpen={isShowInfo}>\n <p className=\"mb-0 py-1 px-3 fs-6 text-muted text-end\">\n {isRead ? \"seen\" : \"sent\"}\n </p>\n </Collapse>\n )}\n </div>\n </div>\n )}\n </li>\n );\n};\n\nexport default ChatRightItem;\n","import React, { FC, useEffect, useState } from \"react\";\nimport styles from \"./styles/chatStyles.module.scss\";\nimport { Collapse } from \"reactstrap\";\nimport { Link } from \"react-router-dom\";\nimport { IChatItemWithActionProps } from \"./ChatItem\";\nimport utcToLocalTime from \"../../utils/utcToLocalTime\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ChatLeftItem: FC<IChatItemWithActionProps> = ({\n id,\n avatar,\n content,\n createdAt,\n examCode,\n isSystemLog,\n parentId,\n showExamHeader = false,\n isFirst = true,\n isLast,\n actionLink,\n examId,\n examTitle,\n parentContent,\n onAddExamMessage,\n onReply,\n selectedReplyMessageId,\n onToggleReply,\n selectedReplyItemRef,\n onGotoParentMessage\n}) => {\n const [isShowTime, setShowTime] = useState<boolean>(false);\n const [isShowInfo, setShowInfo] = useState<boolean>(false);\n\n const { t } = useTranslation()\n const handleShowInfo = () => {\n if(!id) return\n setShowInfo(!isShowInfo);\n onToggleReply?.(id)\n !isFirst && !isSystemLog && setShowTime(!isShowInfo);\n };\n\n const handleReply = () => {\n if(!id) return\n onReply?.(id, content || \"\", examId)\n }\n\n useEffect(() => {\n setShowTime(isSystemLog || !!isFirst);\n }, [isFirst, isSystemLog]);\n return (\n <li\n ref={selectedReplyMessageId === id ? selectedReplyItemRef : undefined}\n className={`px-3 ${!isLast ? \"pb-1\" : \"pb-3\"} ${\n !!examCode ? \"border border-top-0 border-info\" : \"\"\n } ${\n !!examCode && isLast\n ? \"border-bottom-1 mb-3\"\n : \"border-bottom-0\"\n }`}\n >\n {showExamHeader && isFirst && (\n <div\n className={`d-flex bg-info justify-content-between px-3 mb-3 py-1 ${styles[\"list__item__header\"]}`}\n >\n <Link to={`${actionLink || \"/\"}`} className=\"text-black\">\n {examTitle}\n </Link>\n {!!examId && !!examTitle && !!examCode && <span className=\"pointer text-black\" onClick={() => onAddExamMessage?.(examId, examTitle, examCode)}>\n Add message to exam\n </span>}\n </div>\n )}\n \n {\n (isSystemLog || !!isFirst)\n ?\n <p className=\"mb-0 py-1 px-3 fs-6 text-muted text-center\">\n {utcToLocalTime(createdAt, t(\"date_time_format\"))}\n </p>\n :\n <Collapse className=\"w-100\" isOpen={isShowTime}>\n <p className=\"mb-0 py-1 px-3 fs-6 text-muted text-center\">\n {utcToLocalTime(createdAt, t(\"date_time_format\"))}\n </p>\n </Collapse>\n }\n {isSystemLog ? (\n <div className=\"text-center w-100\">\n <Link\n to={`${actionLink || \"/\"}`}\n title=\"See the results\"\n className=\"text-primary\"\n >\n {content}\n </Link>\n </div>\n ) : (\n <div className={`d-flex align-items-start w-100`}>\n <div\n className={`rounded-circle ${\n styles[\"list__item__avatar-container\"]\n } bg-light me-2 mt-1 ${isFirst ? \"\" : \"opacity-0\"}`}\n >\n {isFirst && (\n <img\n className={`${styles[\"list__item__avatar\"]} bg-light rounded-circle`}\n src={avatar}\n />\n )}\n </div>\n <div className=\"d-flex flex-column\">\n {parentId && (\n <p\n className={`opacity-50 mb-0 px-3 fw-medium pointer ${styles[\"list__item__message\"]} ${styles[\"list__item__message--reply-from\"]} ${styles[\"reply-text\"]} text-start bg-light`}\n onClick={() => onGotoParentMessage?.(parentId)}\n >\n <b>Reply To:</b> {parentContent}\n </p>\n )}\n <p\n className={`mb-0 py-2 px-3 fw-medium pointer ${\n styles[\"list__item__message\"]\n } ${\n parentId ? styles[\"list__item__message--reply\"] : \"\"\n } text-start bg-light`}\n onClick={handleShowInfo}\n >\n {content}\n </p>\n {\n !isSystemLog && <Collapse className=\"w-100\" isOpen={selectedReplyMessageId === id}>\n <p onClick={handleReply} className=\"mb-0 py-1 px-3 fs-6 text-primary text-left pointer\">\n Reply\n </p>\n </Collapse>\n }\n </div>\n </div>\n )}\n </li>\n );\n};\n\nexport default ChatLeftItem;\n","import { FC, Fragment } from \"react\";\nimport ChatRightItem from \"./ChatRightItem\";\nimport ChatLeftItem from \"./ChatLeftItem\";\nimport React from \"react\";\nimport { MessageStatus } from \"./configs/types\";\n\nexport interface IChatItemProps {\n id?: number;\n isMe?: boolean;\n name: string;\n avatar?: string;\n isSystemLog?: boolean;\n content?: string;\n createdAt: string;\n isRead: boolean;\n type?: ChatItemType;\n examCode?: string;\n examId?: number;\n parentId?: number;\n parentContent?: string;\n showExamHeader?: boolean;\n isFirst?: boolean;\n isLast?: boolean;\n actionLink?: string\n examTitle?: string\n selectedReplyMessageId?: number\n selectedReplyItemRef?: React.RefObject<HTMLLIElement>\n status: MessageStatus\n onToggleReply?: (id: number) => void\n}\n\nexport interface IChatItemWithActionProps extends IChatItemProps{\n onAddExamMessage?: (examId: number, title: string, examCode: string) => void\n onReply?: (id: number, content: string, examId?: number) => void\n onReTrySendMessage?: () => void\n onGotoParentMessage?: (id: number) => void\n}\n\nexport enum ChatItemType {\n Default,\n Exam,\n Class,\n}\n\nconst ChatItem: FC<IChatItemWithActionProps> = (props) => {\n const { isMe, onReTrySendMessage } = props;\n return (\n <Fragment>\n {isMe ? <ChatRightItem {...props} onReTrySendMessage={onReTrySendMessage}/> : <ChatLeftItem {...props} />}\n </Fragment>\n );\n};\n\nexport default ChatItem;\n","import React, { FC, useEffect, useRef, useState } from \"react\"\nimport styles from \"./styles/chatStyles.module.scss\"\nimport ChatItem, { IChatItemProps } from \"./ChatItem\"\n\nexport interface IChatListProps{\n messages?: IChatItemProps[]\n onAddExamMessage: (examId: number, examTitle: string, examCode: string) => void\n onReTrySendMessage?: () => void\n onReply?: (id: number, content: string, examId?: number) => void\n}\n\ninterface Props extends IChatListProps{\n listItemRef: React.RefObject<HTMLUListElement>\n}\n\nconst ChatList: FC<Props> = ({\n messages = [],\n onAddExamMessage,\n onReply,\n onReTrySendMessage,\n listItemRef\n}) => {\n\n const [selectedReplyMessageId, setSelectedReplyMessageId] = useState<number>();\n const selectedReplyItemRef = useRef<HTMLLIElement>(null)\n\n const handleToggleReply = (id: number) => {\n setSelectedReplyMessageId(id === selectedReplyMessageId ? undefined : id)\n }\n\n const handleSelectParentMessage = (id: number) => {\n if(id === selectedReplyMessageId) selectedReplyItemRef.current && selectedReplyItemRef.current.scrollIntoView({\n behavior: \"smooth\"\n })\n else setSelectedReplyMessageId(id)\n }\n\n useEffect(() => {\n selectedReplyMessageId && selectedReplyItemRef.current && selectedReplyItemRef.current.scrollIntoView({\n behavior: \"smooth\"\n })\n }, [selectedReplyMessageId, selectedReplyItemRef.current])\n return <ul ref={listItemRef} className={`${styles[\"list\"]} h-100 d-flex flex-column py-3 px-0 mb-0`}>\n <li className=\"flex-grow-1\" key={\"start-of-list\"}></li>\n {\n !messages?.length\n && <li className=\"text-muted text-center fst-italic fs-6\">No message</li>\n }\n {\n !!messages?.length\n &&\n messages.map((message: IChatItemProps) => (\n <ChatItem\n key={message.id}\n {...message}\n onAddExamMessage={onAddExamMessage}\n onReply={onReply}\n selectedReplyMessageId={selectedReplyMessageId}\n onToggleReply={handleToggleReply}\n selectedReplyItemRef={selectedReplyItemRef}\n onReTrySendMessage={onReTrySendMessage}\n onGotoParentMessage={handleSelectParentMessage}\n />\n ))\n }\n </ul>\n}\n\nexport default ChatList","import { Collapse, Input, InputGroup } from \"reactstrap\"\nimport { IoMdSend } from \"react-icons/io\"\nimport React, { ChangeEvent, FC, KeyboardEvent } from \"react\"\nimport { IoIosCloseCircle } from \"react-icons/io\"\nimport styles from \"./styles/chatStyles.module.scss\"\n\nexport interface IInputChatProps {\n text: string\n parentText?: string\n examTitle?: string\n onSubmit: () => void\n onChangeInput: (text: string) => void\n onClearReply?: () => void\n}\n\ninterface Props extends IInputChatProps {\n inputRef: React.RefObject<HTMLInputElement>\n}\nconst InputChat: FC<Props> = ({\n text,\n parentText,\n examTitle,\n inputRef,\n onChangeInput,\n onSubmit,\n onClearReply\n}) => {\n const handleSubmit = () => {\n if (!text.trim().length) return\n onSubmit()\n }\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChangeInput(event.target.value)\n }\n\n const handleKeyPressEnter = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.code === \"Enter\") handleSubmit()\n }\n\n const handleClearReply = () => {\n onClearReply?.()\n }\n return (\n <div className=\"bg-light rounded-3 p-2\">\n <Collapse isOpen={!!parentText || (!!examTitle && !parentText)}>\n {!!parentText ? (\n <div className=\"d-flex justify-content-between align-items-center\">\n <p className={`mb-3 ${styles[\"reply-text\"]}`}>\n <b>Reply to:</b>\n {` ${parentText}`}\n </p>\n {!!onClearReply && (\n <span\n className=\"pointer ms-3 mb-3 d-flex justify-content-center align-items-center\"\n onClick={handleClearReply}\n >\n <IoIosCloseCircle />\n </span>\n )}\n </div>\n ) : (\n <div className=\"d-flex justify-content-between align-items-center\">\n <p className={`mb-3 ${styles[\"reply-text\"]}`}>\n <b>Reply to{examTitle ? \" exam\" : \"\"}: </b>\n {` ${examTitle}`}\n </p>\n {!!onClearReply && (\n <span\n className=\"pointer ms-3 mb-3 d-flex justify-content-center align-items-center\"\n onClick={handleClearReply}\n >\n <IoIosCloseCircle />\n </span>\n )}\n </div>\n )}\n </Collapse>\n <InputGroup className=\"d-flex align-items\">\n <Input\n innerRef={inputRef}\n value={text}\n placeholder=\"Enter something\"\n onKeyUp={handleKeyPressEnter}\n className=\"rounded-pill px-3\"\n onChange={handleInputChange}\n />\n <div\n className=\"p-2 pointer d-flex align-items-center\"\n onClick={handleSubmit}\n >\n <IoMdSend className=\"text-primary fs-4\" />\n </div>\n </InputGroup>\n </div>\n )\n}\nexport default InputChat\n","import { FC, useEffect, useMemo, useRef } from \"react\";\nimport styles from \"./styles/chatStyles.module.scss\";\n// import { PiDotsThreeOutlineFill } from \"react-icons/pi\";\n// import { Popover, PopoverHeader, PopoverBody } from \"reactstrap\";\nimport React from \"react\";\nimport utcToLocalTime from \"../../utils/utcToLocalTime\";\nimport CustomSelect from \"../Selects/CustomSelect\";\nimport { Option } from \"./configs/types\";\nimport { useTranslation } from \"react-i18next\";\nimport { useSelector } from \"react-redux\";\n\nexport interface IExamOption {\n id: number;\n code: string;\n title: string;\n createdAt: string;\n startTime: string;\n}\n\nexport interface IChatHeaderProps {\n name: string;\n avatar?: string;\n selectedOption?: number\n options?: IExamOption[];\n onChangeOption?: (value: Option) => void\n}\nconst ChatHeader: FC<IChatHeaderProps> = ({ name, avatar, options, selectedOption, onChangeOption }) => {\n // const [isOpenOptions, setOpenOptions] = useState<boolean>(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const actionRef = useRef<HTMLDivElement>(null);\n const language = useSelector((state: any) => state?.common?.language)\n const { t } = useTranslation()\n\n // const handleOpenOptions = () => {\n // setOpenOptions(true);\n // };\n\n // const handleCloseOptions = () => {\n // setOpenOptions(false);\n // };\n\n // const handleToggleOptions = () => {\n // setOpenOptions(!isOpenOptions);\n // };\n\n const handleChangeOption = (val: any) => {\n onChangeOption?.(val)\n }\n\n useEffect(() => {\n const handleClickOutside = (event: any) => {\n if (\n wrapperRef.current &&\n !wrapperRef.current.contains(event.target) &&\n actionRef.current &&\n !actionRef.current.contains(event.target)\n ) {\n // handleCloseOptions();\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [wrapperRef, actionRef]);\n \n const selectOptions = useMemo(\n () =>\n options?.map((i) => ({\n value: i.id,\n label: `${i.title} (${utcToLocalTime(i.startTime, t(\"date_time_format\"))})`,\n })),\n [JSON.stringify(options), language]\n );\n \n return (\n <div className=\"d-flex bg-light rounded-3 p-3\">\n <div>\n <img\n className={`rounded-circle ${styles[\"header__avatar\"]}`}\n src={avatar}\n alt={name}\n />\n </div>\n <div className=\"flex-grow-1 px-3 d-flex align-items-center\">\n <p className=\"mb-0 text-primary fw-medium\">{name}</p>\n </div>\n <div className=\"d-flex align-items-center\">\n {selectOptions !== undefined && (\n <div className={`${styles[\"header__select\"]} mx-3`}>\n <CustomSelect value={selectedOption} options={selectOptions} onChange={handleChangeOption} isClearable/>\n </div>\n )}\n <div className=\"actions d-flex align-items-center\">\n {/* <div\n className=\"pointer\"\n ref={actionRef}\n id=\"Popover1\"\n onClick={handleOpenOptions}\n >\n <PiDotsThreeOutlineFill className=\"fs-5\" />\n </div> */}\n </div>\n </div>\n {/* <Popover\n flip\n target=\"Popover1\"\n toggle={handleToggleOptions}\n isOpen={isOpenOptions}\n placement=\"bottom-end\"\n hideArrow\n >\n <div ref={wrapperRef}>\n <PopoverHeader>Popover Title</PopoverHeader>\n <PopoverBody>\n Sed posuere consectetur est at lobortis. Aenean eu leo quam.\n Pellentesque ornare sem lacinia quam venenatis vestibulum.\n </PopoverBody>\n </div>\n </Popover> */}\n </div>\n );\n};\n\nexport default ChatHeader;\n","import ChatList, { IChatListProps } from \"./ChatList\"\nimport InputChat, { IInputChatProps } from \"./InputChat\"\nimport ChatHeader, { IChatHeaderProps } from \"./ChatHeader\"\nimport styles from \"./styles/chatStyles.module.scss\"\nimport React, { FC, useEffect, useRef } from \"react\"\nimport { Option } from \"./configs/types\"\nimport { Spinner } from \"reactstrap\"\n\nexport interface IChatContainerProps{\n chatHeaderProps: IChatHeaderProps\n chatListProps: IChatListProps\n inputProps: IInputChatProps\n height?: string\n scrollOffset?: number\n isLoading?: boolean\n isScrollToEnd?: boolean\n onRead?: () => void\n onReachTop?: () => void\n onReachBottom?: () => void\n onEndScrollToEnd?: () => void\n}\n\nconst ChatContainer: FC<IChatContainerProps> = ({\n chatHeaderProps,\n chatListProps,\n inputProps,\n scrollOffset = 0,\n isLoading = false,\n isScrollToEnd,\n onRead,\n onReachTop,\n onReachBottom,\n onEndScrollToEnd\n}) => {\n const {\n onReply,\n onAddExamMessage\n } = chatListProps\n\n const {\n onChangeOption\n } = chatHeaderProps\n const inputRef = useRef<HTMLInputElement>(null)\n const listRef = useRef<HTMLDivElement>(null)\n const listItemRef = useRef<HTMLUListElement>(null)\n const scrollRef = useRef<any>()\n const focusRef = useRef<any>()\n const addEventTimeout = useRef<any>()\n\n const handleReply = (id: number, content: string, examId?: number) => {\n inputRef.current?.focus()\n onReply?.(id, content, examId)\n }\n\n const handleAddExamMessage = (examId: number, examTitle: string, examCode: string) => {\n inputRef.current?.focus()\n onAddExamMessage(examId, examTitle, examCode)\n }\n\n const handleChangeExamOption = (val: Option) => {\n if(!!val?.value) inputRef.current?.focus()\n onChangeOption?.(val)\n }\n const handleScroll = () => {\n if(listRef.current){\n const scrollTop = listRef.current.scrollTop\n const scrollHeight = listRef.current.scrollHeight\n const clientHeight = listRef.current.clientHeight\n \n if (scrollTop + clientHeight + scrollOffset >= scrollHeight) {\n onReachBottom?.()\n } else if (scrollTop <= scrollOffset) {\n onReachTop?.()\n }\n }\n \n if(scrollRef.current) clearTimeout(scrollRef.current)\n scrollRef.current = setTimeout(() => {\n onRead?.()\n }, 800)\n }\n\n const handleFocus = () => {\n if(focusRef.current) clearTimeout(focusRef.current)\n focusRef.current = setTimeout(() => {\n onRead?.()\n }, 300)\n }\n\n useEffect(() => {\n scrollRef.current && clearTimeout(scrollRef.current)\n addEventTimeout.current && clearTimeout(addEventTimeout.current)\n listRef.current?.removeEventListener(\"scroll\", handleScroll)\n if(isScrollToEnd && !isLoading && chatListProps.messages?.length){\n listItemRef.current?.lastElementChild?.scrollIntoView({\n behavior: \"smooth\"\n })\n onEndScrollToEnd?.()\n\n addEventTimeout.current = setTimeout(() => {\n listRef.current?.addEventListener(\"scroll\", handleScroll)\n }, 800)\n } else listRef.current?.addEventListener(\"scroll\", handleScroll)\n return () => {\n listRef.current?.removeEventListener(\"scroll\", handleScroll)\n scrollRef.current && clearTimeout(scrollRef.current)\n addEventTimeout.current && clearTimeout(addEventTimeout.current)\n }\n }, [JSON.stringify(chatListProps.messages), scrollOffset, isLoading, onEndScrollToEnd, onRead, isScrollToEnd])\n\n useEffect(() => {\n inputRef.current?.addEventListener(\"focus\", handleFocus)\n return () => {\n inputRef.current?.removeEventListener(\"focus\", handleFocus)\n focusRef.current && clearTimeout(focusRef.current)\n }\n }, [onRead])\n\n return <div className=\"d-flex flex-column w-100 h-100 border border-1 border-light rounded-3 shadow-sm\">\n <div>\n <ChatHeader {...chatHeaderProps} onChangeOption={handleChangeExamOption}/>\n </div>\n <div ref={listRef} className={`flex-grow-1 ${styles[\"body\"]}`}>\n {\n isLoading && <div className=\"d-flex justify-content-center\">\n <Spinner color=\"secondary\" className=\"my-2\">\n Loading...\n </Spinner>\n </div>\n }\n <ChatList {...chatListProps} listItemRef={listItemRef} onReply={handleReply} onAddExamMessage={handleAddExamMessage}/>\n </div>\n <div>\n <InputChat {...inputProps} inputRef={inputRef}/>\n </div>\n </div>\n}\n\nexport default ChatContainer","import { api } from \"../../../configs/api\"\nimport { BASE_URL } from \"../../../utils/constants\"\nimport { ConversationFilter, MessageFilter, MessageRequest } from \"../configs/types\"\n\nconst CONVERSATION_URL = `${BASE_URL}/api/conversation`\n\nexport const getListConversation = (query: ConversationFilter) =>\n api.get(`${CONVERSATION_URL}`, {\n params: query\n })\n\nexport const createConversation = (studentId: number) =>\n api.post(`${CONVERSATION_URL}`, {\n targetUserId: `${studentId}`\n })\n\nexport const apiAddMessage = (conversationId: number, message: MessageRequest) =>\n api.post(`${CONVERSATION_URL}/${conversationId}/messages`, message)\n\nexport const getMessagesByConversation = (conversationId: number, filter: MessageFilter) =>\n api.get(`${CONVERSATION_URL}/${conversationId}/messages`, {\n params: filter\n })\n\nexport const apiMarkReadMessage = (conversationId: number, messageId: number) =>\n api.put(`${CONVERSATION_URL}/${conversationId}/messages/${messageId}/mark-read`)\n\nexport const apiGetConversationByUserId = (userId: number) =>\n api.get(`${CONVERSATION_URL}/users/${userId}`)\n ","import { ConversationFilter, MessageFilter, MessageSortBy, OrderBy } from \"./types\";\n\nexport enum ExamStatus {\n Default = \"Default\",\n Pending = \"Pending\",\n Inprogress = \"Inprogress\",\n Completed = \"Completed\"\n}\n\n\nexport const CONVERSATION_DEFAULT_FILTER: ConversationFilter = {\n currentPage: 1,\n pageSize: -1,\n textSearch: \"\"\n}\n\nexport const MESSAGE_DEFAULT_FILTER: MessageFilter = {\n currentPage: 1,\n pageSize: 12,\n textSearch: \"\",sortColumnDirection: OrderBy.DESC,\n sortColumnName: MessageSortBy.CreatedAt\n \n}","import { api } from \"../../../configs/api\"\nimport { BASE_URL } from \"../../../utils/constants\"\n\nconst EXAM_URL = `${BASE_URL}/api/exam`\n\nexport const getListExamApi = (query: any) =>\n api.get(`${EXAM_URL}/getList`, {\n params: query\n })","import { useState } from \"react\";\nimport { ExamResponse } from \"../configs/types\";\nimport { ExamStatus } from \"../configs/constants\";\nimport { getListExamApi } from \"../apiClient/examService\";\n\nconst useExamList = (isStudent: boolean = true) => {\n const [exams, setExams] = useState<ExamResponse[]>()\n\n const getListExam = async (userId?: number) => {\n setExams([])\n try{\n const res = await getListExamApi({\n currentPage: 1,\n pageSize: -1,\n sortColumnDirection: \"DESC\",\n sortColumnName: \"CreatedAt\",\n statuses: [ExamStatus.Completed],\n studentId: !isStudent ? userId : undefined,\n teacherId: isStudent ? userId : undefined\n });\n const data = res.data?.items || []\n setExams(data)\n } catch (error) {\n console.log({error});\n }\n }\n \n return {\n getListExam,\n exams\n }\n}\n\nexport default useExamList","import { useState } from \"react\"\nimport { MESSAGE_DEFAULT_FILTER } from \"../configs/constants\"\nimport { MessageResponse, MessageFilter } from \"../configs/types\"\nimport { apiMarkReadMessage, getMessagesByConversation } from \"../apiClient/conversationService\"\n\nconst useMessageList = (userId?: number, getListExamOptions?: Function) => {\n const [messages, setMessages] = useState<MessageResponse[]>([])\n const [messageFilter, setMessageFilter] = useState<MessageFilter>(MESSAGE_DEFAULT_FILTER)\n const [isLoading, setLoading] = useState<boolean>(false)\n\n const getMessageList = async (conversationId: number, examId?: number) => {\n setLoading(true)\n try {\n const filter = {\n ...messageFilter,\n examId: !examId ? messageFilter.examId : examId\n }\n const res = await getMessagesByConversation(conversationId, filter)\n if(messageFilter.beforeDate) setMessages((state: MessageResponse[]) => ([...(res.data.items?.reverse() || []), ...state]))\n else setMessages(res.data.items?.reverse())\n !!getListExamOptions && await getListExamOptions(userId)\n } catch (error) {\n console.log({error});\n }\n setLoading(false)\n }\n\n const handleLoadMore = () => {\n if(isLoading) return\n const lastItem = messages[0]\n if (!lastItem) return\n const newFilter = {\n ...messageFilter,\n currentPage: 1,\n beforeDate: lastItem.createdAt\n }\n setMessageFilter(newFilter)\n return JSON.stringify(newFilter) === JSON.stringify(messageFilter)\n }\n\n const handleMarkReadMessage = async (conversationId: number, messageId: number) => {\n try {\n await apiMarkReadMessage(conversationId, messageId)\n } catch (error) {\n console.log({error});\n }\n }\n\n const resetMessages = () => {\n setMessageFilter(MESSAGE_DEFAULT_FILTER)\n setMessages([])\n }\n\n const handleChangeExamId = (value: any) => {\n setMessageFilter({\n ...messageFilter,\n examId: value?.value,\n currentPage: 1\n })\n }\n\n return {\n isLoading,\n messageFilter,\n messages,\n getMessageList,\n setMessages,\n resetMessages,\n handleChangeExamId,\n handleMarkReadMessage,\n handleLoadMore\n }\n}\n\nexport default useMessageList","import { useRef, useState, useMemo, useEffect, useCallback } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setLoading } from \"../../../redux/commons/action\";\nimport { PUSHER_CONFIG, getAccessToken, BASE_URL } from \"../../../utils/constants\";\nimport { IChatItemProps, ChatItemType } from \"../ChatItem\";\nimport { apiGetConversationByUserId, createConversation, apiMarkReadMessage, apiAddMessage } from \"../apiClient/conversationService\";\nimport { ConversationResponse, MessageResponse, MessageRequest, MessageSourceType, MessageAction, MessageStatus } from \"../configs/types\";\nimport Pusher, { Channel } from \"pusher-js\";\nimport useExamList from \"./useExamList\";\nimport useMessageList from \"./useMessageList\";\nimport moment from \"moment\";\nimport { toast } from \"react-toastify\";\n\ninterface Props {\n conversation?: ConversationResponse;\n userId?: number;\n onUpdateLastMessage?: (message: MessageResponse) => void;\n onUpdateConversation?: (conversation: ConversationResponse) => void;\n onCreateConversationSuccess?: Function,\n onGetMessagesSuccess?: Function\n examId?: number\n}\nconst useChatContainer = (props: Props) => {\n const { conversation, userId, examId, onUpdateLastMessage, onCreateConversationSuccess, onGetMessagesSuccess } =\n props;\n const pusher = useRef<Pusher>();\n const channel = useRef<Channel>();\n const channelName = useRef<string>();\n const loadingRef = useRef<boolean>(false);\n const firstLoadRef = useRef<boolean>(true);\n\n const dispatch = useDispatch();\n\n const roles: string[] =\n useSelector((state: any) => state?.common?.user?.roles) || [];\n const isStudent = roles.includes(\"Student\");\n\n const [selectedConversation, setSelectedConversation] =\n useState<ConversationResponse>();\n const [message, setMessage] = useState<MessageRequest>();\n const [messageStatus, setMessageStatus] = useState<MessageStatus>(MessageStatus.Default)\n const [isScrollToEnd, setScrollToEnd] = useState<boolean>(true)\n\n const { exams, getListExam } = useExamList(isStudent);\n\n const {\n isLoading: isLoadingMessages,\n messages,\n messageFilter,\n getMessageList,\n resetMessages,\n handleChangeExamId,\n setMessages,\n handleLoadMore\n } = useMessageList(isStudent ? selectedConversation?.teacher?.id : selectedConversation?.student?.id, !userId ? getListExam : undefined);\n\n const handleToggleScrollToEnd = () => {\n setScrollToEnd((state: boolean) => !state)\n }\n\n const handleAddMessage = async () => {\n if(loadingRef.current) return\n if(messages.some(i => i.id === 0)) return\n loadingRef.current = true;\n if (!selectedConversation?.id || !message?.content?.trim()?.length) return;\n setScrollToEnd(true)\n setMessages((state: MessageResponse[]) => {\n return [...state, {\n id: 0,\n isStudent: isStudent,\n content: message.content,\n examId: message.examId,\n parentId: message.parentId,\n parentContent: message.parentContent,\n exam: message.examId ? {\n id: message.examId,\n startTime: moment().format(\"YYYY-MM-DDTHH:mm:ss\"),\n title: message.examTitle || \"\",\n code: message.examCode || \"\",\n createdAt: moment().format(\"YYYY-MM-DDTHH:mm:ss\")\n } : undefined,\n isRead: false,\n createdAt: moment().format(\"YYYY-MM-DDTHH:mm:ss\")\n }]\n })\n setMessage((state?: MessageRequest) => {\n if(!state) return undefined;\n return ({\n ...state,\n content : \"\",\n parentId: undefined,\n parentContent: \"\",\n examId: messageFilter.examId,\n examTitle: messageFilter.examId ? message.examTitle : \"\"\n })\n });\n setMessageStatus(MessageStatus.Sending)\n try {\n \n await apiAddMessage(selectedConversation.id, {\n ...message,\n examId: !!userId ? examId : message.examId\n });\n } catch (error) {\n console.log({ error });\n setMessageStatus(MessageStatus.SentError)\n setMessages((state: MessageResponse[]) => {\n return [...state.filter(i => i.id !== 0)]\n })\n toast.error(error.response?.data)\n }\n loadingRef.current = false;\n };\n\n const handleAddExamMessage = (examId: number, title: string, examCode: string) => {\n setMessage(\n !!message\n ? {\n ...message,\n examId,\n examCode,\n examTitle: title,\n parentId: undefined,\n parentContent: \"\",\n }\n : {\n examId,\n examCode,\n content: \"\",\n examTitle: title,\n parentId: undefined,\n parentContent: \"\",\n }\n );\n };\n\n const handleReplyMessage = (\n parentId: number,\n content: string,\n examId?: number\n ) => {\n setMessage({\n content: \"\",\n examId,\n parentId,\n parentContent: content,\n examTitle: message?.examTitle,\n });\n };\n\n const handleClearReply = () => {\n message &&\n setMessage({\n ...message,\n parentId: undefined,\n examId: messageFilter.examId ? messageFilter.examId : undefined,\n parentContent: \"\",\n examTitle: messageFilter.examId ? message.examTitle : \"\",\n });\n };\n\n const handleChangeInput = (text: string) => {\n setMessage({\n ...message,\n content: text,\n });\n };\n\n const handleFilterExam = (val: any) => {\n const examTitle = val?.label?.split(\" \")?.slice(0, -1).join(\" \");\n setMessage({\n examId: val?.value,\n content: \"\",\n examTitle: examTitle,\n parentId: undefined,\n parentContent: \"\",\n });\n \n handleChangeExamId(val);\n };\n\n const messageList: IChatItemProps[] = useMemo(() => {\n if (!selectedConversation) return [];\n \n let examCode: string | undefined = undefined;\n const results = messages.map((i: MessageResponse, index: number) => {\n let isFirst = index === 0;\n let isLast = index === messages.length - 1;\n if (\n index > 0 &&\n ((messages[index - 1].isStudent !== i.isStudent && !i.isSystemLog) ||\n i.isSystemLog || (messages[index - 1].examId !== i.examId))\n )\n isFirst = true;\n if (\n index < messages.length - 1 &&\n ((messages[index + 1].isStudent !== i.isStudent && i.examId !== messages[index + 1].examId) || i.examId !== messages[index + 1].examId ||\n messages[index + 1].isSystemLog)\n )\n isLast = true;\n const name = isStudent ? \"You\" : selectedConversation.student.displayName;\n let content = i?.content;\n let showExamHeader = false;\n if (examCode != i.exam?.code && !messageFilter.examId && !userId) {\n if (i.exam?.code) showExamHeader = true;\n examCode = i.exam?.code;\n }\n switch (i.type) {\n case MessageSourceType.Exam:\n switch (i.action) {\n case MessageAction.Took:\n content = `${name} took the exam ${i.exam?.title}`;\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return {\n id: i.id,\n isMe: isStudent === i.isStudent,\n avatar: isStudent\n ? selectedConversation.teacher.avatar\n : selectedConversation.student.avatar,\n name: selectedConversation.student.displayName,\n isRead: i.isRead,\n createdAt: i.createdAt,\n content,\n isFirst,\n isLast,\n isSystemLog: i.isSystemLog,\n examCode: !messageFilter.examId && !userId ? i.exam?.code : undefined,\n examId: i.exam?.id,\n examTitle: i.exam?.title,\n type: i.exam?.code ? ChatItemType.Exam : undefined,\n showExamHeader,\n actionLink:\n i.exam?.code && (isStudent ? `/student/check/live-result?examCode=${i.exam?.code}` : `/teacher/exam-status/main?examCode=${i.exam?.code}`),\n parentId: i.parentId,\n parentContent: i.parentContent,\n status: i.id ? MessageStatus.Default : messageStatus\n };\n });\n return results\n }, [\n JSON.stringify(messages),\n JSON.stringify(message),\n isStudent,\n JSON.stringify(selectedConversation),\n messageFilter.examId,\n isStudent,\n userId,\n messageStatus\n ]);\n\n const handleNewMessageSent = (data: MessageResponse) => {\n if (\n (!messageFilter.examId && !examId) ||\n (messageFilter.examId && data.examId === messageFilter.examId) ||\n (examId && examId === data.examId)\n ) {\n setScrollToEnd(true)\n setMessages((state: MessageResponse[]) => {\n if(state.some(i => i.id === 0)) return [...state.filter(i => i.id !== 0), data];\n else return [...state, data]\n });\n }\n onUpdateLastMessage?.(data);\n };\n\n const handleMessageMarkRead = (data: number[]) => {\n setMessages((state: MessageResponse[]) => [...state.map(i => ({\n ...i,\n isRead: data.includes(i.id || 0) ? true : i.isRead \n }))])\n }\n\n const handleLoadMoreMessages = () => {\n if(handleLoadMore()){\n getMessageConversation()\n }\n }\n\n\n const cleanupPusher = () => {\n pusher.current?.unbind(\"new-message-event\", handleNewMessageSent);\n pusher.current?.unbind(\"message-read-event\", handleMessageMarkRead);\n channelName.current &&\n pusher.current &&\n pusher.current.unsubscribe(channelName.current);\n };\n\n useEffect(() => {\n if (\n PUSHER_CONFIG.cluster &&\n PUSHER_CONFIG.key &&\n !!selectedConversation?.id\n ) {\n const token = getAccessToken();\n pusher.current = new Pusher(PUSHER_CONFIG.key, {\n cluster: PUSHER_CONFIG.cluster,\n authEndpoint: `${BASE_URL}/api/auth/pusher`,\n auth: {\n params: {},\n headers: {\n Authorization: `Bearer ${token}`,\n },\n },\n });\n channelName.current = `presence-conversation-channel-${selectedConversation?.id}`;\n channel.current = pusher.current.subscribe(channelName.current);\n pusher.current.bind(\"new-message-event\", handleNewMessageSent);\n pusher.current.bind(\"message-read-event\", handleMessageMarkRead);\n }\n return cleanupPusher;\n }, [selectedConversation?.id, messageFilter.examId, examId]);\n\n useEffect(() => {\n const getConversation = async () => {\n resetMessages()\n setScrollToEnd(true)\n if (conversation?.id !== undefined) {\n setSelectedConversation(conversation);\n return;\n }\n if (!userId) return;\n dispatch(setLoading(true));\n try {\n let res = await apiGetConversationByUserId(userId);\n if (!res.data.data) {\n res = await createConversation(userId);\n }\n setSelectedConversation(res.data.data);\n } catch (error) {\n console.log({\n error,\n });\n }\n dispatch(setLoading(false));\n };\n getConversation();\n }, [conversation?.id, userId]);\n\n const handleMarkRead = useCallback(async () => {\n if (!selectedConversation?.id) return;\n try {\n await apiMarkReadMessage(selectedConversation.id, -1);\n } catch (error) {\n console.log({error});\n }\n }, [selectedConversation?.id])\n\n const getMessageConversation = async () => {\n if(!roles.length) return\n if (selectedConversation?.id === undefined) return;\n try {\n if (selectedConversation.id === 0) {\n const userId = isStudent ? selectedConversation.teacher.id : selectedConversation.student.id\n const res = await createConversation(userId);\n await onCreateConversationSuccess?.(res.data.data?.id);\n } else {\n if(firstLoadRef.current){\n await handleMarkRead();\n firstLoadRef.current= false;\n }\n await getMessageList(selectedConversation.id, examId);\n onGetMessagesSuccess?.();\n }\n } catch (error) {\n toast.error(\"Fail to fetch data!\")\n }\n };\n\n const handleConversationChange = () => {\n resetMessages()\n setScrollToEnd(true)\n }\n\n useEffect(() => {\n getMessageConversation();\n }, [JSON.stringify(selectedConversation), JSON.stringify(roles), JSON.stringify(messageFilter), examId]);\n\n const userName = (isStudent\n ? selectedConversation?.teacher?.displayName\n : selectedConversation?.student?.displayName) || \"\";\n const userAvatar = (isStudent\n ? selectedConversation?.teacher?.avatar\n : selectedConversation?.student?.avatar) || \"\";\n\n\n return {\n chatHeaderProps: {\n name: userName,\n avatar: userAvatar,\n options: exams,\n selectedOption: messageFilter.examId,\n onChangeOption: handleFilterExam,\n },\n chatListProps: {\n messages: messageList,\n onAddExamMessage: handleAddExamMessage,\n onReply: handleReplyMessage,\n onReTrySendMessage: handleAddMessage\n },\n inputProps: {\n text: message?.content || \"\",\n parentText: message?.parentContent,\n examTitle: message?.examTitle,\n onChangeInput: handleChangeInput,\n onSubmit: handleAddMessage,\n onClearReply: !messageFilter.examId || message?.parentContent ? handleClearReply : undefined,\n },\n isScrollToEnd,\n isLoadingMessages,\n exams,\n messageList,\n selectedConversation,\n messageStatus,\n messageFilter,\n handleToggleScrollToEnd,\n handleLoadMoreMessages,\n getMessageList,\n handleFilterExam,\n setMessage,\n resetMessages: handleConversationChange,\n getMessageConversation,\n handleMarkRead\n };\n};\n\nexport default useChatContainer;\n","import { api } from \"../../../configs/api\"\nimport { BASE_URL } from \"../../../utils/constants\"\nimport { ConversationFilter } from \"../configs/types\"\n\nconst STUDENT_STATUS_URL = `${BASE_URL}/api/user`\n\nexport const getStudentConversationListApi = (query: ConversationFilter) => \n api.get(`${STUDENT_STATUS_URL}/GetStudentConversations`, {params: query})\n","import { ChangeEvent, useEffect, useState } from \"react\"\nimport { ConversationFilter, ConversationResponse, MessageAction, MessageResponse, MessageSourceType } from \"../configs/types\"\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { CONVERSATION_DEFAULT_FILTER } from \"../configs/constants\";\nimport { getListConversation } from \"../apiClient/conversationService\";\nimport { setAlert, setLoading } from \"../../../redux/commons/action\";\nimport { getStudentConversationListApi } from \"../apiClient/studentStatusService\";\nimport _ from \"lodash\";\n\nlet isFirstLoad = true\nconst useConversationList = () => {\n const dispatch = useDispatch()\n\n const user = useSelector((state: any) => state?.common?.user)\n const roles = user?.roles || []\n const isStudent = roles.includes(\"Student\")\n const [selectedConversation, setSelectedConversation]= useState<ConversationResponse>();\n const [conversations, setConversations] = useState<ConversationResponse[]>([])\n const [conversationFilter, setConversationFilter] = useState<ConversationFilter>(CONVERSATION_DEFAULT_FILTER);\n\n const handleChangeSelectedConversation = (val: ConversationResponse) => {\n setSelectedConversation(val)\n }\n\n const handleNewMessageConversation = (val: ConversationResponse) => {\n setConversations((state: ConversationResponse[]) => {\n const index = state.findIndex(i => i.id === val.id)\n if(index > -1 && JSON.stringify(val) !== JSON.stringify(state[index])){\n return [val, ...state.slice(0, index), ...state.slice(index + 1)]\n }\n else return [val, ...state]\n })\n setSelectedConversation((state: ConversationResponse | undefined) => {\n if(!state) return val\n return state\n })\n }\n\n const handleMessageReadConversation = (id: number, totalUnread: number) => {\n setConversations((state: ConversationResponse[]) => {\n const index = state.findIndex(i => i.id === id)\n \n if(index === -1 || totalUnread === state[index].totalUnReadMessage) return state\n return [...state.slice(0, index), {\n ...state[index],\n totalUnReadMessage: totalUnread\n }, ...state.slice(index + 1)]\n })\n setSelectedConversation((state: ConversationResponse | undefined) => {\n if(!!state) return ({\n ...state,\n totalUnReadMessage: totalUnread\n })\n return state\n })\n }\n\n const handleChangeTextSearch = (e: ChangeEvent<HTMLInputElement>) => {\n setConversationFilter((state: ConversationFilter) => ({\n ...state,\n textSearch: e.target.value\n }));\n };\n\n const handleChangeFilter = (filter: ConversationFilter) => {\n setConversationFilter((state: ConversationFilter) => ({\n ...state,\n ...filter\n }))\n }\n\n const formatConversationLastMessageContent = (conversation: ConversationResponse) => {\n if(!conversation?.lastMessage) return \"\"\n let content = conversation.lastMessage.content\n\n switch (conversation.lastMessage.type) {\n case MessageSourceType.Exam:\n switch (conversation.lastMessage.action) {\n case MessageAction.Took:\n content = `${isStudent ? \"You\" : conversation.student.displayName} took the exam ${conversation.lastMessage.exam?.title}`\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return content\n }\n\n const getConversationList = async () => {\n if(!roles.length) return\n isFirstLoad && dispatch(setLoading(true));\n try {\n const apiGetConversations = isStudent ? getListConversation: getStudentConversationListApi\n const res = await apiGetConversations(conversationFilter)\n setConversations(res.data.items || [])\n \n !selectedConversation && setSelectedConversation(res.data.items?.[0])\n } catch (error) {\n setSelectedConversation(undefined)\n dispatch(setAlert({\n type: \"danger\",\n message: \"Fail to fetch data!\"\n }))\n }\n isFirstLoad && dispatch(setLoading(false));\n if(isFirstLoad) isFirstLoad = false;\n }\n\n const handleUpdateTotalUnreadMessage = () => {\n if(!selectedConversation?.id) return\n setConversations((state: ConversationResponse[]) => {\n const updateIndex = state.findIndex(i => i.id === selectedConversation.id)\n if(updateIndex < 0) return state\n return [\n ...state.slice(0, updateIndex),\n {\n ...state[updateIndex],\n totalUnReadMessage: 0\n },\n ...state.slice(updateIndex + 1)\n ] \n })\n }\n\n const handleUpdateLastMessage = (lastMessage: MessageResponse) => {\n setConversations((state: ConversationResponse[]) => {\n const updateIndex = state.findIndex(i => i.id === lastMessage.conversationId)\n if(updateIndex < 0) return state\n console.log({\n lastMessage\n });\n \n return [\n {\n ...state[updateIndex],\n lastMessage\n },\n ...state.slice(0, updateIndex),\n ...state.slice(updateIndex + 1)\n ] \n })\n }\n\n const handleCreateConversationSuccess = async (id: number) => {\n if(!selectedConversation) return\n setSelectedConversation({\n ...selectedConversation,\n id,\n })\n const index = conversations.findIndex(i => i.student.id === selectedConversation?.student.id && i.teacher.id === selectedConversation?.teacher.id)\n if(index > -1) {\n setConversations([\n ...conversations.slice(0, index), {\n ...selectedConversation,\n id,\n },\n ...conversations.slice(index + 1)\n ])\n }\n }\n\n \n useEffect(() => {\n getConversationList()\n }, [JSON.stringify(conversationFilter), roles.length])\n \n useEffect(() => {\n window.document.title = \"Q&A\"\n }, [])\n\n return {\n isStudent,\n conversationFilter,\n selectedConversation,\n conversations,\n handleUpdateTotalUnreadMessage,\n handleChangeFilter,\n handleChangeSelectedConversation,\n handleChangeTextSearch,\n setSelectedConversation,\n handleUpdateLastMessage,\n getConversationList,\n formatConversationLastMessageContent,\n handleNewMessageConversation,\n handleCreateConversationSuccess,\n handleMessageReadConversation\n }\n}\n\nexport default useConversationList","import Pusher, { Channel } from \"pusher-js\"\nimport { useSelector } from \"react-redux\"\nimport { BASE_URL, PUSHER_CONFIG } from \"../../../utils/constants\"\nimport { useEffect, useRef } from \"react\"\nimport getAccessToken from \"../../../utils/getAccessToken\"\nimport { ConversationResponse } from \"../configs/types\"\nconst usePusherConversation = (onNewMessageConversation?: (data: ConversationResponse) => void, onReadMessageConversation?: (id: number, total: number) => void) => {\n const pusher = useRef<Pusher>()\n const channel = useRef<Channel>()\n const channelName = useRef<string>()\n\n const userId = useSelector((state: any) => state?.common?.user?.id)\n\n const handleNewMessageConversationCreated = (data: ConversationResponse) => {\n onNewMessageConversation?.(data)\n }\n\n const handleReadMessageConversation = (data: ConversationResponse) => {\n onReadMessageConversation?.(data.id, data.totalUnReadMessage)\n }\n\n const cleanupPusher = () => {\n channel.current && channel.current.unbind(\"message-conversation-event\", handleNewMessageConversationCreated);\n channel.current && channel.current.unbind(\"message-conversation-read-event\", handleReadMessageConversation)\n channelName.current &&\n pusher.current &&\n pusher.current.unsubscribe(channelName.current);\n };\n\n useEffect(() => {\n if (\n PUSHER_CONFIG.cluster &&\n PUSHER_CONFIG.key &&\n !!userId\n ) {\n const token = getAccessToken()\n pusher.current = new Pusher(PUSHER_CONFIG.key, {\n cluster: PUSHER_CONFIG.cluster,\n authEndpoint: `${BASE_URL}/api/auth/pusher`,\n auth: {\n params: {},\n headers: {\n Authorization: `Bearer ${token}`\n }\n }\n })\n channelName.current = `presence-conversation-channel-userId-${userId}`\n \n channel.current = pusher.current.subscribe(channelName.current)\n channel.current.bind(\n \"message-conversation-event\",\n handleNewMessageConversationCreated\n )\n channel.current.bind(\n \"message-conversation-read-event\",\n handleReadMessageConversation\n )\n }\n return cleanupPusher\n }, [userId])\n return {}\n}\n\nexport default usePusherConversation\n","import React from \"react\"\nimport CreatableSelect from 'react-select/creatable';\n\nconst CustomCreatable = ({\n defaultValue,\n options,\n isDisabled,\n scrollBottom,\n value,\n isMulti,\n ...rest\n}: any) => {\n const initialValues = Array.isArray(value) ? options.filter((i: any)=> value.includes(i.value)) : isMulti ? options.filter((i: any) => i.value == value) : options.find((i: any) => i.value == value)\n \n return (\n <CreatableSelect\n isClearable\n isDisabled={isDisabled}\n options={options}\n value={initialValues}\n menuPlacement={scrollBottom ? \"top\" : \"auto\"}\n isMulti={isMulti}\n {...rest}\n\n />\n )\n}\n\nexport default CustomCreatable\n","import React from \"react\"\nimport AsyncSelect from \"react-select\"\n\nconst CustomAsyncSelect = ({\n isDefault,\n defaultValue,\n options,\n isDisabled,\n scrollBottom,\n value,\n isMulti,\n ...rest\n}: any) => {\n const initialValues = Array.isArray(value) ? options.filter((i: any)=> value.includes(i.value)) : isMulti ? options.filter((i: any) => i.value == value) : options.find((i: any) => i.value == value)\n \n return (\n <AsyncSelect\n isDisabled={isDisabled}\n options={options}\n value={!isDefault ? initialValues : undefined}\n defaultValue={isDefault ? initialValues : undefined}\n menuPlacement={scrollBottom ? \"top\" : \"auto\"}\n isMulti={isMulti}\n {...rest}\n\n />\n )\n}\n\nexport default CustomAsyncSelect\n","import { Exam } from \"./types\";\n\nexport const DURATION_OPTIONS = Array.from({ length: 120 }, (_, i) => i + 1);\nexport const SCORE_OPTIONS = Array.from({ length: 10 }, (_, i) => i + 1);\nexport const QUESTION_OPTIONS = Array.from({ length: 40 }, (_, i) => i + 1);\nexport const ANSWER_OPTIONS = Array.from({ length: 9 }, (_, i) => i + 2);\nexport const DEFAULT_SCORE = 2\nexport const DEFAULT_ANSWER_COUNT = 5\n\nexport const DEFAULT_EXAM: Exam = {\n questions: [\n {\n article: 1,\n correctAnswers: [1],\n numberOfAnswers: DEFAULT_ANSWER_COUNT,\n score: DEFAULT_SCORE\n }\n ],\n title: \"\",\n duration: 1\n}","import React, { FC } from 'react'\nimport { FormGroup, Input, Label } from \"reactstrap\"\nimport CustomSelect from \"../../../components/Selects/CustomSelect\"\n// import { useTranslation } from 'react-i18next'\nimport styles from \"../styles/styles.module.scss\"\nimport { DEFAULT_SCORE, SCORE_OPTIONS } from '../configs/constants'\n\nexport interface QuestionViewProps{\n index: number\n question: any\n answerCount: number\n isDisabled?: boolean\n onChangeCorrectAnswers: (value: any, index: number) => void\n onChangeScoreAnswer: (value: number, index: number) => void\n}\nconst QuestionView: FC<QuestionViewProps> = ({\n index,\n question,\n answerCount,\n isDisabled,\n onChangeCorrectAnswers,\n onChangeScoreAnswer\n}) => {\n // const { t } = useTranslation()\n \n const scoreOptions = SCORE_OPTIONS.map(i => ({\n label: DEFAULT_SCORE === i ? `${i}점 (기본값)` : `${i}점`,\n value: i\n }))\n\n return <div className=\"d-flex justify-content-between\">\n <div className=\"d-flex flex-grow-1\">\n <div className={`${styles[\"question-title\"]} me-2`}>\n 문제 {question.questionOrder + 1}번\n </div>\n <div className=\"d-flex flex-grow-1\">\n {\n Array.from({ length: answerCount }, (_, i) => i + 1).map(i => (\n <FormGroup className=\"d-flex flex-column px-4\">\n <Label htmlFor={`answer-${i}`} className={`${styles[\"question-label\"]}`}>{i}번</Label>\n <Input\n id={`answer-${i}`}\n type={\"radio\"}\n checked={question.correctAnswers.includes(i)}\n onClick={() => onChangeCorrectAnswers(i, index)}\n disabled={isDisabled}\n />\n </FormGroup>\n ))\n }\n </div>\n </div>\n <div className=\"d-flex align-items-center\">\n <FormGroup className=\"mx-3\" style={{\n width: \"140px\"\n }}>\n <CustomSelect\n value={question.score}\n options={scoreOptions}\n onChange={(value: any) => onChangeScoreAnswer(value.value, index)}\n isDisabled={isDisabled}\n />\n </FormGroup>\n </div>\n </div>\n}\n\nexport default QuestionView","import React, { FC } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { PiDotsNineLight } from \"react-icons/pi\"\nimport { Col, FormGroup, Label, Row } from \"reactstrap\"\nimport CustomSelect from \"../../../components/Selects/CustomSelect\"\nimport styles from \"../styles/styles.module.scss\"\nimport QuestionView from \"./QuestionView\"\nimport { ANSWER_OPTIONS, QUESTION_OPTIONS } from \"../configs/constants\"\n\nexport interface ArticleGroupViewProps {\n categoryOptions: any[]\n article: number\n questionCount: number\n categoryId?: number\n answerCount: number\n questions: any\n isMultiple?: boolean\n isActive?: boolean\n isDisabled?: boolean\n onChangeQuestionCount: (article: number, questionCount: number, answerCount: number) => void\n onChangeCategory: (article: number, categoryId: number) => void\n onChangeAnswerCount: (article: number, newAnswerCount: number, answerCount: number) => void\n onChangeCorrectAnswers: (article: number, index: number, answer: number) => void\n onChangeScoreAnswer: (article: number, index: number, score: number) => void\n}\nconst ArticleGroupView: FC<ArticleGroupViewProps> = ({\n categoryOptions,\n article,\n questions,\n answerCount,\n questionCount,\n categoryId,\n isActive,\n isDisabled,\n onChangeQuestionCount,\n onChangeCategory,\n onChangeAnswerCount,\n onChangeCorrectAnswers,\n onChangeScoreAnswer\n}) => {\n const { t } = useTranslation()\n\n const handleChangeQuestionCount = (value: any) => {\n onChangeQuestionCount(article, value?.value, answerCount)\n }\n\n const handleChangeCategory = (value: any) => {\n onChangeCategory(article, value?.value)\n }\n \n const handleChangeAnswerCount = (value: any) => {\n onChangeAnswerCount(article, value?.value, answerCount)\n }\n\n const handleChangeCorrectAnswers = (value: any, index: number) => {\n onChangeCorrectAnswers(article, index, value)\n }\n\n const handleChangeScoreAnswer = (value: number, index: number) => {\n onChangeScoreAnswer(article, index, value)\n }\n\n const questionOptions = QUESTION_OPTIONS.map(i => ({\n label: `${i}개`,\n value: i\n }))\n\n const answerOptions = ANSWER_OPTIONS.map(i => ({\n label: `${i}번`,\n value: i\n }))\n return (\n <div className={`d-flex ${styles[\"question\"]} ${isActive ? styles[\"question--active\"] : \"\"}`}>\n <div className=\"py-1\">\n <PiDotsNineLight size={18}/>\n </div>\n <div className=\"px-4\">\n <Row>\n <Col xs={12}>\n <p className={`mb-0 ${styles[\"question-article\"]}`}>문항</p>\n <p className={`text-center ${styles[\"question-article\"]}`}>{article}</p>\n </Col>\n </Row>\n </div>\n <div className=\"flex-grow-1\">\n <Row>\n <Col xs={3}>\n <FormGroup>\n <Label htmlFor=\"question_count\" className={`${styles[\"question-label\"]}`}>\n {t(\"question_count\")}\n </Label>\n <CustomSelect\n inputId=\"question_count\"\n value={questionCount}\n options={questionOptions}\n onChange={handleChangeQuestionCount}\n isDisabled={isDisabled}\n />\n </FormGroup>\n </Col>\n <Col xs={3}>\n <FormGroup>\n <Label htmlFor=\"category\" className={`${styles[\"question-label\"]}`}>{t(\"category\")}</Label>\n <CustomSelect\n inputId=\"category\"\n value={categoryId}\n options={categoryOptions}\n onChange={handleChangeCategory}\n isDisabled={isDisabled}\n />\n </FormGroup>\n </Col>\n <Col xs={3}>\n <FormGroup>\n <Label htmlFor=\"answer_count\" className={`${styles[\"question-label\"]}`}>\n {t(\"answer_count\")}\n </Label>\n <CustomSelect\n inputId=\"answer_count\"\n value={answerCount}\n options={answerOptions}\n onChange={handleChangeAnswerCount}\n isDisabled={isDisabled}\n />\n </FormGroup>\n </Col>\n <Col xs={3}>\n </Col>\n </Row>\n <div>\n {\n questions.map((q: any, index: number) => (\n <QuestionView\n key={index}\n question={q}\n answerCount={answerCount}\n index={index}\n onChangeCorrectAnswers={handleChangeCorrectAnswers}\n onChangeScoreAnswer={handleChangeScoreAnswer}\n isDisabled={isDisabled}\n />\n ))\n }\n </div>\n </div>\n </div>\n )\n}\n\nexport default ArticleGroupView\n","import { DEFAULT_ANSWER_COUNT, DEFAULT_SCORE, DURATION_OPTIONS } from \"../configs/constants\"\nimport { ArticleGroup, Exam, Question } from \"../configs/types\"\nimport { ChangeEvent, useMemo } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport _ from \"lodash\"\n\ninterface Props {\n exam: Exam\n onChangeExam: (value: Exam) => void\n}\n\nconst useExamDetailView = (props: Props) => {\n const { exam, onChangeExam } = props\n\n const { t } = useTranslation()\n const handleChangeQuestionCount = (\n article: number,\n questionCount: number,\n answerCount: number\n ) => {\n if (!exam) return\n const examQuestions = exam.questions\n const questions = examQuestions.filter(i => i.article === +article)\n const prevQuestions = examQuestions.filter(i => i.article < +article)\n const nextQuestions = examQuestions.filter(i => i.article > +article)\n const lastOrder = questions[questions.length - 1].questionOrder\n if (questions.length === questionCount) return\n if (questions.length < questionCount) {\n const additionalQuestions: Question[] = Array.from({\n length: questionCount - questions.length\n }).map((_, index) => ({\n article: +article,\n correctAnswers: [1],\n numberOfAnswers: answerCount,\n categoryId: questions[0]?.categoryId,\n score: DEFAULT_SCORE,\n questionOrder: lastOrder + index + 1\n }))\n const newQuestions = [\n ...prevQuestions,\n ...questions,\n ...additionalQuestions,\n ...nextQuestions.map(i => ({\n ...i,\n questionOrder: i.questionOrder + questionCount - questions.length\n }))\n ]\n\n onChangeExam({\n ...exam,\n questions: [...newQuestions]\n })\n } else {\n const remainQuestions = questions.slice(0, questionCount)\n const newQuestions = [\n ...prevQuestions,\n ...remainQuestions,\n ...nextQuestions.map(i => ({\n ...i,\n questionOrder: i.questionOrder - questions.length + questionCount\n }))\n ]\n\n onChangeExam({\n ...exam,\n questions: [...newQuestions]\n })\n }\n }\n\n const handleChangeCategory = (article: number, categoryId: number) => {\n if (!exam) return\n const examQuestions = exam.questions\n const questions = examQuestions.filter(i => i.article === +article)\n const otherQuestions = examQuestions.filter(i => i.article !== +article)\n onChangeExam({\n ...exam,\n questions: [\n ...otherQuestions,\n ...questions.map(q => ({\n ...q,\n categoryId\n }))\n ]\n })\n }\n\n const handleChangeAnswerCount = (\n article: number,\n newAnswerCount: number,\n answerCount: number\n ) => {\n if (!exam) return\n if (newAnswerCount === answerCount) return\n const examQuestions = exam.questions\n const questions = examQuestions.filter(i => i.article === +article)\n const otherQuestions = examQuestions.filter(i => i.article !== +article)\n if (answerCount < newAnswerCount) {\n onChangeExam({\n ...exam,\n questions: [\n ...otherQuestions,\n ...questions.map(q => ({\n ...q,\n numberOfAnswers: newAnswerCount\n }))\n ]\n })\n } else {\n onChangeExam({\n ...exam,\n questions: [\n ...otherQuestions,\n ...questions.map(q => ({\n ...q,\n numberOfAnswers: newAnswerCount,\n correctAnswers: q.correctAnswers.filter(\n i => i <= newAnswerCount\n )\n }))\n ]\n })\n }\n }\n\n const handleChangeCorrectAnswers = (\n article: number,\n index: number,\n answer: number\n ) => {\n if (!exam) return\n const examQuestions = exam.questions\n const questions = examQuestions.filter(i => i.article === +article)\n const otherQuestions = examQuestions.filter(i => i.article !== +article)\n const selectedQuestion = questions[index]\n onChangeExam({\n ...exam,\n questions: [\n ...otherQuestions,\n ...questions.slice(0, index),\n {\n ...selectedQuestion,\n correctAnswers: [answer]\n },\n ...questions.slice(index + 1)\n ]\n })\n }\n\n const handleChangeScoreAnswer = (\n article: number,\n index: number,\n score: number\n ) => {\n if (!exam) return\n const examQuestions = exam.questions\n const questions = examQuestions.filter(i => i.article === +article)\n const otherQuestions = examQuestions.filter(i => i.article !== +article)\n const selectedQuestion = questions[index]\n if (score === selectedQuestion.score) return\n onChangeExam({\n ...exam,\n questions: [\n ...otherQuestions,\n ...questions.slice(0, index),\n {\n ...selectedQuestion,\n score\n },\n ...questions.slice(index + 1)\n ]\n })\n }\n\n const handleChangeDuration = (value: any) => {\n if (!exam) return\n onChangeExam({\n ...exam,\n duration: value?.value\n })\n }\n\n const handleChangeTitle = (e: ChangeEvent<HTMLInputElement>) => {\n if (!exam) return\n onChangeExam({\n ...exam,\n title: e.target.value\n })\n }\n\n const handleAddArticle = () => {\n if (!exam) return\n const maxArticle = _.maxBy(exam.questions, \"article\")?.article || 0\n const maxOrder = _.maxBy(exam.questions, \"questionOrder\")?.questionOrder || 0\n onChangeExam({\n ...exam,\n questions: [\n ...exam.questions,\n {\n article: maxArticle + 1,\n correctAnswers: [1],\n numberOfAnswers: DEFAULT_ANSWER_COUNT,\n score: DEFAULT_SCORE,\n questionOrder: maxOrder + 1\n }\n ]\n })\n }\n\n const examGroupByArticle: ArticleGroup[] = useMemo(() => {\n if (!exam) return []\n const articles = []\n const groupedArticle = _.groupBy(exam.questions, \"article\")\n for (const key in groupedArticle) {\n if (Object.prototype.hasOwnProperty.call(groupedArticle, key)) {\n const questions: Question[] = groupedArticle[key]\n articles.push({\n article: +key,\n categoryId: questions.find(i => !!i.categoryId)?.categoryId,\n answerCount:\n _.maxBy(questions, \"numberOfAnswers\")\n ?.numberOfAnswers || DEFAULT_ANSWER_COUNT,\n questionCount: questions.length,\n questions\n })\n }\n }\n return _.sortBy(articles, \"article\")\n }, [JSON.stringify(exam)])\n \n const durationOptions = useMemo(() => {\n const options = DURATION_OPTIONS.map((i) => (\n {\n label: `${i}분`,\n value: i\n }\n ));\n if(!!exam.duration && exam.duration > DURATION_OPTIONS[DURATION_OPTIONS.length - 1]) return [...options, {\n label: `${exam.duration}분`,\n value: exam.duration\n }]\n return options\n }, [exam.duration])\n \n return {\n t,\n durationOptions,\n examGroupByArticle,\n handleAddArticle,\n handleChangeScoreAnswer,\n handleChangeTitle,\n handleChangeDuration,\n handleChangeCorrectAnswers,\n handleChangeAnswerCount,\n handleChangeQuestionCount,\n handleChangeCategory\n }\n}\n\nexport default useExamDetailView\n","import React from 'react';\nimport { FC } from \"react\"\nimport { Button, Col, FormGroup, Input, Label, Row } from \"reactstrap\"\nimport { ExamDetailViewProps } from '../configs/interfaces';\nimport CustomSelect from '../../../components/Selects/CustomSelect';\nimport ArticleGroupView from '../components/ArticleGroupView';\nimport { FaPlusCircle } from 'react-icons/fa';\nimport styles from \"../styles/styles.module.scss\"\nimport useExamDetailView from '../hooks/useExamDetailView';\nimport { ArticleGroup } from '../configs/types';\n\nconst ExamDetailView: FC<ExamDetailViewProps> = ({\n className = \"\",\n categoryOptions,\n exam,\n isUsingMui = true,\n isDisabled,\n onChangeExam\n}) => {\n const {\n t,\n durationOptions,\n examGroupByArticle,\n handleAddArticle,\n handleChangeScoreAnswer,\n handleChangeTitle,\n handleChangeDuration,\n handleChangeCorrectAnswers,\n handleChangeAnswerCount,\n handleChangeQuestionCount,\n handleChangeCategory\n } = useExamDetailView({\n exam,\n onChangeExam\n })\n \n return <Row className={`${className}`}>\n <Col xs={5}>\n <FormGroup>\n <Label className={`${styles[\"question-label\"]}`} htmlFor=\"title\">{t(\"title\")}</Label>\n <Input disabled={isDisabled} className={`w-100 rounded-2 ${styles[\"question-input\"]}`} value={exam.title} id=\"title\" placeholder={t(\"enter_title\")} onChange={handleChangeTitle}/>\n </FormGroup>\n </Col>\n <Col xs={3}>\n <FormGroup>\n <Label className={`${styles[\"question-label\"]}`} htmlFor=\"duration\">{t(\"duration\")}</Label>\n <CustomSelect\n inputId=\"duration\"\n value={exam.duration}\n options={durationOptions}\n onChange={handleChangeDuration}\n isDisabled={isDisabled}\n />\n </FormGroup>\n </Col>\n <Col xs={4}></Col>\n {\n examGroupByArticle.map((i: ArticleGroup, index: number) => (\n <Col xs={12} key={i.article} className={`${index === 0 && !isUsingMui ? \"mt-3\" : \"\"} ${!isUsingMui ? \"mb-4\" : \"\"}`}>\n <ArticleGroupView\n {...i}\n categoryOptions={categoryOptions}\n isActive={index === examGroupByArticle.length - 1}\n onChangeQuestionCount={handleChangeQuestionCount}\n onChangeCategory={handleChangeCategory}\n onChangeAnswerCount={handleChangeAnswerCount}\n onChangeCorrectAnswers={handleChangeCorrectAnswers}\n onChangeScoreAnswer={handleChangeScoreAnswer}\n isDisabled={isDisabled}\n />\n </Col>\n ))\n }\n <Col xs={12}>\n <Button disabled={isDisabled} className={`w-100 d-flex justify-content-center align-items-center ${styles[\"question-btn\"]}`} color=\"primary\" outline onClick={handleAddArticle}>\n <FaPlusCircle className=\"me-2\"/>\n 문항 추가하기\n </Button>\n </Col>\n </Row>\n}\n\nexport default ExamDetailView","import { createBrowserHistory } from \"history\"\nconst historyCore = createBrowserHistory()\n\nimport { setLoading, setAlert, setUser, setLanguage } from \"./redux/commons/action\"\nimport { BASE_URL, ACCESS_TOKEN, PUSHER_CONFIG, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE } from \"./utils/constants\"\nimport utcToLocalTime from \"./utils/utcToLocalTime\"\nimport Login from \"./containers/Login/views/Login\"\nimport store from \"./store\"\n\nimport NotFound from \"./components/Commons/NotFound\"\nimport Loading from \"./components/Loading/Loading\"\nimport LayoutContext from \"./layouts/LayoutContext\"\nimport { api } from \"./configs/api\"\nimport { ConfirmDialog } from \"./components/Dialogs/ConfirmDialog\"\nimport CommonDialog from \"./components/Dialogs/CommonDialog\"\nimport CommonAlert from \"./components/Alerts/CommonAlert\"\nimport formatTime from \"./utils/formatTime\"\nimport diffFromNow from \"./utils/diffFromNow\"\nimport CustomPagination from \"./components/Paginations/CustomPagination\"\nimport useGoogleSignOut from \"./utils/useGoogleSignOut\"\nimport { ExamEvent } from \"./utils/types\"\nimport i18n from \"./i18n\"\nimport TheLanguageDropdown from \"./layouts/TheLanguageDropdown\"\nimport { useTranslation, I18nextProvider } from \"react-i18next\"\nimport minutesToTimeSpan from \"./utils/minutesToTimeSpan\"\nimport toISOString from \"./utils/toISOString\"\nimport canAccessRoute from \"./utils/canAccessRoute\"\nimport CustomSelect from \"./components/Selects/CustomSelect\"\nimport getAccessToken from \"./utils/getAccessToken\"\nimport ChatContainer, { IChatContainerProps } from \"./components/Chats/ChatContainer\"\nimport { ChatItemType, IChatItemProps } from \"./components/Chats/ChatItem\"\nimport { IChatHeaderProps } from \"./components/Chats/ChatHeader\"\nimport { IInputChatProps } from \"./components/Chats/InputChat\"\nimport useChatContainer from \"./components/Chats/hooks/useChatContainer\"\nimport useConversationList from \"./components/Chats/hooks/useConversationList\"\nimport { ConversationResponse, ExamResponse } from \"./components/Chats/configs/types\"\nimport usePusherConversation from \"./components/Chats/hooks/usePusherConversation\"\nimport { ToastContainer, toast } from \"react-toastify\"\nimport { Role } from \"./containers/Login/configs/constants\"\nimport useLanguage from \"./utils/useLanguage\"\nimport { LANGUAGES } from \"./configs/constants\"\nimport CustomCreatable from \"./components/Selects/CustomCreatable\"\nimport moment from \"moment\"\nimport CustomAsyncSelect from \"./components/Selects/CustomAsyncSelect\"\nimport ExamDetailView from \"./containers/Exams/views/ExamDetailView\"\nimport { ExamDetailViewProps } from \"./containers/Exams/configs/interfaces\"\nimport { Exam, Question, ArticleGroup } from \"./containers/Exams/configs/types\"\n\nexport {\n diffFromNow,\n formatTime,\n utcToLocalTime,\n setLoading,\n BASE_URL,\n ACCESS_TOKEN,\n Login,\n store,\n historyCore,\n setAlert,\n setUser,\n Loading,\n NotFound,\n LayoutContext,\n api,\n ConfirmDialog,\n CommonDialog,\n CommonAlert,\n CustomPagination,\n useGoogleSignOut,\n PUSHER_CONFIG,\n ExamEvent,\n EXAM_CHANNEL,\n EXAM_STUDENT_CHANNEL,\n // language\n setLanguage,\n i18n,\n TheLanguageDropdown,\n useTranslation,\n I18nextProvider,\n DATE_MIN_VALUE,\n DATE_TIME_MIN_VALUE,\n minutesToTimeSpan,\n toISOString,\n canAccessRoute,\n CustomSelect,\n CustomAsyncSelect,\n getAccessToken,\n ChatContainer,\n IChatContainerProps,\n IChatItemProps,\n IChatHeaderProps,\n IInputChatProps,\n ChatItemType,\n useChatContainer,\n useConversationList,\n ConversationResponse,\n ExamResponse,\n usePusherConversation,\n ToastContainer,\n toast,\n Role,\n useLanguage,\n LANGUAGES,\n CustomCreatable,\n moment,\n ExamDetailView,\n ExamDetailViewProps,\n Exam,\n Question,\n ArticleGroup\n}\n"],"names":["setLoading","createAction","setAlert","setUser","setLanguage","reset","isLocalHost","Boolean","window","location","hostname","match","GOOGLE_CLIENT_ID","ACCESS_TOKEN","DATE_MIN_VALUE","DATE_TIME_MIN_VALUE","BASE_URL","PUSHER_CONFIG","cluster","key","EXAM_CHANNEL","EXAM_STUDENT_CHANNEL","getAccessToken","localStorage","getItem","err","encodeParams","params","Object","keys","filter","map","Array","isArray","i","encodeURIComponent","join","time","FORMAT","moment","utc","local","format","_unused","api","axios","create","baseURL","timeout","headers","paramsSerializer","apiUpload","forEach","interceptors","request","use","config","token","Authorization","setItem","error","Promise","reject","response","console","log","_error$response","status","href","_error$response2","removeItem","apiLoginGoogle","body","role","post","AuthenticationMessage","Role","useGoogleSignOut","props","dispatch","useDispatch","onLogoutSuccess","onFailure","handleLogoutSuccess","handleLogoutFailure","_useGoogleLogout","useGoogleLogout","clientId","signOut","loaded","handleSignOut","ERROR_MESSAGE","schema","yup","email","required","password","rememberMe","BlockLogin","_ref","defaultInfo","onNavigate","_ref$role","Student","_useGoogleSignOut","onSuccessGoogle","res","accessToken","_temp2","_res$profileObj","profileObj","imageUrl","name","tokenObj","id_token","googleId","infoLogin","fullName","_temp","_catch","resolve","then","res1","isFirstLogin","data","tokenJWT","JSON","stringify","_error$response$data","message","undefined","type","NotAllowedToRegister","alert","_error$response2$data","_error$response3","_temp3","e","onFailureGoogle","React","Formik","initialValues","validationSchema","onSubmit","formikProps","handleSubmit","Row","className","styles","Col","Form","src","GoogleLogin","buttonText","onSuccess","cookiePolicy","isSignedIn","captcha","useLogin","_useState","useState","openLogin","setOpenLogin","_useState2","infoUser","setInfoUser","toggle","useCallback","_useState3","isShowPassword","setIsShowPassword","useEffect","start","gapi","client","init","scope","load","Login","_useLogin","lg","md","xs","this","global","initialState","isLoading","user","commonReducer","createReducer","builder","addCase","state","action","payload","language","_state","_action","rootReducer","combineReducers","common","store","configureStore","reducer","middleware","getDefaultMiddleware","serializableCheck","concat","logger","TITLE","NotFound","document","title","loadingStyle","minWidth","minHeight","position","top","left","zIndex","backgroundColor","display","justifyContent","alignItems","Loading","useSelector","style","AUTH_URL","getInfo","get","LayoutContext","children","_state$common","roles","resetAuth","checkRoleUser","includes","loadInfo","info","Fragment","ConfirmDialog","open","text","_ref$cancelText","cancelText","_ref$okText","okText","isDelete","_ref$title","onConfirm","confirmText","confirmTextValue","setConfirmTextValue","handleConfirm","handleChangeConfirmText","target","value","handlePaste","preventDefault","isValid","trim","Modal","isOpen","centered","ModalHeader","ModalBody","Input","onChange","placeholder","onPaste","invalid","valid","ModalFooter","Button","color","onClick","disabled","CommonDialog","_ref$size","size","onClose","backdrop","CommonAlert","useRef","onDismiss","current","clearTimeout","_alert$message","length","setTimeout","_alert$message2","Alert","ORIGINAL_FORMAT","unitOfTime","targetTime","now","diff","CustomPagination","currentPage","totalPage","onChangePage","Pagination","PaginationItem","PaginationLink","previous","active","page","next","ExamEvent","i18n","initReactI18next","lng","fallbackLng","interpolation","escapeValue","resources","ko","translation","lang_ko","en","lang_en","DEFAULT_LANGUAGE_INDEX","LANGUAGES","code","shortName","nativeName","image","momentLangCode","useLanguage","defaultLanguage","navigator","_useTranslation","useTranslation","dropdownOpen","setDropdownOpen","setItemLanguage","prevState","changeLanguageApp","lang","find","changeLanguage","locale","currentLanguage","useMemo","currentLang","TheLanguageDropdown","_useLanguage","Dropdown","DropdownToggle","textTransform","IoChevronDown","fontSize","marginLeft","marginTop","DropdownMenu","index","DropdownItem","width","marginRight","h","Math","floor","m","toString","padStart","toISOString","canAccess","userRoles","componentRoles","intersects","DropdownIndicator","components","FaCaretDown","CustomOption","Option","fontWeight","label","customStyles","control","baseStyles","_extends","borderColor","isFocused","input","_","singleValue","CustomSelect","isDefault","defaultValue","options","isDisabled","scrollBottom","isMulti","rest","_objectWithoutPropertiesLoose","_excluded","t","Select","menuPlacement","IndicatorSeparator","MessageSortBy","OrderBy","StudentSortBy","StudentOrderBy","MessageAction","MessageSourceType","MessageStatus","ChatRightItem","id","content","createdAt","isRead","examCode","isSystemLog","parentId","_ref$showExamHeader","showExamHeader","_ref$isFirst","isFirst","isLast","actionLink","examId","examTitle","parentContent","selectedReplyMessageId","selectedReplyItemRef","onAddExamMessage","onReTrySendMessage","onGotoParentMessage","isShowTime","setShowTime","isShowInfo","setShowInfo","handleShowInfo","handleReTrySendMessage","SentError","ref","Link","to","utcToLocalTime","Collapse","Default","ChatLeftItem","avatar","onReply","onToggleReply","handleReply","ChatItemType","ChatItem","isMe","ChatList","messages","_ref$messages","listItemRef","setSelectedReplyMessageId","handleToggleReply","handleSelectParentMessage","scrollIntoView","behavior","InputChat","parentText","inputRef","onChangeInput","onClearReply","handleInputChange","event","handleKeyPressEnter","handleClearReply","IoIosCloseCircle","InputGroup","innerRef","onKeyUp","IoMdSend","ChatHeader","selectedOption","onChangeOption","wrapperRef","actionRef","handleChangeOption","val","handleClickOutside","contains","addEventListener","removeEventListener","selectOptions","startTime","alt","isClearable","ChatContainer","chatHeaderProps","chatListProps","inputProps","_ref$scrollOffset","scrollOffset","_ref$isLoading","isScrollToEnd","onRead","onReachTop","onReachBottom","onEndScrollToEnd","listRef","scrollRef","focusRef","addEventTimeout","_inputRef$current","focus","handleAddExamMessage","_inputRef$current2","handleChangeExamOption","_inputRef$current3","handleScroll","scrollTop","scrollHeight","clientHeight","handleFocus","_listRef$current","_chatListProps$messag","_listItemRef$current","_listItemRef$current$","lastElementChild","_listRef$current2","_listRef$current3","_listRef$current4","_inputRef$current4","_inputRef$current5","Spinner","CONVERSATION_URL","getListConversation","query","createConversation","studentId","targetUserId","apiAddMessage","conversationId","getMessagesByConversation","apiMarkReadMessage","messageId","put","apiGetConversationByUserId","userId","ExamStatus","CONVERSATION_DEFAULT_FILTER","pageSize","textSearch","MESSAGE_DEFAULT_FILTER","sortColumnDirection","DESC","sortColumnName","CreatedAt","EXAM_URL","getListExamApi","useExamList","isStudent","exams","setExams","getListExam","statuses","Completed","teacherId","_res$data","items","useMessageList","getListExamOptions","setMessages","messageFilter","setMessageFilter","getMessageList","_res$data$items2","_getListExamOptions","beforeDate","_res$data$items","reverse","handleLoadMore","lastItem","newFilter","handleMarkReadMessage","_temp4","resetMessages","handleChangeExamId","useChatContainer","conversation","onUpdateLastMessage","onCreateConversationSuccess","onGetMessagesSuccess","pusher","channel","channelName","loadingRef","firstLoadRef","_state$common$user","selectedConversation","setSelectedConversation","setMessage","messageStatus","setMessageStatus","_useState4","setScrollToEnd","_useExamList","_useMessageList","_selectedConversation","teacher","_selectedConversation2","student","isLoadingMessages","handleToggleScrollToEnd","handleAddMessage","some","_message$content","_message$content$trim","exam","Sending","toast","handleReplyMessage","handleChangeInput","handleFilterExam","_val$label","_val$label$split","split","slice","messageList","results","displayName","_i$exam","_i$exam2","_i$exam3","Exam","Took","_i$exam4","_i$exam5","_i$exam6","_i$exam7","_i$exam8","_i$exam9","_i$exam10","_i$exam11","handleNewMessageSent","handleMessageMarkRead","handleLoadMoreMessages","getMessageConversation","cleanupPusher","_pusher$current","unbind","_pusher$current2","unsubscribe","Pusher","authEndpoint","auth","subscribe","bind","getConversation","_temp5","_createConversation","_temp6","handleMarkRead","_temp7","_temp10","_res$data$data","_temp9","_temp8","handleConversationChange","userName","_selectedConversation3","_selectedConversation4","userAvatar","_selectedConversation5","_selectedConversation6","STUDENT_STATUS_URL","getStudentConversationListApi","isFirstLoad","useConversationList","conversations","setConversations","conversationFilter","setConversationFilter","handleChangeSelectedConversation","handleNewMessageConversation","findIndex","handleMessageReadConversation","totalUnread","totalUnReadMessage","handleChangeTextSearch","handleChangeFilter","formatConversationLastMessageContent","lastMessage","_conversation$lastMes","getConversationList","apiGetConversations","handleUpdateTotalUnreadMessage","updateIndex","handleUpdateLastMessage","handleCreateConversationSuccess","usePusherConversation","onNewMessageConversation","onReadMessageConversation","handleNewMessageConversationCreated","handleReadMessageConversation","CustomCreatable","CreatableSelect","CustomAsyncSelect","AsyncSelect","DURATION_OPTIONS","from","SCORE_OPTIONS","QUESTION_OPTIONS","ANSWER_OPTIONS","DEFAULT_SCORE","DEFAULT_ANSWER_COUNT","QuestionView","question","answerCount","onChangeCorrectAnswers","onChangeScoreAnswer","scoreOptions","questionOrder","FormGroup","Label","htmlFor","checked","correctAnswers","score","ArticleGroupView","categoryOptions","article","questions","questionCount","categoryId","isActive","onChangeQuestionCount","onChangeCategory","onChangeAnswerCount","handleChangeQuestionCount","handleChangeCategory","handleChangeAnswerCount","handleChangeCorrectAnswers","handleChangeScoreAnswer","questionOptions","answerOptions","PiDotsNineLight","inputId","q","useExamDetailView","onChangeExam","examQuestions","prevQuestions","nextQuestions","lastOrder","additionalQuestions","_questions$","numberOfAnswers","newQuestions","remainQuestions","otherQuestions","newAnswerCount","answer","selectedQuestion","handleChangeDuration","duration","handleChangeTitle","handleAddArticle","maxArticle","_$maxBy","maxBy","maxOrder","_$maxBy2","examGroupByArticle","articles","groupedArticle","groupBy","prototype","hasOwnProperty","call","_questions$find","_$maxBy3","push","sortBy","durationOptions","ExamDetailView","_ref$className","_ref$isUsingMui","isUsingMui","_useExamDetailView","outline","FaPlusCircle","historyCore","createBrowserHistory"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEaA,UAAU,GAAGC,oBAAY,CAAsB,mBAAmB;IAElEC,QAAQ,GAAGD,oBAAY,CAAM,iBAAiB;IAE9CE,OAAO,GAAGF,oBAAY,CAAM,gBAAgB;IAE5CG,WAAW,GAAGH,oBAAY,CAAS,oBAAoB;AAE7D,IAAMI,KAAK,GAAGJ,oBAAY,CAAY,cAAc,CAAC;;ACV5D,IAAMK,WAAW,GAAGC,OAAO,CACvBC,MAAM,CAACC,QAAQ,CAACC,QAAQ,KAAK,WAAW,IAExCF,MAAM,CAACC,QAAQ,CAACC,QAAQ,KAAK,OAAO,IAEpCF,MAAM,CAACC,QAAQ,CAACC,QAAQ,CAACC,KAAK,CAC5B,wDAAwD,CACzD,CACJ;;ACJM,IAAMC,gBAAgB,GAAG,yEAAyE;AAEzG,IAIaC,YAAY,GAAG,cAAc;AAE1C,IAAaC,cAAc,GAAG,2BAA2B;AACzD,IAAaC,mBAAmB,GAAG,qBAAqB;AAExD,IAAaC,QAAQ,GAAI;EACvB,OAAOV,WAAW,GAAG,wBAAwB,GAAG,0BAA0B;AAC5E,CAAC,EAAG;AAEJ,IAAaW,aAAa,GAAG;EAC3BC,OAAO,EAAE,KAAK;EACdC,GAAG,EAAE;CACN;AAED,IAAaC,YAAY,GAAG,uBAAuB;AACnD,IAAaC,oBAAoB,GAAG,6CAA6C;AAGjF,AAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAcA;EACvB,IAAI;IACF,OAAOC,YAAY,CAACC,OAAO,CAACX,YAAY,CAAC;GAC1C,CAAC,OAAOY,GAAG,EAAE;IACZ,OAAO,IAAI;;AAEjB,CAAC;AAED,AAAO,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,MAAW;EACpC,OAAOC,MAAM,CAACC,IAAI,CAACF,MAAM,CAAC,CACrBG,MAAM,CAAC,UAAAX,GAAG;IAAA,OAAIQ,MAAM,CAACR,GAAG,CAAC,IAAIQ,MAAM,CAACR,GAAG,CAAC,KAAK,CAAC,IAAIQ,MAAM,CAACR,GAAG,CAAC,KAAK,KAAK;IAAC,CACxEY,GAAG,CAAC,UAAAZ,GAAG;IACJ,IAAIa,KAAK,CAACC,OAAO,CAACN,MAAM,CAACR,GAAG,CAAC,CAAC,EAAE;MAC5B,OAAOQ,MAAM,CAACR,GAAG,CAAC,CAACY,GAAG,CAAC,UAACG,CAAM;QAAA,OAAQC,kBAAkB,CAAChB,GAAG,CAAC,SAAIgB,kBAAkB,CAACD,CAAC,CAAC;OAAE,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC;;IAEvG,OAAUD,kBAAkB,CAAChB,GAAG,CAAC,SAAIgB,kBAAkB,CAACR,MAAM,CAACR,GAAG,CAAC,CAAC;GACvE,CAAC,CAACiB,IAAI,CAAC,GAAG,CAAC;AACpB,CAAC;;AC1CD,sBAAe,UAACC,IAAa,EAAEC,MAAe;EAC1C,IAAID,IAAI,KAAKvB,cAAc,IAAIuB,IAAI,KAAKtB,mBAAmB,EAAE,OAAO,EAAE;EACtE,IAAI;IACA,OAAOwB,MAAM,CAACC,GAAG,CAACH,IAAI,CAAC,CAACI,KAAK,EAAE,CAACC,MAAM,CAACJ,MAAM,IAAI,YAAY,CAAC;GACjE,CAAC,OAAAK,OAAA,EAAM;IACJ,OAAO,EAAE;;AAEjB,CAAC;;ACVD;AACA,AAkKA;AACA,AAAO,MAAM,eAAe,iBAAiB,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,YAAY,CAAC;AAC/J,AA2DA;AACA,AAAO,MAAM,oBAAoB,iBAAiB,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,iBAAiB,CAAC;AACxL,AA8UA;AACA;AACA,AAAO,SAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE;AACtC,CAAC,IAAI;AACL,EAAE,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;AACtB,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ,EAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE;AACF,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE;AAC5B,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACtC,EAAE;AACF,CAAC,OAAO,MAAM,CAAC;AACf,CAAC;;;;ICxjBYC,GAAG,GAAkBC,KAAK,CAACC,MAAM,CAAC;EAC3CC,OAAO,EAAE/B,QAAQ;EACjBgC,OAAO,EAAE,CAAC;EACVC,OAAO,EAAE;IACL,cAAc,EAAE;GACnB;EACDC,gBAAgB,EAAE,SAAAA,iBAAAvB,MAAM;IACpB,OAAOD,YAAY,CAACC,MAAM,CAAC;;CAElC,CAAC;AAEF,AAAO,IAAMwB,SAAS,GAAkBN,KAAK,CAACC,MAAM,CAAC;EACjDC,OAAO,EAAE/B,QAAQ;EACjBgC,OAAO,EAAE,KAAK;EACdC,OAAO,EAAE;IACL,cAAc,EAAE;;CAEvB,CAAC;AACD,CAACL,GAAG,EAAEO,SAAS,CAAC,CAACC,OAAO,CAAC,UAAAlB,CAAC;EAAA,OACvBA,CAAC,CAACmB,YAAY,CAACC,OAAO,CAACC,GAAG,CACtB,UAACC,MAAW;IACR,IAAMC,KAAK,GAAGnC,cAAc,EAAE;IAC9B,IAAImC,KAAK,EAAE;MACPD,MAAM,CAACP,OAAO,CAACS,aAAa,eAAaD,KAAO;MAChDlC,YAAY,CAACoC,OAAO,CAAC,oBAAoB,EAAEpB,MAAM,EAAE,CAACC,GAAG,EAAE,CAACE,MAAM,CAAC,qBAAqB,CAAC,CAAC;;IAE5F,OAAOc,MAAM;GAChB,EACD,UAACI,KAAU;IAAA,OAAKC,OAAO,CAACC,MAAM,CAACF,KAAK,CAAC;IACxC;AAAA,EACJ;AACA,CAAChB,GAAG,EAAEO,SAAS,CAAC,CAACC,OAAO,CAAC,UAAAlB,CAAC;EAAA,OACvBA,CAAC,CAACmB,YAAY,CAACU,QAAQ,CAACR,GAAG,CACvB,UAAAQ,QAAQ;IACJ,OAAOA,QAAQ;GAClB,EACD,UAAAH,KAAK;;IACDI,OAAO,CAACC,GAAG,CAAC;MAAEL,KAAK,EAALA;KAAO,CAAC;IACtB,IAAI,EAAAM,eAAA,GAAAN,KAAK,CAACG,QAAQ,cAAAG,eAAA,uBAAdA,eAAA,CAAgBC,MAAM,MAAK,GAAG,EAAE;MAChC3D,MAAM,CAACC,QAAQ,CAAC2D,IAAI,GAAG,QAAQ;;IAEnC,IAAI,EAAAC,gBAAA,GAAAT,KAAK,CAACG,QAAQ,cAAAM,gBAAA,uBAAdA,gBAAA,CAAgBF,MAAM,KAAI,GAAG,EAAE;MAC/B5C,YAAY,CAAC+C,UAAU,CAACzD,YAAY,CAAC;MACrCU,YAAY,CAAC+C,UAAU,CAAC,YAAY,CAAC;MACrC9D,MAAM,CAACC,QAAQ,CAAC2D,IAAI,GAAG,QAAQ;;IAEnC,OAAOP,OAAO,CAACC,MAAM,CAACF,KAAK,CAAC;GAC/B,CACJ;AAAA,EACJ;;AC7CM,IAAMW,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,IAAS,EAAEC,IAAY;EAAA,OAAK7B,GAAG,CAAC8B,IAAI,CAAI1D,QAAQ,kBAAayD,IAAI,aAAUD,IAAI,CAAC;AAAA;;ACR/G,IAAYG,qBAGX;AAHD,WAAYA,qBAAqB;EAC7BA,sEAA6C;EAC7CA,kEAAyC;AAC7C,CAAC,EAHWA,qBAAqB,KAArBA,qBAAqB;AAKjC,AAAA,WAAYC,IAAI;EACZA,2BAAmB;EACnBA,2BAAmB;EACnBA,uBAAe;AACnB,CAAC,EAJWA,YAAI,KAAJA,YAAI;;ACKhB,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,KAAY;EAClC,IAAMC,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IACIC,eAAe,GAEfH,KAAK,CAFLG,eAAe;IACfC,SAAS,GACTJ,KAAK,CADLI,SAAS;EAIb,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA;IACrBF,eAAe,aAAfA,eAAe,uBAAfA,eAAe,EAAI;GACtB;EAED,IAAMG,mBAAmB,GAAG,SAAtBA,mBAAmBA;IACrBF,SAAS,aAATA,SAAS,uBAATA,SAAS,EAAI;GAChB;EAED,IAAAG,gBAAA,GAA4BC,2BAAe,CAAC;MACxCC,QAAQ,EAAE3E,gBAAgB;MAC1BqE,eAAe,EAAEE,mBAAmB;MACpCD,SAAS,EAAEE;KACd,CAAC;IAJMI,OAAO,GAAAH,gBAAA,CAAPG,OAAO;IAAEC,MAAM,GAAAJ,gBAAA,CAANI,MAAM;EAMvB,IAAMC,aAAa,GAAG,SAAhBA,aAAaA;IACfnE,YAAY,CAAC+C,UAAU,CAAC,kBAAkB,CAAC;IAC3C/C,YAAY,CAAC+C,UAAU,CAACzD,YAAY,CAAC;IACrC,IAAI;MACA2E,OAAO,EAAE;KACZ,CAAC,OAAO5B,KAAK,EAAE;MACZI,OAAO,CAACC,GAAG,CAAC;QAACL,KAAK,EAALA;OAAM,CAAC;;IAExBmB,QAAQ,CAAC1E,KAAK,EAAE,CAAC;IACjBG,MAAM,CAACC,QAAQ,CAAC2D,IAAI,GAAG,QAAQ;GAClC;EACD,OAAO;IACHsB,aAAa,EAAbA,aAAa;IAAED,MAAM,EAANA;GAClB;AACL,CAAC;;ACzBD,IAAME,aAAa,GAAG,aAAa;AAEnC,IAAMC,MAAM,GAAGC,UAAU,CAAC;EACtBC,KAAK,EAAED,UAAU,EAAE,CAACC,KAAK,CAAC,kBAAkB,CAAC,CAACC,QAAQ,CAAC,mBAAmB,CAAC;EAC3EC,QAAQ,EAAEH,UAAU,EAAE,CAACE,QAAQ,CAAC,sBAAsB,CAAC;EACvDE,UAAU,EAAEJ,WAAW;CAC1B,CAAC;AAEF,IAAMK,UAAU,GAA+B,SAAzCA,UAAUA,CAAAC,IAAA;MACZC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IACXC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IAAAC,SAAA,GAAAH,IAAA,CACV1B,IAAI;IAAJA,IAAI,GAAA6B,SAAA,cAAG1B,YAAI,CAAC2B,OAAO,GAAAD,SAAA;EAEnB,IAAMvB,QAAQ,GAAGC,sBAAW,EAAE;EAE9B,IAAAwB,iBAAA,GAEI3B,gBAAgB,CAAC;MAACwB,UAAU,EAAVA;KAAW,CAAC;IAD9BX,aAAa,GAAAc,iBAAA,CAAbd,aAAa;EAgBjB,IAAMe,eAAe,YAAfA,eAAeA,CAAUC,GAAQ;IAAA;;YAC/B,CAAC,EAACA,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEC,WAAW;UAAA,IAAAC,MAAA,YAAAA;YA+ClB7B,QAAQ,CAAC/E,UAAU,CAAC,KAAK,CAAC,CAAC;;UA9C3B,IAAA6G,eAAA,GAIIH,GAAG,CAACI,UAAU;YAHdhB,KAAK,GAAAe,eAAA,CAALf,KAAK;YACLiB,QAAQ,GAAAF,eAAA,CAARE,QAAQ;YACRC,IAAI,GAAAH,eAAA,CAAJG,IAAI;UAER,IAAIL,WAAW,GAAGD,GAAG,CAACO,QAAQ,CAACC,QAAQ;UACvC,IAAIC,QAAQ,GAAGT,GAAG,CAACS,QAAQ;UAE3B,IAAMC,SAAS,GAAG;YACdL,QAAQ,EAAEA,QAAQ;YAClBM,QAAQ,EAAEL,IAAI;YACdlB,KAAK,EAAEA,KAAK;YACZrC,KAAK,EAAEkD,WAAW;YAClBQ,QAAQ,EAAEA;WACb;UACDpC,QAAQ,CAAC/E,UAAU,CAAC,IAAI,CAAC,CAAC;UAAA,IAAAsH,KAAA,GAAAC,MAAA,aACtB;YAAA,OAAA1D,OAAA,CAAA2D,OAAA,CACmBjD,cAAc,CAAC6C,SAAS,EAAE3C,IAAI,CAAC,EAAAgD,IAAA,WAA5CC,IAAI;cACV,IAAMC,YAAY,GAAGD,IAAI,CAACE,IAAI,CAACD,YAAY;cAC3C,IAAME,QAAQ,GAAGH,IAAI,CAACE,IAAI,CAACnE,KAAK;cAChClC,YAAY,CAACoC,OAAO,CAChB,kBAAkB,EAClBmE,IAAI,CAACC,SAAS,CAACX,SAAS,CAAC,CAC5B;cAED7F,YAAY,CAACoC,OAAO,CAAC9C,YAAY,EAAEgH,QAAQ,CAAC;cAAA,IACxCpD,IAAI,KAAKG,YAAI,CAAC2B,OAAO,IAAIoB,YAAY;gBACrCtB,UAAU,CAAC,gBAAgB,CAAC;;gBAE5BA,UAAU,CAAC,GAAG,CAAC;;;WAEtB,YAAQzC,KAAK,EAAE;YAAA,IAAAM,eAAA,EAAA8D,oBAAA;YACZ,IAAIC,OAAO,GAAGC,SAAS;YACvB,IAAMC,IAAI,GAAGvE,KAAK,aAALA,KAAK,wBAAAM,eAAA,GAALN,KAAK,CAAEG,QAAQ,cAAAG,eAAA,wBAAA8D,oBAAA,GAAf9D,eAAA,CAAiB0D,IAAI,cAAAI,oBAAA,uBAArBA,oBAAA,CAAuBG,IAAI;YAExC,IAAGA,IAAI,KAAKxD,qBAAqB,CAACyD,oBAAoB,EAAC;cACnDC,KAAK,CAAC,+BAA+B,CAAC;aACzC,MACI,IAAGF,IAAI,EAAC;cAAA,IAAA9D,gBAAA,EAAAiE,qBAAA;cACTL,OAAO,GAAG,CAAArE,KAAK,aAALA,KAAK,wBAAAS,gBAAA,GAALT,KAAK,CAAEG,QAAQ,cAAAM,gBAAA,wBAAAiE,qBAAA,GAAfjE,gBAAA,CAAiBuD,IAAI,cAAAU,qBAAA,uBAArBA,qBAAA,CAAuBL,OAAO,KAAItC,aAAa;aAC5D,MAAI;cAAA,IAAA4C,gBAAA;cACDN,OAAO,GAAG,CAAArE,KAAK,aAALA,KAAK,wBAAA2E,gBAAA,GAAL3E,KAAK,CAAEG,QAAQ,cAAAwE,gBAAA,uBAAfA,gBAAA,CAAiBX,IAAI,KAAIjC,aAAa;;YAEpDsC,OAAO,IAAII,KAAK,CAACJ,OAAO,CAAC;YACzBvC,aAAa,EAAE;WAClB;UAAA,OAAA4B,KAAA,IAAAA,KAAA,CAAAG,IAAA,GAAAH,KAAA,CAAAG,IAAA,CAAAb,MAAA,IAAAA,MAAA,CAAAU,KAAA;;;MAAA,OAAAzD,OAAA,CAAA2D,OAAA,CAAAgB,MAAA,IAAAA,MAAA,CAAAf,IAAA,GAAAe,MAAA,CAAAf,IAAA;KAGR,QAAAgB,CAAA;MAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;;EAED,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIjH,GAAQ;IAC7BuC,OAAO,CAACC,GAAG,CAAC,qBAAqB,EAAExC,GAAG,CAAC;IACvC4E,UAAU,CAAC,QAAQ,CAAC;GACvB;EACD,OACIsC,6BAACC,aAAM;IACHC,aAAa,EAAEzC,WAAW;IAC1B0C,gBAAgB,EAAElD,MAAM;IACxBmD,QAAQ,EAAE,SAAAA;KAET,UAAAC,WAAW;IACR,IAAQC,YAAY,GAAKD,WAAW,CAA5BC,YAAY;IAEpB,OACIN,6BAACO,cAAG;MAACC,SAAS,OAAKC,MAAM,CAAC,WAAW;OACjCT,6BAACU,cAAG;MAACF,SAAS,EAAC;OACXR,6BAACW,eAAI;MACDH,SAAS,OAAKC,MAAM,CAAC,aAAa,CAAG;MACrCL,QAAQ,EAAEE;OAEVN;MAAKQ,SAAS,OAAKC,MAAM,CAAC,YAAY;OAClCT;MACIY,GAAG,EAAE,mBAAmB;MACxBJ,SAAS,OAAKC,MAAM,CAAC,qBAAqB;MAC5C,EAOFT,6BAACU,cAAG;MAACF,SAAS,EAAC;OACXR,6BAACa,oBAAW;MACRjE,QAAQ,EAAE3E,gBAAgB;MAC1B6I,UAAU,EAAC,oDAAiB;MAC5BC,SAAS,EAAEjD,eAAe;MAC1BvB,SAAS,EAAEwD,eAAe;MAC1BiB,YAAY,EAAE,oBAAoB;MAClCR,SAAS,OAAKC,MAAM,CAAC,kBAAkB,CAAG;MAC1CQ,UAAU,EAAE;MACd,CACA,CACJ,CACH,CACL,CACJ;GAEb,CACI;AAEjB,CAAC;;ACzJD,wBAAe;EACX,IAAI;IACF,OAAOrI,YAAY,CAACC,OAAO,CAACX,YAAY,CAAC;GAC1C,CAAC,OAAOY,GAAG,EAAE;IACZ,OAAO,IAAI;;AAEjB,CAAC;;ACID,IAAM2E,WAAW,GAAc;EAC3BN,KAAK,EAAE,EAAE;EACTE,QAAQ,EAAE,EAAE;EACZ6D,OAAO,EAAE,EAAE;EACX5D,UAAU,EAAE;CACf;AAED,IAAM6D,QAAQ,GAAG,SAAXA,QAAQA,CAAIzD,UAAoB;EAClC,IAAA0D,SAAA,GAAkCC,cAAQ,CAAU,KAAK,CAAC;IAAnDC,SAAS,GAAAF,SAAA;IAAEG,YAAY,GAAAH,SAAA;EAC9B,IAAAI,UAAA,GAAgCH,cAAQ,EAAO;IAAxCI,QAAQ,GAAAD,UAAA;IAAEE,WAAW,GAAAF,UAAA;EAC5B,IAAMG,MAAM,GAAGC,iBAAW,CAAC;IACvBL,YAAY,CAAC,CAACD,SAAS,CAAC;GAC3B,EAAE,CAACA,SAAS,CAAC,CAAC;EACf,IAAAO,UAAA,GAA4CR,cAAQ,CAAU,KAAK,CAAC;IAA7DS,cAAc,GAAAD,UAAA;IAAEE,iBAAiB,GAAAF,UAAA;EAExCG,eAAS,CAAC;IACN,IAAMC,KAAK,GAAG,SAARA,KAAKA;MACTC,eAAI,CAACC,MAAM,CAACC,IAAI,CAAC;QACfxF,QAAQ,EAAE3E,gBAAgB;QAC1BoK,KAAK,EAAE;OACR,CAAC;KACH;IAED,CAAC,CAACH,eAAI,IAAIA,eAAI,CAACI,IAAI,CAAC,cAAc,EAAEL,KAAK,CAAC;GAC3C,EAAE,CAACC,eAAI,CAAC,CAAC;EAEVF,eAAS,CAAC;IACR,IAAMlH,KAAK,GAAGnC,gBAAc,EAAE;IAC9B,IAAG,CAAC,CAACmC,KAAK,EAAE4C,UAAU,CAAC,GAAG,CAAC;GAC5B,EAAE,EAAE,CAAC;EAER,OAAO;IACHD,WAAW,EAAXA,WAAW;IACX6D,SAAS,EAATA,SAAS;IACTK,MAAM,EAANA,MAAM;IACNG,cAAc,EAAdA,cAAc;IACdC,iBAAiB,EAAjBA,iBAAiB;IACjBN,QAAQ,EAARA,QAAQ;IACRC,WAAW,EAAXA;GACH;AACL,CAAC;;ACtCD,IAAMa,KAAK,GAA+B,SAApCA,KAAKA,CAAA/E,IAAA;MAAkCE,UAAU,GAAAF,IAAA,CAAVE,UAAU;IAAE5B,IAAI,GAAA0B,IAAA,CAAJ1B,IAAI;EACzD,IAAA0G,SAAA,GAAwBrB,QAAQ,CAACzD,UAAU,CAAC;IAApCD,WAAW,GAAA+E,SAAA,CAAX/E,WAAW;EACnB,OACIuC;IAAKQ,SAAS,EAAKC,MAAM,CAAC,OAAO,CAAC;KAC9BT,6BAACO,cAAG;IAACC,SAAS,EAAE;KACZR,6BAACU,cAAG;IACA+B,EAAE,EAAE,EAAE;IACNC,EAAE,EAAE,EAAE;IACNC,EAAE,EAAE,EAAE;IACNnC,SAAS,EAAC;KAWNR,6BAACzC,UAAU;IACPE,WAAW,EAAEA,WAAW;IACxBC,UAAU,EAAEA,UAAU;IACtB5B,IAAI,EAAEA;IACR,CAEJ,CACJ,CACJ;AAEd,CAAC;;;;;;;;;;;;;AC5CD,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,AAAqD,CAAC,CAAC,OAAO,CAAC,CAA+F,CAAC,CAAC8G,cAAI,CAAC,SAAS,CAAC,CAAC,CAAC,AAAa,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,QAAQ,IAAI,WAAW,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,AAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,WAAW,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAM,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,EAAC,CAAC,CAAC,EAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,6eAA6e,CAAC,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,WAAW,EAAE,IAAI,GAAG,WAAW,EAAE,UAAU,EAAE,OAAO,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,MAAM,EAAE,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,MAAM,EAAE,CAAC,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,WAAW,EAAE,OAAOC,cAAM,CAAC,WAAW,CAAC,CAAC,CAACA,cAAM,CAAC,CAAC,EAAEA,cAAM,CAACA,cAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAM,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAM,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAM,SAAS,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAM,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAM,SAAS,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAM,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAM,UAAU,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,8SAA8S,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;;;;;ACA/wU;AACA,SAAS,sBAAsB,CAAC,IAAI,EAAE;AACtC,EAAE,OAAO,CAAC,sBAAsB,EAAE,IAAI,CAAC,yCAAyC,EAAE,IAAI,CAAC,+EAA+E,CAAC,CAAC;AACxK,CAAC;AACD,AAIA;AACA;AACA,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACrF,IAAI,WAAW,GAAG;AAClB,EAAE,IAAI,EAAE,CAAC,YAAY,kBAAkB,YAAY,EAAE,CAAC,CAAC;AACvD,EAAE,OAAO,EAAE,CAAC,eAAe,kBAAkB,YAAY,EAAE,CAAC,CAAC;AAC7D,EAAE,oBAAoB,EAAE,MAAM,CAAC,4BAA4B,EAAE,YAAY,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC;AACF,IAAI,mBAAmB,GAAG,WAAW,CAAC;AACtC;AACA;AACA,SAAS,aAAa,CAAC,GAAG,EAAE;AAC5B,EAAE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;AAC7C,IAAI,OAAO,KAAK,CAAC;AACjB,EAAE,IAAI,KAAK,GAAG,GAAG,CAAC;AAClB,EAAE,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;AAChD,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACzC,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AACrF,CAAC;AACD;AACA;AACA,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,EAAE,IAAI,GAAG,KAAK,KAAK,CAAC;AACpB,IAAI,OAAO,WAAW,CAAC;AACvB,EAAE,IAAI,GAAG,KAAK,IAAI;AAClB,IAAI,OAAO,MAAM,CAAC;AAClB,EAAE,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC;AAC1B,EAAE,QAAQ,IAAI;AACd,IAAI,KAAK,SAAS,CAAC;AACnB,IAAI,KAAK,QAAQ,CAAC;AAClB,IAAI,KAAK,QAAQ,CAAC;AAClB,IAAI,KAAK,QAAQ,CAAC;AAClB,IAAI,KAAK,UAAU,EAAE;AACrB,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,GAAG;AACH,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AACxB,IAAI,OAAO,OAAO,CAAC;AACnB,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC;AACjB,IAAI,OAAO,MAAM,CAAC;AAClB,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC;AAClB,IAAI,OAAO,OAAO,CAAC;AACnB,EAAE,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACxC,EAAE,QAAQ,eAAe;AACzB,IAAI,KAAK,QAAQ,CAAC;AAClB,IAAI,KAAK,SAAS,CAAC;AACnB,IAAI,KAAK,SAAS,CAAC;AACnB,IAAI,KAAK,SAAS,CAAC;AACnB,IAAI,KAAK,KAAK,CAAC;AACf,IAAI,KAAK,KAAK;AACd,MAAM,OAAO,eAAe,CAAC;AAC7B,GAAG;AACH,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3F,CAAC;AACD,SAAS,QAAQ,CAAC,GAAG,EAAE;AACvB,EAAE,OAAO,OAAO,GAAG,CAAC,WAAW,KAAK,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;AAC7E,CAAC;AACD,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,EAAE,OAAO,GAAG,YAAY,KAAK,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,IAAI,OAAO,GAAG,CAAC,WAAW,CAAC,eAAe,KAAK,QAAQ,CAAC;AAC3I,CAAC;AACD,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,EAAE,IAAI,GAAG,YAAY,IAAI;AACzB,IAAI,OAAO,IAAI,CAAC;AAChB,EAAE,OAAO,OAAO,GAAG,CAAC,YAAY,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC;AAC1H,CAAC;AACD,SAAS,MAAM,CAAC,GAAG,EAAE;AACrB,EAAE,IAAI,SAAS,GAAG,OAAO,GAAG,CAAC;AAC7B,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC7C,IAAI,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAChC,GAAG;AACH,EAAE,OAAO,SAAS,CAAC;AACnB,CAAC;AACD,AAgJA;AACA;AACA,SAAS,OAAO,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AAC7E,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3B,GAAG;AACH,EAAE,IAAI;AACN,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,GAAG;AACH,CAAC;AACD;AACA;AACA,SAAS,qCAAqC,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE;AACjG,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5C,EAAE,MAAM,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,CAAC,IAAI,GAAG,+CAA+C,GAAG,wCAAwC,CAAC;AACvK,EAAE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,IAAI,OAAO,+HAA+H,CAAC;AAC3I,GAAG;AACH,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;AAClC,IAAI,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,yBAAyB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,+DAA+D,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1K,GAAG;AACH,EAAE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5H,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAClC,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACnC,GAAG,CAAC,CAAC;AACL,EAAE,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,CAAC,OAAO;AAC3D,IAAI,OAAO;AACX,EAAE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,IAAI,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,2DAA2D,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;AACzP,GAAG;AACH,CAAC;AACD,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AACtC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzC,IAAI,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClC,IAAI,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE;AACzC,MAAM,IAAI,EAAE,mBAAmB,CAAC,IAAI;AACpC,KAAK,CAAC,CAAC;AACP,IAAI,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;AAC7C,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,GAAG,sBAAsB,CAAC,EAAE,CAAC,GAAG,CAAC,2BAA2B,EAAE,GAAG,CAAC,4QAA4Q,CAAC,CAAC,CAAC;AAC5Y,KAAK;AACL,IAAI,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/B,MAAM,IAAI,EAAE,mBAAmB,CAAC,oBAAoB,EAAE;AACtD,KAAK,CAAC,KAAK,WAAW,EAAE;AACxB,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,GAAG,sBAAsB,CAAC,EAAE,CAAC,GAAG,CAAC,2BAA2B,EAAE,GAAG,CAAC,0EAA0E,EAAE,mBAAmB,CAAC,IAAI,CAAC,4SAA4S,CAAC,CAAC,CAAC;AACjhB,KAAK;AACL,GAAG,CAAC,CAAC;AACL,CAAC;AACD,SAAS,eAAe,CAAC,QAAQ,EAAE;AACnC,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5C,EAAE,MAAM,aAAa,GAAG,EAAE,CAAC;AAC3B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,IAAI,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC/C,MAAM,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;AAChD,QAAQ,OAAO,CAAC,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,OAAO;AACP,KAAK;AACL,IAAI,IAAI,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE;AAC7C,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AACzC,KAAK;AACL,GAAG;AACH,EAAE,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACtD,EAAE,IAAI,kBAAkB,CAAC;AACzB,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC7C,IAAI,kBAAkB,GAAG,EAAE,CAAC;AAC5B,GAAG;AACH,EAAE,IAAI,mBAAmB,CAAC;AAC1B,EAAE,IAAI;AACN,IAAI,kBAAkB,CAAC,aAAa,CAAC,CAAC;AACtC,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,mBAAmB,GAAG,CAAC,CAAC;AAC5B,GAAG;AACH,EAAE,OAAO,SAAS,WAAW,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE;AAClD,IAAI,IAAI,mBAAmB,EAAE;AAC7B,MAAM,MAAM,mBAAmB,CAAC;AAChC,KAAK;AACL,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC/C,MAAM,MAAM,cAAc,GAAG,qCAAqC,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACrH,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,OAAO,CAAC,cAAc,CAAC,CAAC;AAChC,OAAO;AACP,KAAK;AACL,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC;AAC3B,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC;AACzB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,MAAM,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AACzC,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AACnE,MAAM,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE;AAClD,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC;AACjD,QAAQ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,GAAG,sBAAsB,CAAC,EAAE,CAAC,GAAG,CAAC,mCAAmC,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,6BAA6B,EAAE,GAAG,CAAC,8KAA8K,CAAC,CAAC,CAAC;AACjZ,OAAO;AACP,MAAM,SAAS,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;AACvC,MAAM,UAAU,GAAG,UAAU,IAAI,eAAe,KAAK,mBAAmB,CAAC;AACzE,KAAK;AACL,IAAI,UAAU,GAAG,UAAU,IAAI,gBAAgB,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACrF,IAAI,OAAO,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC;AAC1C,GAAG,CAAC;AACJ,CAAC;;AC3TD,IAAMC,YAAY,GAAQ;EACtBC,SAAS,EAAE,KAAK;EAChBrD,KAAK,EAAE;IACHF,IAAI,EAAE,EAAE;IACRF,OAAO,EAAE;GACZ;EACD0D,IAAI,EAAE;CACT;AAGD,IAAMC,aAAa,GAAGC,qBAAa,CAACJ,YAAY,EAAE,UAAAK,OAAO;EACrDA,OAAO,CACFC,OAAO,CAAC/L,UAAU,EAAE,UAACgM,KAAK,EAAEC,MAAM;IAC/BD,KAAK,CAACN,SAAS,GAAGO,MAAM,CAACC,OAAO;GACnC,CAAC,CACDH,OAAO,CAAC7L,QAAQ,EAAE,UAAC8L,KAAK,EAAEC,MAAM;IAC7BD,KAAK,CAAC3D,KAAK,GAAG4D,MAAM,CAACC,OAAO;GAC/B,CAAC,CACDH,OAAO,CAAC5L,OAAO,EAAE,UAAC6L,KAAK,EAAEC,MAAM;IAC5BD,KAAK,CAACL,IAAI,GAAGM,MAAM,CAACC,OAAO;GAC9B,CAAC,CACDH,OAAO,CAAC3L,WAAW,EAAE,UAAC4L,KAAK,EAAEC,MAAM;IAChCD,KAAK,CAACG,QAAQ,GAAGF,MAAM,CAACC,OAAO;GAClC,CAAC,CACDH,OAAO,CAAC1L,KAAK,EAAE,UAAC+L,MAAM,EAAEC,OAAO;IAC5B,OAAOZ,YAAY;GACtB,CAAC;AACV,CAAC,CAAC;;ACjCF,IAAMa,WAAW,GAAGC,eAAe,CAAC;EAChCC,MAAM,EAANA;CACH,CAAC;;ACDF,IAAMC,KAAK,GAAGC,sBAAc,CAAC;EACzBC,OAAO,EAAEL,WAAW;EACpBM,UAAU,EAAE,SAAAA,WAAAC,oBAAoB;IAAA,OAC5BA,oBAAoB,CAAC;MAAEC,iBAAiB,EAAE;KAAO,CAAC,CAACC,MAAM,CAACC,MAAM,CAAC;;CACxE,CAAC;;ACPF,IAAMC,KAAK,GAAG,WAAW;AACzB,IAAMC,QAAQ,GAAO,SAAfA,QAAQA;EACVvC,eAAS,CAAC;IACNwC,QAAQ,CAACC,KAAK,GAAGH,KAAK;GACzB,CAAC;EACF,OACItE;IAAKQ,SAAS,EAAC;KACXR;IAAKQ,SAAS,EAAC;KACXR;IAAIQ,SAAS,EAAC;WAAwD,EACtER;IAAKQ,SAAS,EAAC;KACXR;IAAIQ,SAAS,EAAC;2BAA+B,EAC7CR;IAAGQ,SAAS,EAAC;mDAET,EACJR,yCACM,CACJ,CACJ,CACJ;AAEd,CAAC;;AClBD,IAAM0E,YAAY,GAAkB;EAChCC,QAAQ,EAAE,OAAO;EACjBC,SAAS,EAAE,OAAO;EAClBC,QAAQ,EAAE,OAAO;EACjBC,GAAG,EAAE,CAAC;EACNC,IAAI,EAAE,CAAC;EACPC,MAAM,EAAE,SAAS;EACjBC,eAAe,EAAE,oBAAoB;EACrCC,OAAO,EAAE,MAAM;EACfC,cAAc,EAAE,QAAQ;EACxBC,UAAU,EAAE;CACf;AAED,IAAMC,OAAO,GAAO,SAAdA,OAAOA;EACT,IAAMtC,SAAS,GAAGuC,sBAAW,CAAC,UAACjC,KAAU;IAAA,OAAKA,KAAK,CAACQ,MAAM,CAACd,SAAS;IAAC;EACrEnK,YAAY,CAACoC,OAAO,CAAC,oBAAoB,EAAEpB,MAAM,EAAE,CAACC,GAAG,EAAE,CAACE,MAAM,CAAC,qBAAqB,CAAC,CAAC;EACxF,OAAOgJ,SAAS,GACZ/C;IAAKuF,KAAK,EAAEb;KACR1E;IAAKQ,SAAS,EAAC,+BAA+B;IAAC1E,IAAI,EAAC;KAChDkE;IAAMQ,SAAS,EAAC;IAAiB,CAC/B,CACJ,GACN,IAAI;AACZ,CAAC;;ACxBD,IAAMgF,QAAQ,GAAMnN,QAAQ,cAAW;AAEvC,AAAO,IAAMoN,OAAO,GAAG,SAAVA,OAAOA;EAAA,OAASxL,GAAG,CAACyL,GAAG,CAAIF,QAAQ,UAAO,CAAC;AAAA;;ACOxD,IAAMG,aAAa,GAAkC,SAA/CA,aAAaA,CAAAnI,IAAA;MACfoI,QAAQ,GAAApI,IAAA,CAARoI,QAAQ;IACR9J,IAAI,GAAA0B,IAAA,CAAJ1B,IAAI;IACJ4B,UAAU,GAAAF,IAAA,CAAVE,UAAU;EAEV,IAAAG,iBAAA,GAEI3B,gBAAgB,CAAC;MAACwB,UAAU,EAAVA;KAAW,CAAC;IAD9BX,aAAa,GAAAc,iBAAA,CAAbd,aAAa;EAGjB,IAAMX,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAM2G,IAAI,GAAGsC,sBAAW,CAAC,UAACjC,KAAU;IAAA,IAAAwC,aAAA;IAAA,OAAKxC,KAAK,aAALA,KAAK,wBAAAwC,aAAA,GAALxC,KAAK,CAAEQ,MAAM,cAAAgC,aAAA,uBAAbA,aAAA,CAAe7C,IAAI;IAAC;EAC7D,IAAM8C,KAAK,GAAG,CAAA9C,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE8C,KAAK,KAAI,EAAE;EAC/B,IAAMC,SAAS,GAAG,SAAZA,SAASA;IACXhJ,aAAa,EAAE;GAClB;EAED,IAAMiJ,aAAa,GAAGpE,iBAAW,CAAC;IAC9B,IAAG,CAACoB,IAAI,EAAE;IACV,IAAG,CAAC8C,KAAK,CAACG,QAAQ,CAACnK,IAAI,CAAC,EACxB;MACI4D,KAAK,CAAIsD,IAAI,CAAC7F,KAAK,+BAA0BrB,IAAM,CAAC;MACpDiK,SAAS,EAAE;;GAElB,EAAE,CAACjK,IAAI,EAAEqD,IAAI,CAACC,SAAS,CAAC4D,IAAI,CAAC,CAAC,CAAC;EAEhC,IAAMkD,QAAQ,YAARA,QAAQA;IAAA;;QAkBV9J,QAAQ,CAAC/E,UAAU,CAAC,KAAK,CAAC,CAAC;;MAjB3B,IAAMyD,KAAK,GAAGnC,cAAc,EAAE;MAC9B,IAAG,CAACmC,KAAK,EAAE;QACPiL,SAAS,EAAE;QACX,OAAA7K,OAAA,CAAA2D,OAAA;;MAEJzC,QAAQ,CAAC/E,UAAU,CAAC,IAAI,CAAC,CAAC;MAAA,IAAAsH,KAAA,GAAAC,MAAA,aACtB;QAAA,OAAA1D,OAAA,CAAA2D,OAAA,CACmB4G,OAAO,EAAE,EAAA3G,IAAA,WAAtBqH,IAAI;UACV,IAAI,CAACA,IAAI,EAAE;YACPJ,SAAS,EAAE;;UAEf3J,QAAQ,CAAC5E,OAAO,CAAC2O,IAAI,CAAClH,IAAI,CAAC,CAAC;;OAC/B,YAAQnG,GAAG,EAAE;QACVuC,OAAO,CAACC,GAAG,CAAC;UAACxC,GAAG,EAAHA;SAAI,CAAC;QAClBgD,IAAI,KAAK,SAAS,GAAG4D,KAAK,CAAC,iBAAiB,CAAC,GAAGA,KAAK,CAAC,kBAAkB,CAAC;QACzEqG,SAAS,EAAE;OACd;MAAA,OAAA7K,OAAA,CAAA2D,OAAA,CAAAF,KAAA,IAAAA,KAAA,CAAAG,IAAA,GAAAH,KAAA,CAAAG,IAAA,CAAAb,MAAA,IAAAA,MAAA,CAAAU,KAAA;KAEJ,QAAAmB,CAAA;MAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;;EACDkC,eAAS,CAAC;IACN,CAACgB,IAAI,IAAIkD,QAAQ,EAAE;IACnB,CAAC,CAAClD,IAAI,IAAIgD,aAAa,EAAE;GAC5B,EAAE,CAAC7G,IAAI,CAACC,SAAS,CAAC4D,IAAI,CAAC,CAAC,CAAC;EAE1B,OAAOhD,6BAACoG,cAAQ,QAAER,QAAQ,CAAY;AAC1C,CAAC;;ICjDYS,aAAa,GAAc,SAA3BA,aAAaA,CAAA7I,IAAA;MACtB8I,IAAI,GAAA9I,IAAA,CAAJ8I,IAAI;IACJC,IAAI,GAAA/I,IAAA,CAAJ+I,IAAI;IAAAC,eAAA,GAAAhJ,IAAA,CACJiJ,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,IAAI,GAAAA,eAAA;IAAAE,WAAA,GAAAlJ,IAAA,CACjBmJ,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,KAAK,GAAAA,WAAA;IACdE,QAAQ,GAAApJ,IAAA,CAARoJ,QAAQ;IAAAC,UAAA,GAAArJ,IAAA,CACRiH,KAAK;IAALA,KAAK,GAAAoC,UAAA,cAAG,cAAc,GAAAA,UAAA;IACtBlF,MAAM,GAAAnE,IAAA,CAANmE,MAAM;IACNmF,SAAS,GAAAtJ,IAAA,CAATsJ,SAAS;IACTC,WAAW,GAAAvJ,IAAA,CAAXuJ,WAAW;EAEX,IAAA3F,SAAA,GAAgDC,cAAQ,EAAU;IAA3D2F,gBAAgB,GAAA5F,SAAA;IAAE6F,mBAAmB,GAAA7F,SAAA;EAC5C,IAAM8F,aAAa,GAAG,SAAhBA,aAAaA;IACfJ,SAAS,EAAE;GACd;EACD,IAAMK,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIrH,CAAgC;IAC7DmH,mBAAmB,CAACnH,CAAC,CAACsH,MAAM,CAACC,KAAK,CAAC;GACtC;EACD,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIxH,CAAM;IACvBA,CAAC,CAACyH,cAAc,EAAE;GACrB;EAEDvF,eAAS,CAAC;IACN,CAACsE,IAAI,IAAIW,mBAAmB,CAAC1H,SAAS,CAAC;GAC1C,EAAE,CAAC+G,IAAI,CAAC,CAAC;EACV,IAAMkB,OAAO,GAAG,CAAC,CAACT,WAAW,IAAI,CAAC,CAACC,gBAAgB,IAAIA,gBAAgB,CAACS,IAAI,EAAE,KAAKV,WAAW,CAACU,IAAI,EAAE;EACrG,OACIzH,6BAAC0H,gBAAK;IAACC,MAAM,EAAErB,IAAI;IAAE3E,MAAM,EAAEA,MAAM;IAAEiG,QAAQ;IAAC5C,MAAM,EAAE;KAClDhF,6BAAC6H,sBAAW;IAAClG,MAAM,EAAEA;KAAS8C,KAAK,CAAe,EAClDzE,6BAAC8H,oBAAS,QACN9H,wCAAGA,6CAASuG,IAAI,CAAU,CAAI,EAE1B,CAAC,CAACQ,WAAW,IACb/G,0CACIA,oDAAUA,6CAAS+G,WAAW,CAAU,yBAAuB,EAC/D/G,6BAAC+H,gBAAK;IACFV,KAAK,EAAEL,gBAAgB;IAAEgB,QAAQ,EAAEb,uBAAuB;IAC1Dc,WAAW,EAAC,iBAAiB;IAC7BC,OAAO,EAAEZ,WAAW;IACpBa,OAAO,EAAE,CAACX,OAAO,IAAIR,gBAAgB,KAAKzH,SAAS;IACnD6I,KAAK,EAAEZ;IACT,CACA,CAEF,EACZxH,6BAACqI,sBAAW,QACRrI,6BAACsI,iBAAM;IACHC,KAAK,EAAC,WAAW;IACjB/H,SAAS,EAAC,MAAM;IAChBgI,OAAO,EAAE7G;KACR8E,UAAU,CACN,EACTzG,6BAACsI,iBAAM;IACHC,KAAK,EAAE3B,QAAQ,GAAG,QAAQ,GAAG,SAAS;IACtCpG,SAAS,EAAC,MAAM;IAChBiI,QAAQ,EAAE,CAAC,CAAC1B,WAAW,IAAI,CAAAC,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAES,IAAI,EAAE,MAAKV,WAAW,CAACU,IAAI,EAAE;IAC1Ee,OAAO,EAAEtB;KAERP,MAAM,CACF,CACC,CACV;AAEhB,CAAC;;AChED,IAAM+B,YAAY,GAAkC,SAA9CA,YAAYA,CAAAlL,IAAA;MACd8I,IAAI,GAAA9I,IAAA,CAAJ8I,IAAI;IACJV,QAAQ,GAAApI,IAAA,CAARoI,QAAQ;IACRgC,QAAQ,GAAApK,IAAA,CAARoK,QAAQ;IACRnD,KAAK,GAAAjH,IAAA,CAALiH,KAAK;IAAAkE,SAAA,GAAAnL,IAAA,CACLoL,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,IAAI,GAAAA,SAAA;IACXE,OAAO,GAAArL,IAAA,CAAPqL,OAAO;IACPC,QAAQ,GAAAtL,IAAA,CAARsL,QAAQ;EAER,OACI9I,6BAAC0H,gBAAK;IAACoB,QAAQ,EAAEA,QAAQ;IAAEnB,MAAM,EAAErB,IAAI;IAAE3E,MAAM,EAAEkH,OAAO;IAAEjB,QAAQ,EAAEA,QAAQ;IAAEgB,IAAI,EAAEA,IAAI;IAAE5D,MAAM,EAAE;KAC9FhF,6BAAC6H,sBAAW;IAAClG,MAAM,EAAEkH;KAAUpE,KAAK,CAAe,EAClDmB,QAAQ,CACL;AAEhB,CAAC;;ACtBD,IAAMmD,WAAW,GAAO,SAAlBA,WAAWA;;EACb,IAAM3M,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAMqD,KAAK,GAAG4F,sBAAW,CAAC,UAACjC,KAAU;IAAA,OAAKA,KAAK,CAACQ,MAAM,CAACnE,KAAK;IAAC;EAC7D,IAAMrF,OAAO,GAAG2O,YAAM,EAAO;EAE7B,IAAMC,SAAS,GAAG,SAAZA,SAASA;IACX7M,QAAQ,CAAC7E,QAAQ,CAAC;MAAE+H,OAAO,EAAE;KAAI,CAAC,CAAC;IACnCjF,OAAO,IAAIA,OAAO,CAAC6O,OAAO,IAAIC,YAAY,CAAC9O,OAAO,CAAC6O,OAAO,CAAC;GAC9D;EAEDlH,eAAS,CAAC;;IACN,IAAI,CAAC,GAAAoH,cAAA,GAAC1J,KAAK,CAACJ,OAAO,cAAA8J,cAAA,eAAbA,cAAA,CAAeC,MAAM,GAAE;MACzBhP,OAAO,IAAIA,OAAO,CAAC6O,OAAO,IAAIC,YAAY,CAAC9O,OAAO,CAAC6O,OAAO,CAAC;MAC3D7O,OAAO,CAAC6O,OAAO,GAAGI,UAAU,CAAC;QACzBlN,QAAQ,CAAC7E,QAAQ,CAAC;UAAE+H,OAAO,EAAE;SAAI,CAAC,CAAC;OACtC,EAAE,IAAI,CAAC;;GAEf,EAAE,CAACI,KAAK,CAAC,CAAC;EAEX,OAAO,EAAA6J,eAAA,GAAA7J,KAAK,CAACJ,OAAO,cAAAiK,eAAA,uBAAbA,eAAA,CAAeF,MAAM,IAAG,CAAC,GAC5BrJ;IAAKQ,SAAS,EAAC;KACXR,6BAACwJ,gBAAK;IACFjB,KAAK,EAAE7I,KAAK,CAACF,IAAI;IACjBmI,MAAM,EAAEjI,KAAK,CAACJ,OAAO,CAAC+J,MAAM,GAAG,CAAC;IAChC1H,MAAM,EAAEsH;KAEPvJ,KAAK,CAACJ,OAAO,CACV,CACN,GACN,IAAI;AACZ,CAAC;;ACjCD,kBAAe,UAAC5F,IAAY,EAAE+P,eAAuB,EAAE9P,MAAe;EAClE,IAAID,IAAI,KAAKvB,cAAc,EAAE,OAAO,EAAE;EACtC,IAAI;IACA,OAAOyB,MAAM,CAACF,IAAI,EAAE+P,eAAe,CAAC,CAAC1P,MAAM,CAACJ,MAAM,IAAI,YAAY,CAAC;GACtE,CAAC,OAAAK,OAAA,EAAM;IACJ,OAAO,EAAE;;AAEjB,CAAC;;ACPD,mBAAe,UAACN,IAAY,EAAEgQ,UAA2B,EAAEC,UAAmB;EAC1E,IAAIjQ,IAAI,KAAKvB,cAAc,IAAIwR,UAAU,KAAKxR,cAAc,EAAE,OAAO,CAAC;EACtE,IAAI;IACA,IAAIyR,GAAG,GAAG,CAAC,CAACD,UAAU,GAAG/P,MAAM,EAAE,GAAGA,MAAM,CAACC,GAAG,CAAC8P,UAAU,CAAC,CAAC7P,KAAK,EAAE;IAClE,OAAO8P,GAAG,CAACC,IAAI,CAACjQ,MAAM,CAACC,GAAG,CAACH,IAAI,CAAC,CAACI,KAAK,EAAE,EAAE4P,UAAU,CAAC;GACxD,CAAC,OAAA1P,OAAA,EAAM;IACJ,OAAO,EAAE;;AAEjB,CAAC;;ACFD,IAAM8P,gBAAgB,GAAc,SAA9BA,gBAAgBA,CAAAtM,IAAA;MAClBuM,WAAW,GAAAvM,IAAA,CAAXuM,WAAW;IACXC,SAAS,GAAAxM,IAAA,CAATwM,SAAS;IACTC,YAAY,GAAAzM,IAAA,CAAZyM,YAAY;EAGZ,OACIjK,6BAACkK,qBAAU;IAAC1J,SAAS,EAAC;KAClBR,6BAACmK,yBAAc;IAAC1B,QAAQ,EAAEsB,WAAW,IAAI;KACrC/J,6BAACoK,yBAAc;IACX5B,OAAO,EAAE,SAAAA,QAAA1I,CAAC;MACNA,CAAC,CAACyH,cAAc,EAAE;MAClB0C,YAAY,CAACF,WAAW,GAAG,CAAC,CAAC;KAChC;IACDM,QAAQ;IACR5O,IAAI,EAAC;IACP,CACW,EACjBuE,6BAACmK,yBAAc;IAACG,MAAM,EAAE,CAAC,KAAKP,WAAW;IAAEvR,GAAG,EAAE;KAC5CwH,6BAACoK,yBAAc;IACX5B,OAAO,EAAE,SAAAA,QAAA1I,CAAC;MACNA,CAAC,CAACyH,cAAc,EAAE;MAClB0C,YAAY,CAAC,CAAC,CAAC;KAClB;IACDxO,IAAI,EAAC;KAEJ,CAAC,CACW,CACJ,EAGbuO,SAAS,GAAG,CAAC,IAAIhK,6BAACmK,yBAAc;IAACG,MAAM,EAAE,CAAC,KAAKP,WAAW;IAAEvR,GAAG,EAAE;KAC7DwH,6BAACoK,yBAAc;IACX5B,OAAO,EAAE,SAAAA,QAAA1I,CAAC;MACNA,CAAC,CAACyH,cAAc,EAAE;MAClB0C,YAAY,CAAC,CAAC,CAAC;KAClB;IACDxO,IAAI,EAAC;KAEJ,CAAC,CACW,CACJ,EAIjBsO,WAAW,GAAG,CAAC,IAAIA,WAAW,KAAKC,SAAS,IAAIA,SAAS,KAAK,CAAC,IAE/DhK,6BAACmK,yBAAc;IAAC1B,QAAQ;IAACjQ,GAAG,EAAE;KAC1BwH,6BAACoK,yBAAc;IACX3O,IAAI,EAAC;WAGQ,CACJ,EAGjB,CAACsO,WAAW,KAAK,CAAC,IAAIA,WAAW,KAAKC,SAAS,KAAKA,SAAS,KAAK,CAAC,IACnEhK,6BAACmK,yBAAc;IAAC3R,GAAG,EAAE;KACjBwH,6BAACoK,yBAAc;IACX5B,OAAO,EAAE,SAAAA,QAAA1I,CAAC;MACNA,CAAC,CAACyH,cAAc,EAAE;MAClB0C,YAAY,CAAC,CAAC,CAAC;KAClB;IACDxO,IAAI,EAAC;SAGQ,CACJ,EAGjB,CAACsO,WAAW,GAAG,CAAC,EAAEA,WAAW,EAAEA,WAAW,GAAG,CAAC,CAAC,CAC9C5Q,MAAM,CAAC,UAAAoR,IAAI;IAAA,OAAIA,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAGP,SAAS,GAAG,CAAC;IAAC,CAAC5Q,GAAG,CAAC,UAAAmR,IAAI;IAAA,OACtDvK,6BAACmK,yBAAc;MAACG,MAAM,EAAEC,IAAI,KAAKR,WAAW;MAAEvR,GAAG,EAAE+R;OACnDvK,6BAACoK,yBAAc;MACX5B,OAAO,EAAE,SAAAA,QAAA1I,CAAC;QACNA,CAAC,CAACyH,cAAc,EAAE;QAClB0C,YAAY,CAACM,IAAI,CAAC;OACrB;MACD9O,IAAI,EAAC;OAEJ8O,IAAI,CACQ,CACJ;GAChB,CAAC,EAIFP,SAAS,GAAGD,WAAW,GAAG,CAAC,IAE3B/J,6BAACmK,yBAAc;IAAC1B,QAAQ;IAACjQ,GAAG,EAAE;KAC1BwH,6BAACoK,yBAAc;IACX3O,IAAI,EAAC;WAGQ,CACJ,EAGpBuO,SAAS,GAAG,CAAC,IACVhK,6BAACmK,yBAAc;IAACG,MAAM,EAAEN,SAAS,GAAG,CAAC,KAAKD,WAAW;IAAEvR,GAAG,EAAEwR,SAAS,GAAG;KACpEhK,6BAACoK,yBAAc;IACX5B,OAAO,EAAE,SAAAA,QAAA1I,CAAC;MACNA,CAAC,CAACyH,cAAc,EAAE;MAClB0C,YAAY,CAACD,SAAS,GAAG,CAAC,CAAC;KAC9B;IACDvO,IAAI,EAAC;KAEJuO,SAAS,GAAG,CAAC,CACD,CAExB,EACAA,SAAS,GAAG,CAAC,IACVhK,6BAACmK,yBAAc;IAACG,MAAM,EAAEN,SAAS,KAAKD,WAAW;IAAEvR,GAAG,EAAEwR;KACpDhK,6BAACoK,yBAAc;IACX5B,OAAO,EAAE,SAAAA,QAAA1I,CAAC;MACNA,CAAC,CAACyH,cAAc,EAAE;MAClB0C,YAAY,CAACD,SAAS,CAAC;KAC1B;IACDvO,IAAI,EAAC;KAEJuO,SAAS,CACG,CAExB,EACDhK,6BAACmK,yBAAc;IAAC1B,QAAQ,EAAEsB,WAAW,IAAIC;KACrChK,6BAACoK,yBAAc;IACX5B,OAAO,EAAE,SAAAA,QAAA1I,CAAC;MACNA,CAAC,CAACyH,cAAc,EAAE;MAClB0C,YAAY,CAACF,WAAW,GAAG,CAAC,CAAC;KAChC;IACDS,IAAI;IACJ/O,IAAI,EAAC;IACP,CACW,CACR;AAErB,CAAC;;AC7ID,WAAYgP,SAAS;EACjBA,qCAAwB;EACxBA,6CAAgC;EAChCA,yDAA4C;EAC5CA,+DAAkD;AACpD,CAAC,EALSA,iBAAS,KAATA,iBAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACCrBC,IAAI,CAAC9P,GAAG,CAAC+P,6BAAgB,CAAC,CACrBvI,IAAI,CAAC;EACNwI,GAAG,EAAE,IAAI;EACTC,WAAW,EAAE,IAAI;EACjBC,aAAa,EAAE;IACbC,WAAW,EAAE;GACd;EACDC,SAAS,EAAE;IACPC,EAAE,EAAE;MACAC,WAAW,EAAEC;KAChB;IACDC,EAAE,EAAE;MACAF,WAAW,EAAEG;;;CAGtB,CAAC;;ACVG,IAAMC,sBAAsB,GAAG,CAAC;AAEvC,IAAaC,SAAS,GAAe,CACjC;EACIC,IAAI,EAAE,IAAI;EACV9M,QAAQ,EAAE,QAAQ;EAClB+M,SAAS,EAAE,QAAQ;EACnBC,UAAU,EAAE,QAAQ;EACpBrN,IAAI,EAAE,QAAQ;EACdsN,KAAK,EAAE,mBAAmB;EAC1BC,cAAc,EAAE;CACnB,EACD;EACIJ,IAAI,EAAE,IAAI;EACV9M,QAAQ,EAAE,SAAS;EACnB+M,SAAS,EAAE,SAAS;EACpBC,UAAU,EAAE,SAAS;EACrBrN,IAAI,EAAE,SAAS;EACfsN,KAAK,EAAE,iBAAiB;EACxBC,cAAc,EAAE;CACnB,CACJ;;ACtBD,IAAMC,WAAW,GAAG,SAAdA,WAAWA;EACb,IAAMC,eAAe,GACrB,CAAC,CAAClT,YAAY,CAACC,OAAO,CAAC,UAAU,CAAC,GAC5BD,YAAY,CAACC,OAAO,CAAC,UAAU,CAAC,GAChCkT,SAAS,CAACvI,QAAQ,IAAI+H,SAAS,CAACD,sBAAsB,CAAC,CAACE,IAAI;EAElE,IAAMpP,QAAQ,GAAGC,sBAAW,EAAE;EAC9B,IAAA2P,eAAA,GAAiBC,2BAAc,EAAE;IAAzBvB,IAAI,GAAAsB,eAAA,CAAJtB,IAAI;EACZ,IAAAtJ,SAAA,GAAwCC,cAAQ,CAAC,KAAK,CAAC;IAAhD6K,YAAY,GAAA9K,SAAA;IAAE+K,eAAe,GAAA/K,SAAA;EACpC,IAAAI,UAAA,GAAoCH,cAAQ,CAACyK,eAAgB,CAAC;IAAvDtI,QAAQ,GAAAhC,UAAA;IAAE4K,eAAe,GAAA5K,UAAA;EAChC,IAAMG,MAAM,GAAG,SAATA,MAAMA;IAAA,OAASwK,eAAe,CAAC,UAAAE,SAAS;MAAA,OAAI,CAACA,SAAS;MAAC;;EAC7D,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,IAAY;IACnC,IAAI/I,QAAQ,GAAG+H,SAAS,CAACiB,IAAI,CAAC,UAAAjT,CAAC;MAAA,OAAIA,CAAC,CAACiS,IAAI,KAAKe,IAAI;MAAC;IACnD,IAAI,CAAC/I,QAAQ,EAAEA,QAAQ,GAAG+H,SAAS,CAACD,sBAAsB,CAAC;IAC3DZ,IAAI,CAAC+B,cAAc,CAACjJ,QAAQ,CAACgI,IAAI,CAAC;IAClC5R,MAAM,CAAC8S,MAAM,CAAClJ,QAAQ,CAACoI,cAAc,CAAC;IACtChT,YAAY,CAACoC,OAAO,CAAC,UAAU,EAAEwI,QAAQ,CAACgI,IAAI,CAAC;IAC/CY,eAAe,CAAC5I,QAAQ,CAACgI,IAAI,CAAC;IAC9BpP,QAAQ,CAAC3E,WAAW,CAAC+L,QAAQ,CAACgI,IAAI,CAAC,CAAC;GACvC;EAEDxJ,eAAS,CAAC;IACNsK,iBAAiB,CAAC9I,QAAQ,CAAC;GAC9B,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,IAAMmJ,eAAe,GAAGC,aAAO,CAAC;IAC5B,IAAMC,WAAW,GAAGtB,SAAS,CAACiB,IAAI,CAAC,UAACjT,CAAW;MAAA,OAAKA,CAAC,CAACiS,IAAI,KAAKhI,QAAQ;MAAC;IACxE,IAAG,CAACqJ,WAAW,EAAE,OAAO,IAAI;IAC5B,OAAOA,WAAW;GACrB,EAAE,CAACrJ,QAAQ,CAAC,CAAC;EACd,OAAO;IACHA,QAAQ,EAARA,QAAQ;IACR0I,YAAY,EAAZA,YAAY;IACZS,eAAe,EAAfA,eAAe;IACfhL,MAAM,EAANA,MAAM;IACNyK,eAAe,EAAfA;GACH;AACL,CAAC;;AClCD,IAAMU,mBAAmB,GAAG,SAAtBA,mBAAmBA;EACrB,IAAAC,YAAA,GAMIlB,WAAW,EAAE;IALbc,eAAe,GAAAI,YAAA,CAAfJ,eAAe;IACfnJ,QAAQ,GAAAuJ,YAAA,CAARvJ,QAAQ;IACR0I,YAAY,GAAAa,YAAA,CAAZb,YAAY;IACZvK,MAAM,GAAAoL,YAAA,CAANpL,MAAM;IACNyK,eAAe,GAAAW,YAAA,CAAfX,eAAe;EAGnB,OACIpM,6BAACgN,mBAAQ;IACLrF,MAAM,EAAEuE,YAAY;IACpBvK,MAAM,EAAEA,MAAM;IACdnB,SAAS,OAAKC,MAAM,CAAC,eAAe;KAEpCT,6BAACiN,yBAAc;IACXzM,SAAS,EAAKC,MAAM,CAAC,eAAe,CAAC;KAErCT;IAAMuF,KAAK,EAAE;MAAEgD,KAAK,EAAE,MAAM;MAAE2E,aAAa,EAAE,YAAY;MAAEhI,OAAO,EAAE,MAAM;MAAEE,UAAU,EAAE;;KACnF,CAAC,CAACuH,eAAe,IAAI3M;IAAKQ,SAAS,YAAUC,MAAM,CAAC,oBAAoB,CAAG;IAAEG,GAAG,EAAE+L,eAAe,CAAChB;IAAS,EAC3G,CAAC,CAACgB,eAAe,IAAIA,eAAe,CAAClB,SAAS,EAC/CzL,6BAACmN,iBAAa;IAAC3M,SAAS,EAAC,MAAM;IAAC+E,KAAK,EAAE;MAAE6H,QAAQ,EAAE,MAAM;MAAEC,UAAU,EAAE,KAAK;MAAEC,SAAS,EAAE;;IAAW,CACjG,CACM,EACjBtN,6BAACuN,uBAAY;IAAC/M,SAAS,EAAEC,MAAM,CAAC,2BAA2B;KAEnD8K,SAAS,CAACnS,GAAG,CAAC,UAACmT,IAAc,EAAEiB,KAAa;IAAA,OACxCxN,6BAACyN,uBAAY;MACTjV,GAAG,EAAE+T,IAAI,CAACf,IAAI;MACdhL,SAAS,EAAKC,MAAM,CAAC,iBAAiB,CAAC,oBAAc+M,KAAK,KAAKjC,SAAS,CAAClC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,CAAE;MACvGb,OAAO,EAAE,SAAAA;QAAA,OAAM4D,eAAe,CAACG,IAAI,CAACf,IAAI,CAAC;;OAEzCxL;MACIQ,SAAS,EAAKC,MAAM,CAAC,wBAAwB,CAAC,SAAIA,MAAM,CAAC,aAAa,CAAC,UACnE+C,QAAQ,IAAI+I,IAAI,CAACf,IAAI,GAAG/K,MAAM,CAAC,+BAA+B,CAAC,GAAG,EACtE;OAEAT;MAAMQ,SAAS,EAAC;OACZR;MACIuF,KAAK,EAAE;QAAEmI,KAAK,EAAE,MAAM;QAAEC,WAAW,EAAE;OAAQ;MAC7C/M,GAAG,EAAE2L,IAAI,CAACZ;MACZ,CACC,EACNY,IAAI,CAAClO,IAAI,CACR,CACK;GAClB,CAAC,CAEK,CACR;AAEnB,CAAC;;AC/DD,yBAAe,UAAC3E,IAAY;EACxB,IAAMkU,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACpU,IAAI,GAAG,EAAE,CAAC;EAC/B,IAAMqU,CAAC,GAAGrU,IAAI,GAAG,EAAE;EACnB,OAAUkU,CAAC,CAACI,QAAQ,EAAE,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,SAAIF,CAAC,CACvCC,QAAQ,EAAE,CACVC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACzB,CAAC;;ACJD,mBAAe,UAACvU,IAAa;EACzB,IAAI;IACA,OAAOE,MAAM,CAACF,IAAI,CAAC,CAACwU,WAAW,EAAE;GACpC,CAAC,OAAAlU,OAAA,EAAM;IACJ,OAAO,EAAE;;AAEjB,CAAC;;ACRD,IAAMmU,SAAS,GAAG,SAAZA,SAASA,CAAIC,SAAgB,EAAEC,cAAqB;EACtD,IAAI,CAAChV,KAAK,CAACC,OAAO,CAAC8U,SAAS,CAAC,EAAE;IAC3B,OAAO,KAAK;;EAEhB,IAAI/U,KAAK,CAACC,OAAO,CAAC+U,cAAc,CAAC,EAAE;IAC/B,IAAMC,UAAU,GAAGF,SAAS,CAACjV,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAI8U,cAAc,CAACpI,QAAQ,CAAC1M,CAAC,CAAC;MAAC;IACpE,OAAO+U,UAAU,CAACjF,MAAM,GAAG,CAAC;;EAEhC,OAAO,IAAI;AACf,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTD,AAKA,IAAMkF,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIpS,KAA6B;EACpD,OAAQ6D,6BAACwO,iBAAU,CAACD,iBAAiB,oBAAKpS,KAAK,GAC3C6D,6BAACyO,cAAW;IAAClG,KAAK,EAAC;IAAW,CACH;AACnC,CAAC;AAED,IAAMmG,YAAY,GAAG,SAAfA,YAAYA,CAAIvS,KAAU;EAC5B,OACE6D,6BAACwO,iBAAU,CAACG,MAAM,oBAAKxS,KAAK,GAC1B6D;IAAKuF,KAAK,EAAE;MAAE6H,QAAQ,EAAE,MAAM;MAAEwB,UAAU,EAAE;;KACzCzS,KAAK,CAAC8C,IAAI,CAAC4P,KAAK,CACb,CACY;AAExB,CAAC;AAEH,IAAMC,YAAY,GAAG;EACjBC,OAAO,EAAE,SAAAA,QAACC,UAAe,EAAE3L,KAAU;IAAA,OAAA4L,QAAA,KAC9BD,UAAU;MACb5B,QAAQ,EAAE,MAAM;MAChBwB,UAAU,EAAE,GAAG;MACfrG,KAAK,EAAE,SAAS;MAChB2G,WAAW,EAAE7L,KAAK,CAAC8L,SAAS,GAAG,SAAS,GAAG;;GAC7C;EACFC,KAAK,EAAE,SAAAA,MAACJ,UAAe,EAAEK,CAAM;IAAA,OAAAJ,QAAA,KACxBD,UAAU;MACb5B,QAAQ,EAAE,MAAM;MAChBwB,UAAU,EAAE,GAAG;MACfrG,KAAK,EAAE;;GACT;EACF+G,WAAW,EAAE,SAAAA,YAACN,UAAe;IAAA,OAAAC,QAAA,KACtBD,UAAU;MACb5B,QAAQ,EAAE,MAAM;MAChBwB,UAAU,EAAE,GAAG;MACfrG,KAAK,EAAE;;;CAEd;AACD,IAAMgH,YAAY,GAAG,SAAfA,YAAYA,CAAA/R,IAAA;MACdgS,SAAS,GAAAhS,IAAA,CAATgS,SAAS;IACTC,AACAC,OAAO,GAAAlS,IAAA,CAAPkS,OAAO;IACPC,UAAU,GAAAnS,IAAA,CAAVmS,UAAU;IACVC,YAAY,GAAApS,IAAA,CAAZoS,YAAY;IACZvI,KAAK,GAAA7J,IAAA,CAAL6J,KAAK;IACLwI,OAAO,GAAArS,IAAA,CAAPqS,OAAO;IACJC,IAAI,GAAAC,6BAAA,CAAAvS,IAAA,EAAAwS,SAAA;EAEP,IAAAhE,eAAA,GAAeC,2BAAc,EAAE;IAAtBgE,CAAC,GAAAjE,eAAA,CAADiE,CAAC;EACV,IAAM/P,aAAa,GAAG7G,KAAK,CAACC,OAAO,CAAC+N,KAAK,CAAC,GAAGqI,OAAO,CAACvW,MAAM,CAAC,UAACI,CAAM;IAAA,OAAI8N,KAAK,CAACpB,QAAQ,CAAC1M,CAAC,CAAC8N,KAAK,CAAC;IAAC,GAAGwI,OAAO,GAAGH,OAAO,CAACvW,MAAM,CAAC,UAACI,CAAM;IAAA,OAAKA,CAAC,CAAC8N,KAAK,IAAIA,KAAK;IAAC,GAAGqI,OAAO,CAAClD,IAAI,CAAC,UAACjT,CAAM;IAAA,OAAKA,CAAC,CAAC8N,KAAK,IAAIA,KAAK;IAAC;EACrM,OACIrH,6BAACkQ,eAAM;IACHP,UAAU,EAAEA,UAAU;IACtBD,OAAO,EAAEA,OAAO;IAChBrI,KAAK,EAAE,CAACmI,SAAS,GAAItP,aAAa,WAAbA,aAAa,GAAI,IAAI,GAAIX,SAAS;IACvDkQ,YAAY,EAAED,SAAS,GAAGtP,aAAa,GAAGX,SAAS;IACnD4Q,aAAa,EAAEP,YAAY,GAAG,KAAK,GAAG,MAAM;IAC5CC,OAAO,EAAEA,OAAO;IAChBrB,UAAU,EAAE;MACR4B,kBAAkB,EAAE,SAAAA;QAAA,OAAM,IAAI;;MAC9B7B,iBAAiB,EAAjBA,iBAAiB;MACjBI,MAAM,EAAED;KACX;IACDjO,MAAM,EAAEqO,YAAY;IACpB7G,WAAW,EAAEgI,CAAC,CAAC,oBAAoB;KAC/BH,IAAI,EACV;AAEV,CAAC;;;;ACxCD,IAAYO,aAEX;AAFD,WAAYA,aAAa;EACrBA,wCAAuB;AAC3B,CAAC,EAFWA,aAAa,KAAbA,aAAa;AAIzB,AAAA,IAAYC,OAGX;AAHD,WAAYA,OAAO;EACfA,sBAAW;EACXA,wBAAa;AACjB,CAAC,EAHWA,OAAO,KAAPA,OAAO;AAKnB,AAAA,IAAYC,aAGX;AAHD,WAAYA,aAAa;EACrBA,wCAAuB;EACvBA,4CAA2B;AAC/B,CAAC,EAHWA,aAAa,KAAbA,aAAa;AAKzB,AAAA,IAAYC,cAGX;AAHD,WAAYA,cAAc;EACtBA,6BAAW;EACXA,+BAAa;AACjB,CAAC,EAHWA,cAAc,KAAdA,cAAc;AAuC1B,AAAA,IAAYC,aAGX;AAHD,WAAYA,aAAa;EACrBA,uDAAO;EACPA,iDAAI;AACR,CAAC,EAHWA,aAAa,KAAbA,aAAa;AAKzB,AAAA,IAAYC,iBAIX;AAJD,WAAYA,iBAAiB;EACzBA,+DAAO;EACPA,yDAAI;EACJA,2DAAK;AACT,CAAC,EAJWA,iBAAiB,KAAjBA,iBAAiB;AAoB7B,AAAA,IAAYC,aAIX;AAJD,WAAYA,aAAa;EACrBA,iCAAgB;EAChBA,uCAAsB;EACtBA,+CAA8B;AAClC,CAAC,EAJWA,aAAa,KAAbA,aAAa;;AClGzB,IAAMC,aAAa,GAAc,SAA3BA,aAAaA,CAAApT,IAAA;MACjBqT,EAAE,GAAArT,IAAA,CAAFqT,EAAE;IACFC,OAAO,GAAAtT,IAAA,CAAPsT,OAAO;IACPC,SAAS,GAAAvT,IAAA,CAATuT,SAAS;IACTC,MAAM,GAAAxT,IAAA,CAANwT,MAAM;IACNC,QAAQ,GAAAzT,IAAA,CAARyT,QAAQ;IACRC,WAAW,GAAA1T,IAAA,CAAX0T,WAAW;IACXC,QAAQ,GAAA3T,IAAA,CAAR2T,QAAQ;IAAAC,mBAAA,GAAA5T,IAAA,CACR6T,cAAc;IAAdA,cAAc,GAAAD,mBAAA,cAAG,KAAK,GAAAA,mBAAA;IAAAE,YAAA,GAAA9T,IAAA,CACtB+T,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,IAAI,GAAAA,YAAA;IACdE,MAAM,GAAAhU,IAAA,CAANgU,MAAM;IACNC,UAAU,GAAAjU,IAAA,CAAViU,UAAU;IACVC,MAAM,GAAAlU,IAAA,CAANkU,MAAM;IACNC,SAAS,GAAAnU,IAAA,CAATmU,SAAS;IACTC,aAAa,GAAApU,IAAA,CAAboU,aAAa;IACbpW,MAAM,GAAAgC,IAAA,CAANhC,MAAM;IACNqW,sBAAsB,GAAArU,IAAA,CAAtBqU,sBAAsB;IACtBC,oBAAoB,GAAAtU,IAAA,CAApBsU,oBAAoB;IACpBC,gBAAgB,GAAAvU,IAAA,CAAhBuU,gBAAgB;IAChBC,kBAAkB,GAAAxU,IAAA,CAAlBwU,kBAAkB;IAClBC,mBAAmB,GAAAzU,IAAA,CAAnByU,mBAAmB;EAEnB,IAAA7Q,SAAA,GAAkCC,cAAQ,CAAU,KAAK,CAAC;IAAnD6Q,UAAU,GAAA9Q,SAAA;IAAE+Q,WAAW,GAAA/Q,SAAA;EAC9B,IAAAI,UAAA,GAAkCH,cAAQ,CAAU,KAAK,CAAC;IAAnD+Q,UAAU,GAAA5Q,UAAA;IAAE6Q,WAAW,GAAA7Q,UAAA;EAC9B,IAAAwK,eAAA,GAAeC,2BAAc,EAAE;IAAtBgE,CAAC,GAAAjE,eAAA,CAADiE,CAAC;EACV,IAAMqC,cAAc,GAAG,SAAjBA,cAAcA;IAClBD,WAAW,CAAC,CAACD,UAAU,CAAC;IACxB,CAACb,OAAO,IAAI,CAACL,WAAW,IAAIiB,WAAW,CAAC,CAACC,UAAU,CAAC;GACrD;EAED,IAAMG,sBAAsB,GAAG,SAAzBA,sBAAsBA;IAC1B,IAAG/W,MAAM,KAAKmV,aAAa,CAAC6B,SAAS,IAAI,CAAC1B,OAAO,EAAE;IACnDkB,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAG;MACnBlB,OAAO,EAAPA,OAAO;MACPY,MAAM,EAANA,MAAM;MACNC,SAAS,EAATA,SAAS;MACTC,aAAa,EAAbA,aAAa;MACbT,QAAQ,EAARA;KACD,CAAC;GACH;EAEDnP,eAAS,CAAC;IACRmQ,WAAW,CAACjB,WAAW,IAAI,CAAC,CAACK,OAAO,CAAC;GACtC,EAAE,CAACA,OAAO,EAAEL,WAAW,CAAC,CAAC;EAC1B,OACElR;IACEyS,GAAG,EAAEZ,sBAAsB,KAAKhB,EAAE,GAAGiB,oBAAoB,GAAGvS,SAAS;IACrEiB,SAAS,aAAU,CAACgR,MAAM,GAAG,MAAM,GAAG,MAAM,WAC1C,CAAC,CAACP,QAAQ,GAAG,iCAAiC,GAAG,EACnD,WACE,CAAC,CAACA,QAAQ,IAAIO,MAAM,GAChB,sBAAsB,GACtB,iBACN;KAECH,cAAc,IAAIE,OAAO,IACxBvR;IACEQ,SAAS,6DAA2DC,QAAM,CAAC,oBAAoB;KAE/FT,6BAAC0S,mBAAI;IAACC,EAAE,QAAKlB,UAAU,IAAI,GAAG,CAAE;IAAEjR,SAAS,EAAC;KACzCmR,SAAS,CACL,EACN,CAAC,CAACD,MAAM,IAAI,CAAC,CAACC,SAAS,IAAI,CAAC,CAACV,QAAQ,IAAIjR;IAAMQ,SAAS,EAAC,oBAAoB;IAACgI,OAAO,EAAE,SAAAA;MAAA,OAAMuJ,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAGL,MAAM,EAAEC,SAAS,EAAEV,QAAQ,CAAC;;2BAEtI,CAEV,EAEEC,WAAW,IAAI,CAAC,CAACK,OAAO,GAEzBvR;IAAGQ,SAAS,EAAC;KACVoS,cAAc,CAAC7B,SAAS,EAAEd,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAC/C,GAEJjQ,6BAAC6S,mBAAQ;IAACrS,SAAS,EAAC,OAAO;IAACmH,MAAM,EAAEuK;KAClClS;IAAGQ,SAAS,EAAC;KACVoS,cAAc,CAAC7B,SAAS,EAAEd,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAC/C,CACK,EAEZiB,WAAW,GACVlR;IAAKQ,SAAS,EAAC;KACbR,6BAAC0S,mBAAI;IACHC,EAAE,QAAKlB,UAAU,IAAI,GAAG,CAAE;IAC1BhN,KAAK,EAAC,iBAAiB;IACvBjE,SAAS,EAAC;KAETsQ,OAAO,CACH,CACH,GAEN9Q;IAAKQ,SAAS;KACZR;IAAKQ,SAAS,EAAC;KACZ2Q,QAAQ,IACLnR;IACEQ,SAAS,wCAAsCC,QAAM,CAAC,qBAAqB,CAAC,SAAIA,QAAM,CAAC,uCAAuC,CAAC,yBAAoBA,QAAM,CAAC,YAAY,CAAG;IACzK+H,OAAO,EAAE,SAAAA;MAAA,OAAMyJ,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAGd,QAAQ,CAAC;;KAE9CnR,oDAAgB,OAAE4R,aAAa,CAEpC,EACD5R;IACEQ,SAAS,wCACPC,QAAM,CAAC,qBAAqB,CAC9B,UACE0Q,QAAQ,GAAG1Q,QAAM,CAAC,kCAAkC,CAAC,GAAG,EAC1D,qCAAiC;IACjC+H,OAAO,EAAE8J;KAERxB,OAAO,CACN,EACHtV,MAAM,KAAKmV,aAAa,CAACmC,OAAO,IAAI9S;IAAGwI,OAAO,EAAE+J,sBAAsB;IAAE/R,SAAS,kBAAehF,MAAM,KAAKmV,aAAa,CAAC6B,SAAS,GAAG,+CAA+C,GAAG,EAAE;KAAKhX,MAAM,CAAK,EACzM,CAAC0V,WAAW,IAAI1V,MAAM,KAAKmV,aAAa,CAACmC,OAAO,IAC/C9S,6BAAC6S,mBAAQ;IAAClL,MAAM,EAAEyK;KAChBpS;IAAGQ,SAAS,EAAC;KACVwQ,MAAM,GAAG,MAAM,GAAG,MAAM,CACvB,CAEP,CACG,CAET,CACE;AAET,CAAC;;AChID,IAAM+B,YAAY,GAAiC,SAA7CA,YAAYA,CAAAvV,IAAA;MAChBqT,EAAE,GAAArT,IAAA,CAAFqT,EAAE;IACFmC,MAAM,GAAAxV,IAAA,CAANwV,MAAM;IACNlC,OAAO,GAAAtT,IAAA,CAAPsT,OAAO;IACPC,SAAS,GAAAvT,IAAA,CAATuT,SAAS;IACTE,QAAQ,GAAAzT,IAAA,CAARyT,QAAQ;IACRC,WAAW,GAAA1T,IAAA,CAAX0T,WAAW;IACXC,QAAQ,GAAA3T,IAAA,CAAR2T,QAAQ;IAAAC,mBAAA,GAAA5T,IAAA,CACR6T,cAAc;IAAdA,cAAc,GAAAD,mBAAA,cAAG,KAAK,GAAAA,mBAAA;IAAAE,YAAA,GAAA9T,IAAA,CACtB+T,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,IAAI,GAAAA,YAAA;IACdE,MAAM,GAAAhU,IAAA,CAANgU,MAAM;IACNC,UAAU,GAAAjU,IAAA,CAAViU,UAAU;IACVC,MAAM,GAAAlU,IAAA,CAANkU,MAAM;IACNC,SAAS,GAAAnU,IAAA,CAATmU,SAAS;IACTC,aAAa,GAAApU,IAAA,CAAboU,aAAa;IACbG,gBAAgB,GAAAvU,IAAA,CAAhBuU,gBAAgB;IAChBkB,OAAO,GAAAzV,IAAA,CAAPyV,OAAO;IACPpB,sBAAsB,GAAArU,IAAA,CAAtBqU,sBAAsB;IACtBqB,aAAa,GAAA1V,IAAA,CAAb0V,aAAa;IACbpB,oBAAoB,GAAAtU,IAAA,CAApBsU,oBAAoB;IACpBG,mBAAmB,GAAAzU,IAAA,CAAnByU,mBAAmB;EAEnB,IAAA7Q,SAAA,GAAkCC,cAAQ,CAAU,KAAK,CAAC;IAAnD6Q,UAAU,GAAA9Q,SAAA;IAAE+Q,WAAW,GAAA/Q,SAAA;EAC9B,IAAAI,UAAA,GAAkCH,cAAQ,CAAU,KAAK,CAAC;IAAnD+Q,UAAU,GAAA5Q,UAAA;IAAE6Q,WAAW,GAAA7Q,UAAA;EAE9B,IAAAwK,eAAA,GAAcC,2BAAc,EAAE;IAAtBgE,CAAC,GAAAjE,eAAA,CAADiE,CAAC;EACT,IAAMqC,cAAc,GAAG,SAAjBA,cAAcA;IAClB,IAAG,CAACzB,EAAE,EAAE;IACRwB,WAAW,CAAC,CAACD,UAAU,CAAC;IACxBc,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAGrC,EAAE,CAAC;IACnB,CAACU,OAAO,IAAI,CAACL,WAAW,IAAIiB,WAAW,CAAC,CAACC,UAAU,CAAC;GACrD;EAED,IAAMe,WAAW,GAAG,SAAdA,WAAWA;IACf,IAAG,CAACtC,EAAE,EAAE;IACRoC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGpC,EAAE,EAAEC,OAAO,IAAI,EAAE,EAAEY,MAAM,CAAC;GACrC;EAED1P,eAAS,CAAC;IACRmQ,WAAW,CAACjB,WAAW,IAAI,CAAC,CAACK,OAAO,CAAC;GACtC,EAAE,CAACA,OAAO,EAAEL,WAAW,CAAC,CAAC;EAC1B,OACElR;IACEyS,GAAG,EAAEZ,sBAAsB,KAAKhB,EAAE,GAAGiB,oBAAoB,GAAGvS,SAAS;IACrEiB,SAAS,aAAU,CAACgR,MAAM,GAAG,MAAM,GAAG,MAAM,WAC1C,CAAC,CAACP,QAAQ,GAAG,iCAAiC,GAAG,EACnD,WACE,CAAC,CAACA,QAAQ,IAAIO,MAAM,GAChB,sBAAsB,GACtB,iBACN;KAECH,cAAc,IAAIE,OAAO,IACxBvR;IACEQ,SAAS,6DAA2DC,QAAM,CAAC,oBAAoB;KAE/FT,6BAAC0S,mBAAI;IAACC,EAAE,QAAKlB,UAAU,IAAI,GAAG,CAAE;IAAEjR,SAAS,EAAC;KACzCmR,SAAS,CACL,EACN,CAAC,CAACD,MAAM,IAAI,CAAC,CAACC,SAAS,IAAI,CAAC,CAACV,QAAQ,IAAIjR;IAAMQ,SAAS,EAAC,oBAAoB;IAACgI,OAAO,EAAE,SAAAA;MAAA,OAAMuJ,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAGL,MAAM,EAAEC,SAAS,EAAEV,QAAQ,CAAC;;2BAEtI,CAEV,EAGEC,WAAW,IAAI,CAAC,CAACK,OAAO,GAEzBvR;IAAGQ,SAAS,EAAC;KACVoS,cAAc,CAAC7B,SAAS,EAAEd,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAC/C,GAEJjQ,6BAAC6S,mBAAQ;IAACrS,SAAS,EAAC,OAAO;IAACmH,MAAM,EAAEuK;KAClClS;IAAGQ,SAAS,EAAC;KACVoS,cAAc,CAAC7B,SAAS,EAAEd,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAC/C,CACK,EAEZiB,WAAW,GACVlR;IAAKQ,SAAS,EAAC;KACbR,6BAAC0S,mBAAI;IACHC,EAAE,QAAKlB,UAAU,IAAI,GAAG,CAAE;IAC1BhN,KAAK,EAAC,iBAAiB;IACvBjE,SAAS,EAAC;KAETsQ,OAAO,CACH,CACH,GAEN9Q;IAAKQ,SAAS;KACZR;IACEQ,SAAS,sBACPC,QAAM,CAAC,8BAA8B,CACvC,6BAAuB8Q,OAAO,GAAG,EAAE,GAAG,WAAW;KAEhDA,OAAO,IACNvR;IACEQ,SAAS,EAAKC,QAAM,CAAC,oBAAoB,CAAC,6BAA0B;IACpEG,GAAG,EAAEoS;IAER,CACG,EACNhT;IAAKQ,SAAS,EAAC;KACZ2Q,QAAQ,IACPnR;IACEQ,SAAS,8CAA4CC,QAAM,CAAC,qBAAqB,CAAC,SAAIA,QAAM,CAAC,iCAAiC,CAAC,SAAIA,QAAM,CAAC,YAAY,CAAC,yBAAsB;IAC7K+H,OAAO,EAAE,SAAAA;MAAA,OAAMyJ,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAGd,QAAQ,CAAC;;KAE9CnR,oDAAgB,OAAE4R,aAAa,CAElC,EACD5R;IACEQ,SAAS,wCACPC,QAAM,CAAC,qBAAqB,CAC9B,UACE0Q,QAAQ,GAAG1Q,QAAM,CAAC,4BAA4B,CAAC,GAAG,EACpD,0BAAsB;IACtB+H,OAAO,EAAE8J;KAERxB,OAAO,CACN,EAEF,CAACI,WAAW,IAAIlR,6BAAC6S,mBAAQ;IAACrS,SAAS,EAAC,OAAO;IAACmH,MAAM,EAAEkK,sBAAsB,KAAKhB;KAC7E7Q;IAAGwI,OAAO,EAAE2K,WAAW;IAAE3S,SAAS,EAAC;aAE/B,CACK,CAET,CAET,CACE;AAET,CAAC;;ACvGD,WAAY4S,YAAY;EACtBA,qDAAO;EACPA,+CAAI;EACJA,iDAAK;AACP,CAAC,EAJWA,oBAAY,KAAZA,oBAAY;AAMxB,IAAMC,QAAQ,GAAiC,SAAzCA,QAAQA,CAAkClX,KAAK;EACnD,IAAQmX,IAAI,GAAyBnX,KAAK,CAAlCmX,IAAI;IAAEtB,kBAAkB,GAAK7V,KAAK,CAA5B6V,kBAAkB;EAChC,OACEhS,6BAACoG,cAAQ,QACNkN,IAAI,GAAGtT,6BAAC4Q,aAAa,oBAAKzU,KAAK;IAAE6V,kBAAkB,EAAEA;KAAqB,GAAGhS,6BAAC+S,YAAY,oBAAK5W,KAAK,EAAI,CAChG;AAEf,CAAC;;ACpCD,IAAMoX,QAAQ,GAAc,SAAtBA,QAAQA,CAAA/V,IAAA;2BACVgW,QAAQ;IAARA,QAAQ,GAAAC,aAAA,cAAG,EAAE,GAAAA,aAAA;IACb1B,gBAAgB,GAAAvU,IAAA,CAAhBuU,gBAAgB;IAChBkB,OAAO,GAAAzV,IAAA,CAAPyV,OAAO;IACPjB,kBAAkB,GAAAxU,IAAA,CAAlBwU,kBAAkB;IAClB0B,WAAW,GAAAlW,IAAA,CAAXkW,WAAW;EAGX,IAAAtS,SAAA,GAA4DC,cAAQ,EAAU;IAAvEwQ,sBAAsB,GAAAzQ,SAAA;IAAEuS,yBAAyB,GAAAvS,SAAA;EACxD,IAAM0Q,oBAAoB,GAAG9I,YAAM,CAAgB,IAAI,CAAC;EAExD,IAAM4K,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAI/C,EAAU;IACjC8C,yBAAyB,CAAC9C,EAAE,KAAKgB,sBAAsB,GAAGtS,SAAS,GAAGsR,EAAE,CAAC;GAC5E;EAED,IAAMgD,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAIhD,EAAU;IACzC,IAAGA,EAAE,KAAKgB,sBAAsB,EAAEC,oBAAoB,CAAC5I,OAAO,IAAI4I,oBAAoB,CAAC5I,OAAO,CAAC4K,cAAc,CAAC;MAC1GC,QAAQ,EAAE;KACb,CAAC,CAAA,KACGJ,yBAAyB,CAAC9C,EAAE,CAAC;GACrC;EAED7O,eAAS,CAAC;IACN6P,sBAAsB,IAAIC,oBAAoB,CAAC5I,OAAO,IAAI4I,oBAAoB,CAAC5I,OAAO,CAAC4K,cAAc,CAAC;MAClGC,QAAQ,EAAE;KACb,CAAC;GACL,EAAE,CAAClC,sBAAsB,EAAEC,oBAAoB,CAAC5I,OAAO,CAAC,CAAC;EAC1D,OAAOlJ;IAAIyS,GAAG,EAAEiB,WAAW;IAAElT,SAAS,EAAKC,QAAM,CAAC,MAAM,CAAC;KACjDT;IAAIQ,SAAS,EAAC,aAAa;IAAChI,GAAG,EAAE;IAAsB,EAEnD,EAACgb,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEnK,MAAM,KACdrJ;IAAIQ,SAAS,EAAC;kBAAwD,EAGzE,CAAC,EAACgT,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEnK,MAAM,KAElBmK,QAAQ,CAACpa,GAAG,CAAC,UAACkG,OAAuB;IAAA,OACjCU,6BAACqT,QAAQ;MACL7a,GAAG,EAAE8G,OAAO,CAACuR;OACTvR,OAAO;MACXyS,gBAAgB,EAAEA,gBAAgB;MAClCkB,OAAO,EAAEA,OAAO;MAChBpB,sBAAsB,EAAEA,sBAAsB;MAC9CqB,aAAa,EAAEU,iBAAiB;MAChC9B,oBAAoB,EAAEA,oBAAoB;MAC1CE,kBAAkB,EAAEA,kBAAkB;MACtCC,mBAAmB,EAAE4B;OACvB;GACL,CAAC,CAEL;AACb,CAAC;;AChDD,IAAMG,SAAS,GAAc,SAAvBA,SAASA,CAAAxW,IAAA;MACX+I,IAAI,GAAA/I,IAAA,CAAJ+I,IAAI;IACJ0N,UAAU,GAAAzW,IAAA,CAAVyW,UAAU;IACVtC,SAAS,GAAAnU,IAAA,CAATmU,SAAS;IACTuC,QAAQ,GAAA1W,IAAA,CAAR0W,QAAQ;IACRC,aAAa,GAAA3W,IAAA,CAAb2W,aAAa;IACb/T,QAAQ,GAAA5C,IAAA,CAAR4C,QAAQ;IACRgU,YAAY,GAAA5W,IAAA,CAAZ4W,YAAY;EAEZ,IAAM9T,YAAY,GAAG,SAAfA,YAAYA;IACd,IAAI,CAACiG,IAAI,CAACkB,IAAI,EAAE,CAAC4B,MAAM,EAAE;IACzBjJ,QAAQ,EAAE;GACb;EACD,IAAMiU,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAIC,KAAoC;IAC3DH,aAAa,CAACG,KAAK,CAAClN,MAAM,CAACC,KAAK,CAAC;GACpC;EAED,IAAMkN,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIzU,CAAkC;IAC3D,IAAIA,CAAC,CAAC0L,IAAI,KAAK,OAAO,EAAElL,YAAY,EAAE;GACzC;EAED,IAAMkU,gBAAgB,GAAG,SAAnBA,gBAAgBA;IAClBJ,YAAY,aAAZA,YAAY,uBAAZA,YAAY,EAAI;GACnB;EACD,OACIpU;IAAKQ,SAAS,EAAC;KACXR,6BAAC6S,mBAAQ;IAAClL,MAAM,EAAE,CAAC,CAACsM,UAAU,IAAK,CAAC,CAACtC,SAAS,IAAI,CAACsC;KAC9C,CAAC,CAACA,UAAU,GACTjU;IAAKQ,SAAS,EAAC;KACXR;IAAGQ,SAAS,YAAUC,QAAM,CAAC,YAAY;KACrCT,oDAAgB,QACXiU,UAAY,CACjB,EACH,CAAC,CAACG,YAAY,IACXpU;IACIQ,SAAS,EAAC,oEAAoE;IAC9EgI,OAAO,EAAEgM;KAETxU,6BAACyU,mBAAgB,OAAG,CAE3B,CACC,GAENzU;IAAKQ,SAAS,EAAC;KACXR;IAAGQ,SAAS,YAAUC,QAAM,CAAC,YAAY;KACrCT,oDAAY2R,SAAS,GAAG,OAAO,GAAG,EAAE,OAAO,QACtCA,SAAW,CAChB,EACH,CAAC,CAACyC,YAAY,IACXpU;IACIQ,SAAS,EAAC,oEAAoE;IAC9EgI,OAAO,EAAEgM;KAETxU,6BAACyU,mBAAgB,OAAG,CAE3B,CAER,CACM,EACXzU,6BAAC0U,qBAAU;IAAClU,SAAS,EAAC;KAClBR,6BAAC+H,gBAAK;IACF4M,QAAQ,EAAET,QAAQ;IAClB7M,KAAK,EAAEd,IAAI;IACX0B,WAAW,EAAC,iBAAiB;IAC7B2M,OAAO,EAAEL,mBAAmB;IAC5B/T,SAAS,EAAC,mBAAmB;IAC7BwH,QAAQ,EAAEqM;IACZ,EACFrU;IACIQ,SAAS,EAAC,uCAAuC;IACjDgI,OAAO,EAAElI;KAETN,6BAAC6U,WAAQ;IAACrU,SAAS,EAAC;IAAsB,CACxC,CACG,CACX;AAEd,CAAC;;ACrED,IAAMsU,UAAU,GAAyB,SAAnCA,UAAUA,CAAAtX,IAAA;MAA4Ba,IAAI,GAAAb,IAAA,CAAJa,IAAI;IAAE2U,MAAM,GAAAxV,IAAA,CAANwV,MAAM;IAAEtD,OAAO,GAAAlS,IAAA,CAAPkS,OAAO;IAAEqF,cAAc,GAAAvX,IAAA,CAAduX,cAAc;IAAEC,cAAc,GAAAxX,IAAA,CAAdwX,cAAc;EAE/F,IAAMC,UAAU,GAAGjM,YAAM,CAAiB,IAAI,CAAC;EAC/C,IAAMkM,SAAS,GAAGlM,YAAM,CAAiB,IAAI,CAAC;EAC9C,IAAMxF,QAAQ,GAAG8B,sBAAW,CAAC,UAACjC,KAAU;IAAA,IAAAwC,aAAA;IAAA,OAAKxC,KAAK,aAALA,KAAK,wBAAAwC,aAAA,GAALxC,KAAK,CAAEQ,MAAM,cAAAgC,aAAA,uBAAbA,aAAA,CAAerC,QAAQ;IAAC;EACrE,IAAAwI,eAAA,GAAcC,2BAAc,EAAE;IAAtBgE,CAAC,GAAAjE,eAAA,CAADiE,CAAC;EAcT,IAAMkF,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIC,GAAQ;IAClCJ,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGI,GAAG,CAAC;GACtB;EAEDpT,eAAS,CAAC;IACR,IAAMqT,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIf,KAAU;MACpC,IACEW,UAAU,CAAC/L,OAAO,IAClB,CAAC+L,UAAU,CAAC/L,OAAO,CAACoM,QAAQ,CAAChB,KAAK,CAAClN,MAAM,CAAC,IAC1C8N,SAAS,CAAChM,OAAO,IACjB,CAACgM,SAAS,CAAChM,OAAO,CAACoM,QAAQ,CAAChB,KAAK,CAAClN,MAAM,CAAC,EACzC;KAGH;IACD5C,QAAQ,CAAC+Q,gBAAgB,CAAC,WAAW,EAAEF,kBAAkB,CAAC;IAC1D,OAAO;MACL7Q,QAAQ,CAACgR,mBAAmB,CAAC,WAAW,EAAEH,kBAAkB,CAAC;KAC9D;GACF,EAAE,CAACJ,UAAU,EAAEC,SAAS,CAAC,CAAC;EAE3B,IAAMO,aAAa,GAAG7I,aAAO,CAC3B;IAAA,OACE8C,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEtW,GAAG,CAAC,UAACG,CAAC;MAAA,OAAM;QACnB8N,KAAK,EAAE9N,CAAC,CAACsX,EAAE;QACXhC,KAAK,EAAKtV,CAAC,CAACkL,KAAK,UAAKmO,cAAc,CAACrZ,CAAC,CAACmc,SAAS,EAAEzF,CAAC,CAAC,kBAAkB,CAAC,CAAC;OACzE;KAAC,CAAC;KACL,CAAC9Q,IAAI,CAACC,SAAS,CAACsQ,OAAO,CAAC,EAAElM,QAAQ,CAAC,CACpC;EAED,OACExD;IAAKQ,SAAS,EAAC;KACbR,0CACEA;IACEQ,SAAS,sBAAoBC,QAAM,CAAC,gBAAgB,CAAG;IACvDG,GAAG,EAAEoS,MAAM;IACX2C,GAAG,EAAEtX;IACL,CACE,EACN2B;IAAKQ,SAAS,EAAC;KACbR;IAAGQ,SAAS,EAAC;KAA+BnC,IAAI,CAAK,CACjD,EACN2B;IAAKQ,SAAS,EAAC;KACZiV,aAAa,KAAKlW,SAAS,IAC1BS;IAAKQ,SAAS,EAAKC,QAAM,CAAC,gBAAgB,CAAC;KACzCT,6BAACuP,YAAY;IAAClI,KAAK,EAAE0N,cAAc;IAAErF,OAAO,EAAE+F,aAAa;IAAEzN,QAAQ,EAAEmN,kBAAkB;IAAES,WAAW;IAAE,CAE3G,EACD5V;IAAKQ,SAAS,EAAC;IAST,CACF,CAiBF;AAEV,CAAC;;ACpGD,IAAMqV,aAAa,GAA4B,SAAzCA,aAAaA,CAAArY,IAAA;MACfsY,eAAe,GAAAtY,IAAA,CAAfsY,eAAe;IACfC,aAAa,GAAAvY,IAAA,CAAbuY,aAAa;IACbC,UAAU,GAAAxY,IAAA,CAAVwY,UAAU;IAAAC,iBAAA,GAAAzY,IAAA,CACV0Y,YAAY;IAAZA,YAAY,GAAAD,iBAAA,cAAG,CAAC,GAAAA,iBAAA;IAAAE,cAAA,GAAA3Y,IAAA,CAChBuF,SAAS;IAATA,SAAS,GAAAoT,cAAA,cAAG,KAAK,GAAAA,cAAA;IACjBC,aAAa,GAAA5Y,IAAA,CAAb4Y,aAAa;IACbC,MAAM,GAAA7Y,IAAA,CAAN6Y,MAAM;IACNC,UAAU,GAAA9Y,IAAA,CAAV8Y,UAAU;IACVC,aAAa,GAAA/Y,IAAA,CAAb+Y,aAAa;IACbC,gBAAgB,GAAAhZ,IAAA,CAAhBgZ,gBAAgB;EAEhB,IACIvD,OAAO,GAEP8C,aAAa,CAFb9C,OAAO;IACPlB,gBAAgB,GAChBgE,aAAa,CADbhE,gBAAgB;EAGpB,IACIiD,cAAc,GACdc,eAAe,CADfd,cAAc;EAElB,IAAMd,QAAQ,GAAGlL,YAAM,CAAmB,IAAI,CAAC;EAC/C,IAAMyN,OAAO,GAAGzN,YAAM,CAAiB,IAAI,CAAC;EAC5C,IAAM0K,WAAW,GAAG1K,YAAM,CAAmB,IAAI,CAAC;EAClD,IAAM0N,SAAS,GAAG1N,YAAM,EAAO;EAC/B,IAAM2N,QAAQ,GAAG3N,YAAM,EAAO;EAC9B,IAAM4N,eAAe,GAAG5N,YAAM,EAAO;EAErC,IAAMmK,WAAW,GAAG,SAAdA,WAAWA,CAAItC,EAAU,EAAEC,OAAe,EAAEY,MAAe;;IAC7D,CAAAmF,iBAAA,GAAA3C,QAAQ,CAAChL,OAAO,cAAA2N,iBAAA,uBAAhBA,iBAAA,CAAkBC,KAAK,EAAE;IACzB7D,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAGpC,EAAE,EAAEC,OAAO,EAAEY,MAAM,CAAC;GACjC;EAED,IAAMqF,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIrF,MAAc,EAAEC,SAAiB,EAAEV,QAAgB;;IAC7E,CAAA+F,kBAAA,GAAA9C,QAAQ,CAAChL,OAAO,cAAA8N,kBAAA,uBAAhBA,kBAAA,CAAkBF,KAAK,EAAE;IACzB/E,gBAAgB,CAACL,MAAM,EAAEC,SAAS,EAAEV,QAAQ,CAAC;GAChD;EAED,IAAMgG,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAI7B,GAAW;;IACvC,IAAG,CAAC,EAACA,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAE/N,KAAK,GAAE,CAAA6P,kBAAA,GAAAhD,QAAQ,CAAChL,OAAO,cAAAgO,kBAAA,uBAAhBA,kBAAA,CAAkBJ,KAAK,EAAE;IAC1C9B,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGI,GAAG,CAAC;GACxB;EACD,IAAM+B,YAAY,GAAG,SAAfA,YAAYA;IACd,IAAGV,OAAO,CAACvN,OAAO,EAAC;MACf,IAAMkO,SAAS,GAAGX,OAAO,CAACvN,OAAO,CAACkO,SAAS;MAC3C,IAAMC,YAAY,GAAGZ,OAAO,CAACvN,OAAO,CAACmO,YAAY;MACjD,IAAMC,YAAY,GAAGb,OAAO,CAACvN,OAAO,CAACoO,YAAY;MAEjD,IAAIF,SAAS,GAAGE,YAAY,GAAGpB,YAAY,IAAImB,YAAY,EAAE;QACzDd,aAAa,aAAbA,aAAa,uBAAbA,aAAa,EAAI;OACpB,MAAM,IAAIa,SAAS,IAAIlB,YAAY,EAAE;QAClCI,UAAU,aAAVA,UAAU,uBAAVA,UAAU,EAAI;;;IAItB,IAAGI,SAAS,CAACxN,OAAO,EAAEC,YAAY,CAACuN,SAAS,CAACxN,OAAO,CAAC;IACrDwN,SAAS,CAACxN,OAAO,GAAGI,UAAU,CAAC;MAC3B+M,MAAM,aAANA,MAAM,uBAANA,MAAM,EAAI;KACb,EAAE,GAAG,CAAC;GACV;EAED,IAAMkB,WAAW,GAAG,SAAdA,WAAWA;IACb,IAAGZ,QAAQ,CAACzN,OAAO,EAAEC,YAAY,CAACwN,QAAQ,CAACzN,OAAO,CAAC;IACnDyN,QAAQ,CAACzN,OAAO,GAAGI,UAAU,CAAC;MAC1B+M,MAAM,aAANA,MAAM,uBAANA,MAAM,EAAI;KACb,EAAE,GAAG,CAAC;GACV;EAEDrU,eAAS,CAAC;;IACN0U,SAAS,CAACxN,OAAO,IAAIC,YAAY,CAACuN,SAAS,CAACxN,OAAO,CAAC;IACpD0N,eAAe,CAAC1N,OAAO,IAAIC,YAAY,CAACyN,eAAe,CAAC1N,OAAO,CAAC;IAChE,CAAAsO,gBAAA,GAAAf,OAAO,CAACvN,OAAO,cAAAsO,gBAAA,uBAAfA,gBAAA,CAAiBhC,mBAAmB,CAAC,QAAQ,EAAE2B,YAAY,CAAC;IAC5D,IAAGf,aAAa,IAAI,CAACrT,SAAS,KAAA0U,qBAAA,GAAI1B,aAAa,CAACvC,QAAQ,cAAAiE,qBAAA,eAAtBA,qBAAA,CAAwBpO,MAAM,EAAC;MAAA,IAAAqO,oBAAA,EAAAC,qBAAA;MAC7D,CAAAD,oBAAA,GAAAhE,WAAW,CAACxK,OAAO,cAAAwO,oBAAA,wBAAAC,qBAAA,GAAnBD,oBAAA,CAAqBE,gBAAgB,cAAAD,qBAAA,uBAArCA,qBAAA,CAAuC7D,cAAc,CAAC;QAClDC,QAAQ,EAAE;OACb,CAAC;MACFyC,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,EAAI;MAEpBI,eAAe,CAAC1N,OAAO,GAAGI,UAAU,CAAC;;QACjC,CAAAuO,iBAAA,GAAApB,OAAO,CAACvN,OAAO,cAAA2O,iBAAA,uBAAfA,iBAAA,CAAiBtC,gBAAgB,CAAC,QAAQ,EAAE4B,YAAY,CAAC;OAC5D,EAAE,GAAG,CAAC;KACV,MAAM,CAAAW,iBAAA,GAAArB,OAAO,CAACvN,OAAO,cAAA4O,iBAAA,uBAAfA,iBAAA,CAAiBvC,gBAAgB,CAAC,QAAQ,EAAE4B,YAAY,CAAC;IAChE,OAAO;;MACH,CAAAY,iBAAA,GAAAtB,OAAO,CAACvN,OAAO,cAAA6O,iBAAA,uBAAfA,iBAAA,CAAiBvC,mBAAmB,CAAC,QAAQ,EAAE2B,YAAY,CAAC;MAC5DT,SAAS,CAACxN,OAAO,IAAIC,YAAY,CAACuN,SAAS,CAACxN,OAAO,CAAC;MACpD0N,eAAe,CAAC1N,OAAO,IAAIC,YAAY,CAACyN,eAAe,CAAC1N,OAAO,CAAC;KACnE;GACJ,EAAE,CAAC/J,IAAI,CAACC,SAAS,CAAC2W,aAAa,CAACvC,QAAQ,CAAC,EAAE0C,YAAY,EAAEnT,SAAS,EAAEyT,gBAAgB,EAAEH,MAAM,EAAED,aAAa,CAAC,CAAC;EAE9GpU,eAAS,CAAC;;IACN,CAAAgW,kBAAA,GAAA9D,QAAQ,CAAChL,OAAO,cAAA8O,kBAAA,uBAAhBA,kBAAA,CAAkBzC,gBAAgB,CAAC,OAAO,EAAEgC,WAAW,CAAC;IACxD,OAAO;;MACH,CAAAU,kBAAA,GAAA/D,QAAQ,CAAChL,OAAO,cAAA+O,kBAAA,uBAAhBA,kBAAA,CAAkBzC,mBAAmB,CAAC,OAAO,EAAE+B,WAAW,CAAC;MAC3DZ,QAAQ,CAACzN,OAAO,IAAIC,YAAY,CAACwN,QAAQ,CAACzN,OAAO,CAAC;KACrD;GACJ,EAAE,CAACmN,MAAM,CAAC,CAAC;EAEZ,OAAOrW;IAAKQ,SAAS,EAAC;KAClBR,0CACIA,6BAAC8U,UAAU,oBAAKgB,eAAe;IAAEd,cAAc,EAAEiC;KAAyB,CACxE,EACNjX;IAAKyS,GAAG,EAAEgE,OAAO;IAAEjW,SAAS,mBAAiBC,QAAM,CAAC,MAAM;KAElDsC,SAAS,IAAI/C;IAAKQ,SAAS,EAAC;KACxBR,6BAACkY,kBAAO;IAAC3P,KAAK,EAAC,WAAW;IAAC/H,SAAS,EAAC;kBAE3B,CACR,EAEVR,6BAACuT,QAAQ,oBAAKwC,aAAa;IAAErC,WAAW,EAAEA,WAAW;IAAET,OAAO,EAAEE,WAAW;IAAEpB,gBAAgB,EAAEgF;KAAuB,CACpH,EACN/W,0CACIA,6BAACgU,SAAS,oBAAKgC,UAAU;IAAE9B,QAAQ,EAAEA;KAAW,CAC9C,CACJ;AACV,CAAC;;ACpID,IAAMiE,gBAAgB,GAAM9f,QAAQ,sBAAmB;AAEvD,AAAO,IAAM+f,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIC,KAAyB;EAAA,OACzDpe,GAAG,CAACyL,GAAG,MAAIyS,gBAAgB,EAAI;IAC3Bnf,MAAM,EAAEqf;GACX,CAAC;AAAA;AAEN,AAAO,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIC,SAAiB;EAAA,OAChDte,GAAG,CAAC8B,IAAI,MAAIoc,gBAAgB,EAAI;IAC5BK,YAAY,OAAKD;GACpB,CAAC;AAAA;AAEN,AAAO,IAAME,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,cAAsB,EAAEpZ,OAAuB;EAAA,OACzErF,GAAG,CAAC8B,IAAI,CAAIoc,gBAAgB,SAAIO,cAAc,gBAAapZ,OAAO,CAAC;AAAA;AAEvE,AAAO,IAAMqZ,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAID,cAAsB,EAAEvf,MAAqB;EAAA,OACnFc,GAAG,CAACyL,GAAG,CAAIyS,gBAAgB,SAAIO,cAAc,gBAAa;IACtD1f,MAAM,EAAEG;GACX,CAAC;AAAA;AAEN,AAAO,IAAMyf,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIF,cAAsB,EAAEG,SAAiB;EAAA,OACxE5e,GAAG,CAAC6e,GAAG,CAAIX,gBAAgB,SAAIO,cAAc,kBAAaG,SAAS,eAAY,CAAC;AAAA;AAEpF,AAAO,IAAME,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAIC,MAAc;EAAA,OACrD/e,GAAG,CAACyL,GAAG,CAAIyS,gBAAgB,eAAUa,MAAQ,CAAC;AAAA;;AC1BlD,IAAYC,UAKX;AALD,WAAYA,UAAU;EAClBA,iCAAmB;EACnBA,iCAAmB;EACnBA,uCAAyB;EACzBA,qCAAuB;AAC3B,CAAC,EALWA,UAAU,KAAVA,UAAU;AAQtB,AAAO,IAAMC,2BAA2B,GAAwB;EAC5DnP,WAAW,EAAE,CAAC;EACdoP,QAAQ,EAAE,CAAC,CAAC;EACZC,UAAU,EAAE;CACf;AAED,AAAO,IAAMC,sBAAsB,GAAmB;EAClDtP,WAAW,EAAE,CAAC;EACdoP,QAAQ,EAAE,EAAE;EACZC,UAAU,EAAE,EAAE;EAACE,mBAAmB,EAAEhJ,OAAO,CAACiJ,IAAI;EAChDC,cAAc,EAAEnJ,aAAa,CAACoJ;CAEjC;;ACnBD,IAAMC,QAAQ,GAAMrhB,QAAQ,cAAW;AAEvC,AAAO,IAAMshB,cAAc,GAAG,SAAjBA,cAAcA,CAAItB,KAAU;EAAA,OACrCpe,GAAG,CAACyL,GAAG,CAAIgU,QAAQ,eAAY;IAC3B1gB,MAAM,EAAEqf;GACX,CAAC;AAAA;;ACHN,IAAMuB,WAAW,GAAG,SAAdA,WAAWA,CAAIC;MAAAA;IAAAA,YAAqB,IAAI;;EAC1C,IAAAzY,SAAA,GAA0BC,cAAQ,EAAkB;IAA7CyY,KAAK,GAAA1Y,SAAA;IAAE2Y,QAAQ,GAAA3Y,SAAA;EAEtB,IAAM4Y,WAAW,YAAXA,WAAWA,CAAUhB,MAAe;IAAA;MACtCe,QAAQ,CAAC,EAAE,CAAC;MAAA,IAAApb,KAAA,GAAAC,MAAA,aACT;QAAA,OAAA1D,OAAA,CAAA2D,OAAA,CACiB8a,cAAc,CAAC;UAC/B5P,WAAW,EAAE,CAAC;UACdoP,QAAQ,EAAE,CAAC,CAAC;UACZG,mBAAmB,EAAE,MAAM;UAC3BE,cAAc,EAAE,WAAW;UAC3BS,QAAQ,EAAE,CAAChB,UAAU,CAACiB,SAAS,CAAC;UAChC3B,SAAS,EAAE,CAACsB,SAAS,GAAGb,MAAM,GAAGzZ,SAAS;UAC1C4a,SAAS,EAAEN,SAAS,GAAGb,MAAM,GAAGzZ;SACjC,CAAC,EAAAT,IAAA,WARIf,GAAG;UAAA,IAAAqc,SAAA;UAST,IAAMnb,IAAI,GAAG,EAAAmb,SAAA,GAAArc,GAAG,CAACkB,IAAI,cAAAmb,SAAA,uBAARA,SAAA,CAAUC,KAAK,KAAI,EAAE;UAClCN,QAAQ,CAAC9a,IAAI,CAAC;;OACf,YAAQhE,KAAK,EAAE;QACdI,OAAO,CAACC,GAAG,CAAC;UAACL,KAAK,EAALA;SAAM,CAAC;OACrB;MAAA,OAAAC,OAAA,CAAA2D,OAAA,CAAAF,KAAA,IAAAA,KAAA,CAAAG,IAAA,GAAAH,KAAA,CAAAG,IAAA;KACJ,QAAAgB,CAAA;MAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;;EAED,OAAO;IACHka,WAAW,EAAXA,WAAW;IACXF,KAAK,EAALA;GACH;AACL,CAAC;;AC1BD,IAAMQ,cAAc,GAAG,SAAjBA,cAAcA,CAAItB,MAAe,EAAEuB,kBAA6B;EAClE,IAAAnZ,SAAA,GAAgCC,cAAQ,CAAoB,EAAE,CAAC;IAAxDmS,QAAQ,GAAApS,SAAA;IAAEoZ,WAAW,GAAApZ,SAAA;EAC5B,IAAAI,UAAA,GAA0CH,cAAQ,CAAgBgY,sBAAsB,CAAC;IAAlFoB,aAAa,GAAAjZ,UAAA;IAAEkZ,gBAAgB,GAAAlZ,UAAA;EACtC,IAAAK,UAAA,GAAgCR,cAAQ,CAAU,KAAK,CAAC;IAAjD0B,SAAS,GAAAlB,UAAA;IAAExK,UAAU,GAAAwK,UAAA;EAE5B,IAAM8Y,cAAc,YAAdA,cAAcA,CAAUjC,cAAsB,EAAEhH,MAAe;IAAA;;QAcjEra,UAAU,CAAC,KAAK,CAAC;;MAbjBA,UAAU,CAAC,IAAI,CAAC;MAAA,IAAA4G,MAAA,GAAAW,MAAA,aACZ;QACA,IAAMzF,MAAM,GAAA8V,QAAA,KACLwL,aAAa;UAChB/I,MAAM,EAAE,CAACA,MAAM,GAAG+I,aAAa,CAAC/I,MAAM,GAAGA;UAC5C;QAAA,OAAAxW,OAAA,CAAA2D,OAAA,CACiB8Z,yBAAyB,CAACD,cAAc,EAAEvf,MAAM,CAAC,EAAA2F,IAAA,WAA7Df,GAAG;UAAA,IAAA6c,gBAAA;UAAA,SAAAjc,MAAAkc,mBAAA;YAGTA,mBAAA;;UAFA,IAAGJ,aAAa,CAACK,UAAU,EAAEN,WAAW,CAAC,UAACnX,KAAwB;YAAA,IAAA0X,eAAA;YAAA,UAAA3W,MAAA,CAAW,EAAA2W,eAAA,GAAAhd,GAAG,CAACkB,IAAI,CAACob,KAAK,cAAAU,eAAA,uBAAdA,eAAA,CAAgBC,OAAO,EAAE,KAAI,EAAE,EAAM3X,KAAK;WAAE,CAAC,CAAA,KACrHmX,WAAW,EAAAI,gBAAA,GAAC7c,GAAG,CAACkB,IAAI,CAACob,KAAK,cAAAO,gBAAA,uBAAdA,gBAAA,CAAgBI,OAAO,EAAE,CAAC;UAAA,OACzCT,kBAAkB,GAAArf,OAAA,CAAA2D,OAAA,CAApB,CAAC,CAAC0b,kBAAkB,IAAUA,kBAAkB,CAACvB,MAAM,CAAC,EAAAla,IAAA,CAAAH,KAAA,IAAAA,KAAA,CAAxD,CAAC,CAAC4b,kBAAkB,IAAUA,kBAAkB,CAACvB,MAAM,CAAC;;OAC3D,YAAQ/d,KAAK,EAAE;QACZI,OAAO,CAACC,GAAG,CAAC;UAACL,KAAK,EAALA;SAAM,CAAC;OACvB;MAAA,OAAAC,OAAA,CAAA2D,OAAA,CAAAZ,MAAA,IAAAA,MAAA,CAAAa,IAAA,GAAAb,MAAA,CAAAa,IAAA,CAAAe,MAAA,IAAAA,MAAA,CAAA5B,MAAA;KAEJ,QAAA6B,CAAA;MAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;;EAED,IAAMmb,cAAc,GAAG,SAAjBA,cAAcA;IAChB,IAAGlY,SAAS,EAAE;IACd,IAAMmY,QAAQ,GAAG1H,QAAQ,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC0H,QAAQ,EAAE;IACf,IAAMC,SAAS,GAAAlM,QAAA,KACRwL,aAAa;MAChB1Q,WAAW,EAAE,CAAC;MACd+Q,UAAU,EAAEI,QAAQ,CAACnK;MACxB;IACD2J,gBAAgB,CAACS,SAAS,CAAC;IAC3B,OAAOhc,IAAI,CAACC,SAAS,CAAC+b,SAAS,CAAC,KAAKhc,IAAI,CAACC,SAAS,CAACqb,aAAa,CAAC;GACrE;EAED,IAAMW,qBAAqB,YAArBA,qBAAqBA,CAAU1C,cAAsB,EAAEG,SAAiB;IAAA;sCACtE;QAAA,OAAA3d,OAAA,CAAA2D,OAAA,CACI+Z,kBAAkB,CAACF,cAAc,EAAEG,SAAS,CAAC,EAAA/Z,IAAA;OACpD,YAAQ7D,KAAK,EAAE;QACdI,OAAO,CAACC,GAAG,CAAC;UAACL,KAAK,EAALA;SAAM,CAAC;OACrB;MAAA,OAAAC,OAAA,CAAA2D,OAAA,CAAAwc,MAAA,IAAAA,MAAA,CAAAvc,IAAA,GAAAuc,MAAA,CAAAvc,IAAA;KACF,QAAAgB,CAAA;MAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;;EAEH,IAAMwb,aAAa,GAAG,SAAhBA,aAAaA;IACfZ,gBAAgB,CAACrB,sBAAsB,CAAC;IACxCmB,WAAW,CAAC,EAAE,CAAC;GAClB;EAED,IAAMe,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIlU,KAAU;IAClCqT,gBAAgB,CAAAzL,QAAA,KACTwL,aAAa;MAChB/I,MAAM,EAAErK,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEA,KAAK;MACpB0C,WAAW,EAAE;MAChB,CAAC;GACL;EAED,OAAO;IACHhH,SAAS,EAATA,SAAS;IACT0X,aAAa,EAAbA,aAAa;IACbjH,QAAQ,EAARA,QAAQ;IACRmH,cAAc,EAAdA,cAAc;IACdH,WAAW,EAAXA,WAAW;IACXc,aAAa,EAAbA,aAAa;IACbC,kBAAkB,EAAlBA,kBAAkB;IAClBH,qBAAqB,EAArBA,qBAAqB;IACrBH,cAAc,EAAdA;GACH;AACL,CAAC;;AClDD,IAAMO,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIrf,KAAY;;EACpC,IAAQsf,YAAY,GAClBtf,KAAK,CADCsf,YAAY;IAAEzC,MAAM,GAC1B7c,KAAK,CADe6c,MAAM;IAAEtH,MAAM,GAClCvV,KAAK,CADuBuV,MAAM;IAAEgK,mBAAmB,GACvDvf,KAAK,CAD+Buf,mBAAmB;IAAEC,2BAA2B,GACpFxf,KAAK,CADoDwf,2BAA2B;IAAEC,oBAAoB,GAC1Gzf,KAAK,CADiFyf,oBAAoB;EAE5G,IAAMC,MAAM,GAAG7S,YAAM,EAAU;EAC/B,IAAM8S,OAAO,GAAG9S,YAAM,EAAW;EACjC,IAAM+S,WAAW,GAAG/S,YAAM,EAAU;EACpC,IAAMgT,UAAU,GAAGhT,YAAM,CAAU,KAAK,CAAC;EACzC,IAAMiT,YAAY,GAAGjT,YAAM,CAAU,IAAI,CAAC;EAE1C,IAAM5M,QAAQ,GAAGC,sBAAW,EAAE;EAE9B,IAAMyJ,KAAK,GACTR,sBAAW,CAAC,UAACjC,KAAU;IAAA,IAAAwC,aAAA,EAAAqW,kBAAA;IAAA,OAAK7Y,KAAK,aAALA,KAAK,wBAAAwC,aAAA,GAALxC,KAAK,CAAEQ,MAAM,cAAAgC,aAAA,wBAAAqW,kBAAA,GAAbrW,aAAA,CAAe7C,IAAI,cAAAkZ,kBAAA,uBAAnBA,kBAAA,CAAqBpW,KAAK;IAAC,IAAI,EAAE;EAC/D,IAAM+T,SAAS,GAAG/T,KAAK,CAACG,QAAQ,CAAC,SAAS,CAAC;EAE3C,IAAA7E,SAAA,GACEC,cAAQ,EAAwB;IAD3B8a,oBAAoB,GAAA/a,SAAA;IAAEgb,uBAAuB,GAAAhb,SAAA;EAEpD,IAAAI,UAAA,GAA8BH,cAAQ,EAAkB;IAAjD/B,OAAO,GAAAkC,UAAA;IAAE6a,UAAU,GAAA7a,UAAA;EAC1B,IAAAK,UAAA,GAA0CR,cAAQ,CAAgBsP,aAAa,CAACmC,OAAO,CAAC;IAAjFwJ,aAAa,GAAAza,UAAA;IAAE0a,gBAAgB,GAAA1a,UAAA;EACtC,IAAA2a,UAAA,GAAwCnb,cAAQ,CAAU,IAAI,CAAC;IAAxD+U,aAAa,GAAAoG,UAAA;IAAEC,cAAc,GAAAD,UAAA;EAEpC,IAAAE,YAAA,GAA+B9C,WAAW,CAACC,SAAS,CAAC;IAA7CC,KAAK,GAAA4C,YAAA,CAAL5C,KAAK;IAAEE,WAAW,GAAA0C,YAAA,CAAX1C,WAAW;EAE1B,IAAA2C,eAAA,GASIrC,cAAc,CAACT,SAAS,GAAGsC,oBAAoB,aAApBA,oBAAoB,wBAAAS,qBAAA,GAApBT,oBAAoB,CAAEU,OAAO,cAAAD,qBAAA,uBAA7BA,qBAAA,CAA+B/L,EAAE,GAAGsL,oBAAoB,aAApBA,oBAAoB,wBAAAW,sBAAA,GAApBX,oBAAoB,CAAEY,OAAO,cAAAD,sBAAA,uBAA7BA,sBAAA,CAA+BjM,EAAE,EAAE,CAACmI,MAAM,GAAGgB,WAAW,GAAGza,SAAS,CAAC;IAR3Hyd,iBAAiB,GAAAL,eAAA,CAA5B5Z,SAAS;IACTyQ,QAAQ,GAAAmJ,eAAA,CAARnJ,QAAQ;IACRiH,aAAa,GAAAkC,eAAA,CAAblC,aAAa;IACbE,cAAc,GAAAgC,eAAA,CAAdhC,cAAc;IACdW,aAAa,GAAAqB,eAAA,CAAbrB,aAAa;IACbC,kBAAkB,GAAAoB,eAAA,CAAlBpB,kBAAkB;IAClBf,WAAW,GAAAmC,eAAA,CAAXnC,WAAW;IACXS,cAAc,GAAA0B,eAAA,CAAd1B,cAAc;EAGhB,IAAMgC,uBAAuB,GAAG,SAA1BA,uBAAuBA;IAC3BR,cAAc,CAAC,UAACpZ,KAAc;MAAA,OAAK,CAACA,KAAK;MAAC;GAC3C;EAED,IAAM6Z,gBAAgB,YAAhBA,gBAAgBA;IAAA;;;QAmDpBlB,UAAU,CAAC9S,OAAO,GAAG,KAAK;;MAlD1B,IAAG8S,UAAU,CAAC9S,OAAO,EAAE,OAAAhO,OAAA,CAAA2D,OAAA;MACvB,IAAG2U,QAAQ,CAAC2J,IAAI,CAAC,UAAA5jB,CAAC;QAAA,OAAIA,CAAC,CAACsX,EAAE,KAAK,CAAC;QAAC,EAAE,OAAA3V,OAAA,CAAA2D,OAAA;MACnCmd,UAAU,CAAC9S,OAAO,GAAG,IAAI;MACzB,IAAI,EAACiT,oBAAoB,aAApBA,oBAAoB,eAApBA,oBAAoB,CAAEtL,EAAE,KAAI,EAACvR,OAAO,aAAPA,OAAO,gBAAA8d,gBAAA,GAAP9d,OAAO,CAAEwR,OAAO,cAAAsM,gBAAA,gBAAAC,qBAAA,GAAhBD,gBAAA,CAAkB3V,IAAI,EAAE,cAAA4V,qBAAA,eAAxBA,qBAAA,CAA0BhU,MAAM,GAAE,OAAAnO,OAAA,CAAA2D,OAAA;MACpE4d,cAAc,CAAC,IAAI,CAAC;MACpBjC,WAAW,CAAC,UAACnX,KAAwB;QACnC,UAAAe,MAAA,CAAWf,KAAK,GAAE;UAChBwN,EAAE,EAAE,CAAC;UACLgJ,SAAS,EAAEA,SAAS;UACpB/I,OAAO,EAAExR,OAAO,CAACwR,OAAO;UACxBY,MAAM,EAAEpS,OAAO,CAACoS,MAAM;UACtBP,QAAQ,EAAE7R,OAAO,CAAC6R,QAAQ;UAC1BS,aAAa,EAAEtS,OAAO,CAACsS,aAAa;UACpC0L,IAAI,EAAEhe,OAAO,CAACoS,MAAM,GAAG;YACrBb,EAAE,EAAEvR,OAAO,CAACoS,MAAM;YAClBgE,SAAS,EAAE9b,MAAM,EAAE,CAACG,MAAM,CAAC,qBAAqB,CAAC;YACjD0K,KAAK,EAAEnF,OAAO,CAACqS,SAAS,IAAI,EAAE;YAC9BnG,IAAI,EAAElM,OAAO,CAAC2R,QAAQ,IAAI,EAAE;YAC5BF,SAAS,EAAEnX,MAAM,EAAE,CAACG,MAAM,CAAC,qBAAqB;WACjD,GAAGwF,SAAS;UACbyR,MAAM,EAAE,KAAK;UACbD,SAAS,EAAEnX,MAAM,EAAE,CAACG,MAAM,CAAC,qBAAqB;SACjD;OACF,CAAC;MACFsiB,UAAU,CAAC,UAAChZ,KAAsB;QAChC,IAAG,CAACA,KAAK,EAAE,OAAO9D,SAAS;QAC3B,OAAA0P,QAAA,KACK5L,KAAK;UACRyN,OAAO,EAAG,EAAE;UACZK,QAAQ,EAAE5R,SAAS;UACnBqS,aAAa,EAAE,EAAE;UACjBF,MAAM,EAAE+I,aAAa,CAAC/I,MAAM;UAC5BC,SAAS,EAAE8I,aAAa,CAAC/I,MAAM,GAAGpS,OAAO,CAACqS,SAAS,GAAG;;OAEzD,CAAC;MACF4K,gBAAgB,CAAC5L,aAAa,CAAC4M,OAAO,CAAC;MAAA,IAAA5e,KAAA,GAAAC,MAAA,aACnC;QAAA,OAAA1D,OAAA,CAAA2D,OAAA,CAEI4Z,aAAa,CAAC0D,oBAAoB,CAACtL,EAAE,EAAA5B,QAAA,KACtC3P,OAAO;UACVoS,MAAM,EAAE,CAAC,CAACsH,MAAM,GAAGtH,MAAM,GAAGpS,OAAO,CAACoS;UACrC,CAAC,EAAA5S,IAAA;OACH,YAAQ7D,KAAK,EAAE;QAAA,IAAAM,eAAA;QACdF,OAAO,CAACC,GAAG,CAAC;UAAEL,KAAK,EAALA;SAAO,CAAC;QACtBshB,gBAAgB,CAAC5L,aAAa,CAAC6B,SAAS,CAAC;QACzCgI,WAAW,CAAC,UAACnX,KAAwB;UACnC,UAAAe,MAAA,CAAWf,KAAK,CAAClK,MAAM,CAAC,UAAAI,CAAC;YAAA,OAAIA,CAAC,CAACsX,EAAE,KAAK,CAAC;YAAC;SACzC,CAAC;QACF2M,mBAAK,CAACviB,KAAK,EAAAM,eAAA,GAACN,KAAK,CAACG,QAAQ,cAAAG,eAAA,uBAAdA,eAAA,CAAgB0D,IAAI,CAAC;OAClC;MAAA,OAAA/D,OAAA,CAAA2D,OAAA,CAAAF,KAAA,IAAAA,KAAA,CAAAG,IAAA,GAAAH,KAAA,CAAAG,IAAA,CAAAb,MAAA,IAAAA,MAAA,CAAAU,KAAA;KAEF,QAAAmB,CAAA;MAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;;EAED,IAAMiX,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIrF,MAAc,EAAEjN,KAAa,EAAEwM,QAAgB;IAC3EoL,UAAU,CACR,CAAC,CAAC/c,OAAO,GAAA2P,QAAA,KAEA3P,OAAO;MACVoS,MAAM,EAANA,MAAM;MACNT,QAAQ,EAARA,QAAQ;MACRU,SAAS,EAAElN,KAAK;MAChB0M,QAAQ,EAAE5R,SAAS;MACnBqS,aAAa,EAAE;SAEjB;MACEF,MAAM,EAANA,MAAM;MACNT,QAAQ,EAARA,QAAQ;MACRH,OAAO,EAAE,EAAE;MACXa,SAAS,EAAElN,KAAK;MAChB0M,QAAQ,EAAE5R,SAAS;MACnBqS,aAAa,EAAE;KAChB,CACN;GACF;EAED,IAAM6L,kBAAkB,GAAG,SAArBA,kBAAkBA,CACtBtM,QAAgB,EAChBL,OAAe,EACfY,MAAe;IAEf2K,UAAU,CAAC;MACTvL,OAAO,EAAE,EAAE;MACXY,MAAM,EAANA,MAAM;MACNP,QAAQ,EAARA,QAAQ;MACRS,aAAa,EAAEd,OAAO;MACtBa,SAAS,EAAErS,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEqS;KACrB,CAAC;GACH;EAED,IAAM6C,gBAAgB,GAAG,SAAnBA,gBAAgBA;IACpBlV,OAAO,IACL+c,UAAU,CAAApN,QAAA,KACL3P,OAAO;MACV6R,QAAQ,EAAE5R,SAAS;MACnBmS,MAAM,EAAE+I,aAAa,CAAC/I,MAAM,GAAG+I,aAAa,CAAC/I,MAAM,GAAGnS,SAAS;MAC/DqS,aAAa,EAAE,EAAE;MACjBD,SAAS,EAAE8I,aAAa,CAAC/I,MAAM,GAAGpS,OAAO,CAACqS,SAAS,GAAG;MACvD,CAAC;GACL;EAED,IAAM+L,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAInX,IAAY;IACrC8V,UAAU,CAAApN,QAAA,KACL3P,OAAO;MACVwR,OAAO,EAAEvK;MACV,CAAC;GACH;EAED,IAAMoX,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIvI,GAAQ;;IAChC,IAAMzD,SAAS,GAAGyD,GAAG,aAAHA,GAAG,wBAAAwI,UAAA,GAAHxI,GAAG,CAAEvG,KAAK,cAAA+O,UAAA,wBAAAC,gBAAA,GAAVD,UAAA,CAAYE,KAAK,CAAC,GAAG,CAAC,cAAAD,gBAAA,uBAAtBA,gBAAA,CAAwBE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACtkB,IAAI,CAAC,GAAG,CAAC;IAChE4iB,UAAU,CAAC;MACT3K,MAAM,EAAE0D,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAE/N,KAAK;MAClByJ,OAAO,EAAE,EAAE;MACXa,SAAS,EAAEA,SAAS;MACpBR,QAAQ,EAAE5R,SAAS;MACnBqS,aAAa,EAAE;KAChB,CAAC;IAEF2J,kBAAkB,CAACnG,GAAG,CAAC;GACxB;EAED,IAAM4I,WAAW,GAAqBpR,aAAO,CAAC;IAC5C,IAAI,CAACuP,oBAAoB,EAAE,OAAO,EAAE;IAEpC,IAAIlL,QAAQ,GAAuB1R,SAAS;IAC5C,IAAM0e,OAAO,GAAIzK,QAAQ,CAACpa,GAAG,CAAC,UAACG,CAAkB,EAAEiU,KAAa;;MAC9D,IAAI+D,OAAO,GAAG/D,KAAK,KAAK,CAAC;MACzB,IAAIgE,MAAM,GAAGhE,KAAK,KAAKgG,QAAQ,CAACnK,MAAM,GAAG,CAAC;MAC1C,IACEmE,KAAK,GAAG,CAAC,KACPgG,QAAQ,CAAChG,KAAK,GAAG,CAAC,CAAC,CAACqM,SAAS,KAAKtgB,CAAC,CAACsgB,SAAS,IAAI,CAACtgB,CAAC,CAAC2X,WAAW,IAC/D3X,CAAC,CAAC2X,WAAW,IAAKsC,QAAQ,CAAChG,KAAK,GAAG,CAAC,CAAC,CAACkE,MAAM,KAAKnY,CAAC,CAACmY,MAAO,CAAC,EAE7DH,OAAO,GAAG,IAAI;MAChB,IACE/D,KAAK,GAAGgG,QAAQ,CAACnK,MAAM,GAAG,CAAC,KACzBmK,QAAQ,CAAChG,KAAK,GAAG,CAAC,CAAC,CAACqM,SAAS,KAAKtgB,CAAC,CAACsgB,SAAS,IAAItgB,CAAC,CAACmY,MAAM,KAAK8B,QAAQ,CAAChG,KAAK,GAAG,CAAC,CAAC,CAACkE,MAAM,IAAMnY,CAAC,CAACmY,MAAM,KAAK8B,QAAQ,CAAChG,KAAK,GAAG,CAAC,CAAC,CAACkE,MAAM,IACrI8B,QAAQ,CAAChG,KAAK,GAAG,CAAC,CAAC,CAAC0D,WAAW,CAAC,EAElCM,MAAM,GAAG,IAAI;MACf,IAAMnT,IAAI,GAAGwb,SAAS,GAAG,KAAK,GAAGsC,oBAAoB,CAACY,OAAO,CAACmB,WAAW;MACzE,IAAIpN,OAAO,GAAGvX,CAAC,aAADA,CAAC,uBAADA,CAAC,CAAEuX,OAAO;MACxB,IAAIO,cAAc,GAAG,KAAK;MAC1B,IAAIJ,QAAQ,MAAAkN,OAAA,GAAI5kB,CAAC,CAAC+jB,IAAI,cAAAa,OAAA,uBAANA,OAAA,CAAQ3S,IAAI,KAAI,CAACiP,aAAa,CAAC/I,MAAM,IAAI,CAACsH,MAAM,EAAE;QAAA,IAAAoF,QAAA,EAAAC,QAAA;QAChE,KAAAD,QAAA,GAAI7kB,CAAC,CAAC+jB,IAAI,cAAAc,QAAA,eAANA,QAAA,CAAQ5S,IAAI,EAAE6F,cAAc,GAAG,IAAI;QACvCJ,QAAQ,IAAAoN,QAAA,GAAG9kB,CAAC,CAAC+jB,IAAI,cAAAe,QAAA,uBAANA,QAAA,CAAQ7S,IAAI;;MAEzB,QAAQjS,CAAC,CAACiG,IAAI;QACZ,KAAKkR,iBAAiB,CAAC4N,IAAI;UACzB,QAAQ/kB,CAAC,CAAC+J,MAAM;YACd,KAAKmN,aAAa,CAAC8N,IAAI;cACrBzN,OAAO,GAAMzS,IAAI,yBAAAmgB,QAAA,GAAkBjlB,CAAC,CAAC+jB,IAAI,cAAAkB,QAAA,uBAANA,QAAA,CAAQ/Z,KAAK,CAAE;cAClD;;UAIJ;;MAIJ,OAAO;QACLoM,EAAE,EAAEtX,CAAC,CAACsX,EAAE;QACRyC,IAAI,EAAEuG,SAAS,KAAKtgB,CAAC,CAACsgB,SAAS;QAC/B7G,MAAM,EAAE6G,SAAS,GACbsC,oBAAoB,CAACU,OAAO,CAAC7J,MAAM,GACnCmJ,oBAAoB,CAACY,OAAO,CAAC/J,MAAM;QACvC3U,IAAI,EAAE8d,oBAAoB,CAACY,OAAO,CAACmB,WAAW;QAC9ClN,MAAM,EAAEzX,CAAC,CAACyX,MAAM;QAChBD,SAAS,EAAExX,CAAC,CAACwX,SAAS;QACtBD,OAAO,EAAPA,OAAO;QACPS,OAAO,EAAPA,OAAO;QACPC,MAAM,EAANA,MAAM;QACNN,WAAW,EAAE3X,CAAC,CAAC2X,WAAW;QAC1BD,QAAQ,EAAE,CAACwJ,aAAa,CAAC/I,MAAM,IAAI,CAACsH,MAAM,IAAAyF,QAAA,GAAGllB,CAAC,CAAC+jB,IAAI,cAAAmB,QAAA,uBAANA,QAAA,CAAQjT,IAAI,GAAGjM,SAAS;QACrEmS,MAAM,GAAAgN,QAAA,GAAEnlB,CAAC,CAAC+jB,IAAI,cAAAoB,QAAA,uBAANA,QAAA,CAAQ7N,EAAE;QAClBc,SAAS,GAAAgN,QAAA,GAAEplB,CAAC,CAAC+jB,IAAI,cAAAqB,QAAA,uBAANA,QAAA,CAAQla,KAAK;QACxBjF,IAAI,EAAE,CAAAof,QAAA,GAAArlB,CAAC,CAAC+jB,IAAI,cAAAsB,QAAA,eAANA,QAAA,CAAQpT,IAAI,GAAG4H,oBAAY,CAACkL,IAAI,GAAG/e,SAAS;QAClD8R,cAAc,EAAdA,cAAc;QACdI,UAAU,EACR,EAAAoN,QAAA,GAAAtlB,CAAC,CAAC+jB,IAAI,cAAAuB,QAAA,uBAANA,QAAA,CAAQrT,IAAI,MAAKqO,SAAS,8CAAAiF,SAAA,GAA0CvlB,CAAC,CAAC+jB,IAAI,cAAAwB,SAAA,uBAANA,SAAA,CAAQtT,IAAI,8CAAAuT,SAAA,GAA2CxlB,CAAC,CAAC+jB,IAAI,cAAAyB,SAAA,uBAANA,SAAA,CAAQvT,IAAI,CAAE,CAAC;QAC5I2F,QAAQ,EAAE5X,CAAC,CAAC4X,QAAQ;QACpBS,aAAa,EAAErY,CAAC,CAACqY,aAAa;QAC9BpW,MAAM,EAAEjC,CAAC,CAACsX,EAAE,GAAGF,aAAa,CAACmC,OAAO,GAAGwJ;OACxC;KACF,CAAC;IACF,OAAO2B,OAAO;GACf,EAAE,CACD9e,IAAI,CAACC,SAAS,CAACoU,QAAQ,CAAC,EACxBrU,IAAI,CAACC,SAAS,CAACE,OAAO,CAAC,EACvBua,SAAS,EACT1a,IAAI,CAACC,SAAS,CAAC+c,oBAAoB,CAAC,EACpC1B,aAAa,CAAC/I,MAAM,EACpBmI,SAAS,EACTb,MAAM,EACNsD,aAAa,CACd,CAAC;EAEF,IAAM0C,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAI/f,IAAqB;IACjD,IACG,CAACwb,aAAa,CAAC/I,MAAM,IAAI,CAACA,MAAM,IAChC+I,aAAa,CAAC/I,MAAM,IAAIzS,IAAI,CAACyS,MAAM,KAAK+I,aAAa,CAAC/I,MAAO,IAC7DA,MAAM,IAAIA,MAAM,KAAKzS,IAAI,CAACyS,MAAO,EAClC;MACA+K,cAAc,CAAC,IAAI,CAAC;MACpBjC,WAAW,CAAC,UAACnX,KAAwB;QACnC,IAAGA,KAAK,CAAC8Z,IAAI,CAAC,UAAA5jB,CAAC;UAAA,OAAIA,CAAC,CAACsX,EAAE,KAAK,CAAC;UAAC,EAAE,UAAAzM,MAAA,CAAWf,KAAK,CAAClK,MAAM,CAAC,UAAAI,CAAC;UAAA,OAAIA,CAAC,CAACsX,EAAE,KAAK,CAAC;UAAC,GAAE5R,IAAI,GAAE,KAC3E,UAAAmF,MAAA,CAAWf,KAAK,GAAEpE,IAAI;OAC5B,CAAC;;IAEJyc,mBAAmB,aAAnBA,mBAAmB,uBAAnBA,mBAAmB,CAAGzc,IAAI,CAAC;GAC5B;EAED,IAAMggB,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIhgB,IAAc;IAC3Cub,WAAW,CAAC,UAACnX,KAAwB;MAAA,UAAAe,MAAA,CAASf,KAAK,CAACjK,GAAG,CAAC,UAAAG,CAAC;QAAA,OAAA0V,QAAA,KACpD1V,CAAC;UACJyX,MAAM,EAAE/R,IAAI,CAACgH,QAAQ,CAAC1M,CAAC,CAACsX,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,GAAGtX,CAAC,CAACyX;;OAC5C,CAAC;KAAC,CAAC;GACN;EAED,IAAMkO,sBAAsB,GAAG,SAAzBA,sBAAsBA;IAC1B,IAAGjE,cAAc,EAAE,EAAC;MAClBkE,sBAAsB,EAAE;;GAE3B;EAGD,IAAMC,aAAa,GAAG,SAAhBA,aAAaA;;IACjB,CAAAC,eAAA,GAAAxD,MAAM,CAAC3S,OAAO,cAAAmW,eAAA,uBAAdA,eAAA,CAAgBC,MAAM,CAAC,mBAAmB,EAAEN,oBAAoB,CAAC;IACjE,CAAAO,gBAAA,GAAA1D,MAAM,CAAC3S,OAAO,cAAAqW,gBAAA,uBAAdA,gBAAA,CAAgBD,MAAM,CAAC,oBAAoB,EAAEL,qBAAqB,CAAC;IACnElD,WAAW,CAAC7S,OAAO,IACjB2S,MAAM,CAAC3S,OAAO,IACd2S,MAAM,CAAC3S,OAAO,CAACsW,WAAW,CAACzD,WAAW,CAAC7S,OAAO,CAAC;GAClD;EAEDlH,eAAS,CAAC;IACR,IACE1J,aAAa,CAACC,OAAO,IACrBD,aAAa,CAACE,GAAG,IACjB,CAAC,EAAC2jB,oBAAoB,aAApBA,oBAAoB,eAApBA,oBAAoB,CAAEtL,EAAE,GAC1B;MACA,IAAM/V,KAAK,GAAGnC,cAAc,EAAE;MAC9BkjB,MAAM,CAAC3S,OAAO,GAAG,IAAIuW,MAAM,CAACnnB,aAAa,CAACE,GAAG,EAAE;QAC7CD,OAAO,EAAED,aAAa,CAACC,OAAO;QAC9BmnB,YAAY,EAAKrnB,QAAQ,qBAAkB;QAC3CsnB,IAAI,EAAE;UACJ3mB,MAAM,EAAE,EAAE;UACVsB,OAAO,EAAE;YACPS,aAAa,cAAYD;;;OAG9B,CAAC;MACFihB,WAAW,CAAC7S,OAAO,uCAAoCiT,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEtL,EAAE,CAAE;MACjFiL,OAAO,CAAC5S,OAAO,GAAG2S,MAAM,CAAC3S,OAAO,CAAC0W,SAAS,CAAC7D,WAAW,CAAC7S,OAAO,CAAC;MAC/D2S,MAAM,CAAC3S,OAAO,CAAC2W,IAAI,CAAC,mBAAmB,EAAEb,oBAAoB,CAAC;MAC9DnD,MAAM,CAAC3S,OAAO,CAAC2W,IAAI,CAAC,oBAAoB,EAAEZ,qBAAqB,CAAC;;IAElE,OAAOG,aAAa;GACrB,EAAE,CAACjD,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEtL,EAAE,EAAE4J,aAAa,CAAC/I,MAAM,EAAEA,MAAM,CAAC,CAAC;EAE5D1P,eAAS,CAAC;IACR,IAAM8d,eAAe,YAAfA,eAAeA;MAAA;;UAoBnB1jB,QAAQ,CAAC/E,UAAU,CAAC,KAAK,CAAC,CAAC;;QAnB3BikB,aAAa,EAAE;QACfmB,cAAc,CAAC,IAAI,CAAC;QACpB,IAAI,CAAAhB,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAE5K,EAAE,MAAKtR,SAAS,EAAE;UAClC6c,uBAAuB,CAACX,YAAY,CAAC;UACrC,OAAAvgB,OAAA,CAAA2D,OAAA;;QAEF,IAAI,CAACma,MAAM,EAAE,OAAA9d,OAAA,CAAA2D,OAAA;QACbzC,QAAQ,CAAC/E,UAAU,CAAC,IAAI,CAAC,CAAC;QAAC,IAAA0oB,MAAA,GAAAnhB,MAAA,aACvB;UAAA,OAAA1D,OAAA,CAAA2D,OAAA,CACcka,0BAA0B,CAACC,MAAM,CAAC,EAAAla,IAAA,WAA9Cf,GAAG;YAAA,SAAAsd;cAIPe,uBAAuB,CAACre,GAAG,CAACkB,IAAI,CAACA,IAAI,CAAC;;YAAC,IAAAY,MAAA;cAAA,IAHnC,CAAC9B,GAAG,CAACkB,IAAI,CAACA,IAAI;gBAAA,OAAA/D,OAAA,CAAA2D,OAAA,CACJyZ,kBAAkB,CAACU,MAAM,CAAC,EAAAla,IAAA,WAAAkhB,mBAAA;kBAAtCjiB,GAAG,GAAAiiB,mBAAmC;;;;YAAC,OAAAngB,MAAA,IAAAA,MAAA,CAAAf,IAAA,GAAAe,MAAA,CAAAf,IAAA,CAAAuc,MAAA,IAAAA,MAAA,CAAAxb,MAAA;;SAG1C,YAAQ5E,KAAK,EAAE;UACdI,OAAO,CAACC,GAAG,CAAC;YACVL,KAAK,EAALA;WACD,CAAC;SACH;QAAA,OAAAC,OAAA,CAAA2D,OAAA,CAAAkhB,MAAA,IAAAA,MAAA,CAAAjhB,IAAA,GAAAihB,MAAA,CAAAjhB,IAAA,CAAAmhB,MAAA,IAAAA,MAAA,CAAAF,MAAA;OAEF,QAAAjgB,CAAA;QAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;;IACDggB,eAAe,EAAE;GAClB,EAAE,CAACrE,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAE5K,EAAE,EAAEmI,MAAM,CAAC,CAAC;EAE9B,IAAMkH,cAAc,GAAGte,iBAAW;IAAA;MAChC,IAAI,EAACua,oBAAoB,aAApBA,oBAAoB,eAApBA,oBAAoB,CAAEtL,EAAE,GAAE,OAAA3V,OAAA,CAAA2D,OAAA;MAAO,IAAAshB,MAAA,GAAAvhB,MAAA,aAClC;QAAA,OAAA1D,OAAA,CAAA2D,OAAA,CACI+Z,kBAAkB,CAACuD,oBAAoB,CAACtL,EAAE,EAAE,CAAC,CAAC,CAAC,EAAA/R,IAAA;OACtD,YAAQ7D,KAAK,EAAE;QACdI,OAAO,CAACC,GAAG,CAAC;UAACL,KAAK,EAALA;SAAM,CAAC;OACrB;MAAA,OAAAC,OAAA,CAAA2D,OAAA,CAAAshB,MAAA,IAAAA,MAAA,CAAArhB,IAAA,GAAAqhB,MAAA,CAAArhB,IAAA;KACF,QAAAgB,CAAA;MAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;KAAE,CAACqc,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEtL,EAAE,CAAC,CAAC;EAE9B,IAAMsO,sBAAsB,YAAtBA,sBAAsBA;IAAA;MAC1B,IAAG,CAACrZ,KAAK,CAACuD,MAAM,EAAE,OAAAnO,OAAA,CAAA2D,OAAA;MAClB,IAAI,CAAAsd,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEtL,EAAE,MAAKtR,SAAS,EAAE,OAAArE,OAAA,CAAA2D,OAAA;MAAO,OAAA3D,OAAA,CAAA2D,OAAA,CAAAD,MAAA,aAC/C;QAAA,IAAAwhB,OAAA;UAAA,IACEjE,oBAAoB,CAACtL,EAAE,KAAK,CAAC;YAC/B,IAAMmI,OAAM,GAAGa,SAAS,GAAGsC,oBAAoB,CAACU,OAAO,CAAChM,EAAE,GAAGsL,oBAAoB,CAACY,OAAO,CAAClM,EAAE;YAAA,OAAA3V,OAAA,CAAA2D,OAAA,CAC1EyZ,kBAAkB,CAACU,OAAM,CAAC,EAAAla,IAAA,WAAtCf,GAAG;cAAA,IAAAsiB,cAAA;cAAA,OAAAnlB,OAAA,CAAA2D,OAAA,CACH8c,2BAA2B,aAA3BA,2BAA2B,uBAA3BA,2BAA2B,EAAA0E,cAAA,GAAGtiB,GAAG,CAACkB,IAAI,CAACA,IAAI,cAAAohB,cAAA,uBAAbA,cAAA,CAAexP,EAAE,CAAC,EAAA/R,IAAA;;;YAAA,IAAAwhB,MAAA,YAAAA;cAAA,OAAAplB,OAAA,CAAA2D,OAAA,CAMhD8b,cAAc,CAACwB,oBAAoB,CAACtL,EAAE,EAAEa,MAAM,CAAC,EAAA5S,IAAA;gBACrD8c,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,EAAI;;;YAAC,IAAA2E,MAAA;cAAA,IALtBtE,YAAY,CAAC/S,OAAO;gBAAA,OAAAhO,OAAA,CAAA2D,OAAA,CACfqhB,cAAc,EAAE,EAAAphB,IAAA;kBACtBmd,YAAY,CAAC/S,OAAO,GAAE,KAAK;;;;YAAC,OAAAqX,MAAA,IAAAA,MAAA,CAAAzhB,IAAA,GAAAyhB,MAAA,CAAAzhB,IAAA,CAAAwhB,MAAA,IAAAA,MAAA,CAAAC,MAAA;;;QAAA,IAAAH,OAAA,IAAAA,OAAA,CAAAthB,IAAA,SAAAshB,OAAA,CAAAthB,IAAA;OAKjC,cAAe;QACd0e,mBAAK,CAACviB,KAAK,CAAC,qBAAqB,CAAC;OACnC;KACF,QAAA6E,CAAA;MAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;;EAED,IAAM0gB,wBAAwB,GAAG,SAA3BA,wBAAwBA;IAC5BlF,aAAa,EAAE;IACfmB,cAAc,CAAC,IAAI,CAAC;GACrB;EAEDza,eAAS,CAAC;IACRmd,sBAAsB,EAAE;GACzB,EAAE,CAAChgB,IAAI,CAACC,SAAS,CAAC+c,oBAAoB,CAAC,EAAEhd,IAAI,CAACC,SAAS,CAAC0G,KAAK,CAAC,EAAE3G,IAAI,CAACC,SAAS,CAACqb,aAAa,CAAC,EAAE/I,MAAM,CAAC,CAAC;EAExG,IAAM+O,QAAQ,GAAG,CAAC5G,SAAS,GACvBsC,oBAAoB,aAApBA,oBAAoB,wBAAAuE,sBAAA,GAApBvE,oBAAoB,CAAEU,OAAO,cAAA6D,sBAAA,uBAA7BA,sBAAA,CAA+BxC,WAAW,GAC1C/B,oBAAoB,aAApBA,oBAAoB,wBAAAwE,sBAAA,GAApBxE,oBAAoB,CAAEY,OAAO,cAAA4D,sBAAA,uBAA7BA,sBAAA,CAA+BzC,WAAW,KAAK,EAAE;EACrD,IAAM0C,UAAU,GAAG,CAAC/G,SAAS,GACzBsC,oBAAoB,aAApBA,oBAAoB,wBAAA0E,sBAAA,GAApB1E,oBAAoB,CAAEU,OAAO,cAAAgE,sBAAA,uBAA7BA,sBAAA,CAA+B7N,MAAM,GACrCmJ,oBAAoB,aAApBA,oBAAoB,wBAAA2E,sBAAA,GAApB3E,oBAAoB,CAAEY,OAAO,cAAA+D,sBAAA,uBAA7BA,sBAAA,CAA+B9N,MAAM,KAAK,EAAE;EAGhD,OAAO;IACL8C,eAAe,EAAE;MACfzX,IAAI,EAAEoiB,QAAQ;MACdzN,MAAM,EAAE4N,UAAU;MAClBlR,OAAO,EAAEoK,KAAK;MACd/E,cAAc,EAAE0F,aAAa,CAAC/I,MAAM;MACpCsD,cAAc,EAAE2I;KACjB;IACD5H,aAAa,EAAE;MACbvC,QAAQ,EAAEwK,WAAW;MACrBjM,gBAAgB,EAAEgF,oBAAoB;MACtC9D,OAAO,EAAEwK,kBAAkB;MAC3BzL,kBAAkB,EAAEkL;KACrB;IACDlH,UAAU,EAAE;MACVzP,IAAI,EAAE,CAAAjH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEwR,OAAO,KAAI,EAAE;MAC5BmD,UAAU,EAAE3U,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEsS,aAAa;MAClCD,SAAS,EAAErS,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEqS,SAAS;MAC7BwC,aAAa,EAAEuJ,iBAAiB;MAChCtd,QAAQ,EAAE8c,gBAAgB;MAC1B9I,YAAY,EAAE,CAACqG,aAAa,CAAC/I,MAAM,IAAMpS,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEsS,aAAa,GAAG4C,gBAAgB,GAAGjV;KACtF;IACD6W,aAAa,EAAbA,aAAa;IACb4G,iBAAiB,EAAjBA,iBAAiB;IACjBlD,KAAK,EAALA,KAAK;IACLkE,WAAW,EAAXA,WAAW;IACX7B,oBAAoB,EAApBA,oBAAoB;IACpBG,aAAa,EAAbA,aAAa;IACb7B,aAAa,EAAbA,aAAa;IACbwC,uBAAuB,EAAvBA,uBAAuB;IACvBiC,sBAAsB,EAAtBA,sBAAsB;IACtBvE,cAAc,EAAdA,cAAc;IACdgD,gBAAgB,EAAhBA,gBAAgB;IAChBtB,UAAU,EAAVA,UAAU;IACVf,aAAa,EAAEkF,wBAAwB;IACvCrB,sBAAsB,EAAtBA,sBAAsB;IACtBe,cAAc,EAAdA;GACD;AACH,CAAC;;AC1aD,IAAMa,kBAAkB,GAAO1oB,QAAQ,cAAW;AAElD,AAAO,IAAM2oB,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAI3I,KAAyB;EAAA,OACnEpe,GAAG,CAACyL,GAAG,CAAIqb,kBAAkB,+BAA4B;IAAC/nB,MAAM,EAAEqf;GAAM,CAAC;AAAA;;ACE7E,IAAI4I,WAAW,GAAG,IAAI;AACtB,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA;EACrB,IAAM9kB,QAAQ,GAAGC,sBAAW,EAAE;EAE9B,IAAM2G,IAAI,GAAGsC,sBAAW,CAAC,UAACjC,KAAU;IAAA,IAAAwC,aAAA;IAAA,OAAKxC,KAAK,aAALA,KAAK,wBAAAwC,aAAA,GAALxC,KAAK,CAAEQ,MAAM,cAAAgC,aAAA,uBAAbA,aAAA,CAAe7C,IAAI;IAAC;EAC7D,IAAM8C,KAAK,GAAG,CAAA9C,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE8C,KAAK,KAAI,EAAE;EAC/B,IAAM+T,SAAS,GAAG/T,KAAK,CAACG,QAAQ,CAAC,SAAS,CAAC;EAC3C,IAAA7E,SAAA,GAAuDC,cAAQ,EAAwB;IAAhF8a,oBAAoB,GAAA/a,SAAA;IAAEgb,uBAAuB,GAAAhb,SAAA;EACpD,IAAAI,UAAA,GAA0CH,cAAQ,CAAyB,EAAE,CAAC;IAAvE8f,aAAa,GAAA3f,UAAA;IAAE4f,gBAAgB,GAAA5f,UAAA;EACtC,IAAAK,UAAA,GAAoDR,cAAQ,CAAqB6X,2BAA2B,CAAC;IAAtGmI,kBAAkB,GAAAxf,UAAA;IAAEyf,qBAAqB,GAAAzf,UAAA;EAEhD,IAAM0f,gCAAgC,GAAG,SAAnCA,gCAAgCA,CAAInM,GAAyB;IAC/DgH,uBAAuB,CAAChH,GAAG,CAAC;GAC/B;EAED,IAAMoM,4BAA4B,GAAG,SAA/BA,4BAA4BA,CAAIpM,GAAyB;IAC3DgM,gBAAgB,CAAC,UAAC/d,KAA8B;MAC5C,IAAMmK,KAAK,GAAGnK,KAAK,CAACoe,SAAS,CAAC,UAAAloB,CAAC;QAAA,OAAIA,CAAC,CAACsX,EAAE,KAAKuE,GAAG,CAACvE,EAAE;QAAC;MACnD,IAAGrD,KAAK,GAAG,CAAC,CAAC,IAAIrO,IAAI,CAACC,SAAS,CAACgW,GAAG,CAAC,KAAKjW,IAAI,CAACC,SAAS,CAACiE,KAAK,CAACmK,KAAK,CAAC,CAAC,EAAC;QAClE,QAAQ4H,GAAG,EAAAhR,MAAA,CAAKf,KAAK,CAAC0a,KAAK,CAAC,CAAC,EAAEvQ,KAAK,CAAC,EAAKnK,KAAK,CAAC0a,KAAK,CAACvQ,KAAK,GAAG,CAAC,CAAC;OACnE,MACI,QAAQ4H,GAAG,EAAAhR,MAAA,CAAKf,KAAK;KAC7B,CAAC;IACF+Y,uBAAuB,CAAC,UAAC/Y,KAAuC;MAC5D,IAAG,CAACA,KAAK,EAAE,OAAO+R,GAAG;MACrB,OAAO/R,KAAK;KACf,CAAC;GACL;EAED,IAAMqe,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAI7Q,EAAU,EAAE8Q,WAAmB;IAClEP,gBAAgB,CAAC,UAAC/d,KAA8B;MAC5C,IAAMmK,KAAK,GAAGnK,KAAK,CAACoe,SAAS,CAAC,UAAAloB,CAAC;QAAA,OAAIA,CAAC,CAACsX,EAAE,KAAKA,EAAE;QAAC;MAE/C,IAAGrD,KAAK,KAAK,CAAC,CAAC,IAAImU,WAAW,KAAKte,KAAK,CAACmK,KAAK,CAAC,CAACoU,kBAAkB,EAAE,OAAOve,KAAK;MAChF,UAAAe,MAAA,CAAWf,KAAK,CAAC0a,KAAK,CAAC,CAAC,EAAEvQ,KAAK,CAAC,GAAAyB,QAAA,KACzB5L,KAAK,CAACmK,KAAK,CAAC;QACfoU,kBAAkB,EAAED;WAClBte,KAAK,CAAC0a,KAAK,CAACvQ,KAAK,GAAG,CAAC,CAAC;KAC/B,CAAC;IACF4O,uBAAuB,CAAC,UAAC/Y,KAAuC;MAC5D,IAAG,CAAC,CAACA,KAAK,EAAE,OAAA4L,QAAA,KACL5L,KAAK;QACRue,kBAAkB,EAAED;;MAExB,OAAOte,KAAK;KACf,CAAC;GACL;EAED,IAAMwe,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAI/hB,CAAgC;IAC5DwhB,qBAAqB,CAAC,UAACje,KAAyB;MAAA,OAAA4L,QAAA,KACzC5L,KAAK;QACR+V,UAAU,EAAEtZ,CAAC,CAACsH,MAAM,CAACC;;KACvB,CAAC;GACJ;EAEH,IAAMya,kBAAkB,GAAI,SAAtBA,kBAAkBA,CAAK3oB,MAA0B;IACnDmoB,qBAAqB,CAAC,UAACje,KAAyB;MAAA,OAAA4L,QAAA,KACzC5L,KAAK,EACLlK,MAAM;KACX,CAAC;GACN;EAED,IAAM4oB,oCAAoC,GAAG,SAAvCA,oCAAoCA,CAAItG,YAAkC;;IAC5E,IAAG,EAACA,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAEuG,WAAW,GAAE,OAAO,EAAE;IACxC,IAAIlR,OAAO,GAAG2K,YAAY,CAACuG,WAAW,CAAClR,OAAO;IAE9C,QAAQ2K,YAAY,CAACuG,WAAW,CAACxiB,IAAI;MACrC,KAAKkR,iBAAiB,CAAC4N,IAAI;QACvB,QAAQ7C,YAAY,CAACuG,WAAW,CAAC1e,MAAM;UACvC,KAAKmN,aAAa,CAAC8N,IAAI;YACnBzN,OAAO,IAAM+I,SAAS,GAAG,KAAK,GAAG4B,YAAY,CAACsB,OAAO,CAACmB,WAAW,0BAAA+D,qBAAA,GAAkBxG,YAAY,CAACuG,WAAW,CAAC1E,IAAI,cAAA2E,qBAAA,uBAA7BA,qBAAA,CAA+Bxd,KAAK,CAAE;YACzH;;QAIJ;;IAIJ,OAAOqM,OAAO;GACjB;EAED,IAAMoR,mBAAmB,YAAnBA,mBAAmBA;IAAA;;QAgBrBjB,WAAW,IAAI7kB,QAAQ,CAAC/E,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAG4pB,WAAW,EAAEA,WAAW,GAAG,KAAK;;MAhBnC,IAAG,CAACnb,KAAK,CAACuD,MAAM,EAAE,OAAAnO,OAAA,CAAA2D,OAAA;MAClBoiB,WAAW,IAAI7kB,QAAQ,CAAC/E,UAAU,CAAC,IAAI,CAAC,CAAC;MAAC,IAAAsH,KAAA,GAAAC,MAAA,aACtC;QACA,IAAMujB,mBAAmB,GAAGtI,SAAS,GAAIzB,mBAAmB,GAAE4I,6BAA6B;QAAA,OAAA9lB,OAAA,CAAA2D,OAAA,CACzEsjB,mBAAmB,CAACd,kBAAkB,CAAC,EAAAviB,IAAA,WAAnDf,GAAG;UAAA,IAAAgd,eAAA;UACTqG,gBAAgB,CAACrjB,GAAG,CAACkB,IAAI,CAACob,KAAK,IAAI,EAAE,CAAC;UAEtC,CAAC8B,oBAAoB,IAAIC,uBAAuB,EAAArB,eAAA,GAAChd,GAAG,CAACkB,IAAI,CAACob,KAAK,cAAAU,eAAA,uBAAdA,eAAA,CAAiB,CAAC,CAAC,CAAC;;OACxE,cAAe;QACZqB,uBAAuB,CAAC7c,SAAS,CAAC;QAClCnD,QAAQ,CAAC7E,QAAQ,CAAC;UACdiI,IAAI,EAAE,QAAQ;UACdF,OAAO,EAAE;SACZ,CAAC,CAAC;OACN;MAAA,OAAApE,OAAA,CAAA2D,OAAA,CAAAF,KAAA,IAAAA,KAAA,CAAAG,IAAA,GAAAH,KAAA,CAAAG,IAAA,CAAAb,MAAA,IAAAA,MAAA,CAAAU,KAAA;KAGJ,QAAAmB,CAAA;MAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;;EAED,IAAMsiB,8BAA8B,GAAG,SAAjCA,8BAA8BA;IAChC,IAAG,EAACjG,oBAAoB,aAApBA,oBAAoB,eAApBA,oBAAoB,CAAEtL,EAAE,GAAE;IAC9BuQ,gBAAgB,CAAC,UAAC/d,KAA6B;MAC3C,IAAMgf,WAAW,GAAGhf,KAAK,CAACoe,SAAS,CAAC,UAAAloB,CAAC;QAAA,OAAIA,CAAC,CAACsX,EAAE,KAAKsL,oBAAoB,CAACtL,EAAE;QAAC;MAC1E,IAAGwR,WAAW,GAAG,CAAC,EAAE,OAAOhf,KAAK;MAChC,UAAAe,MAAA,CACOf,KAAK,CAAC0a,KAAK,CAAC,CAAC,EAAEsE,WAAW,CAAC,GAAApT,QAAA,KAEvB5L,KAAK,CAACgf,WAAW,CAAC;QACrBT,kBAAkB,EAAE;WAErBve,KAAK,CAAC0a,KAAK,CAACsE,WAAW,GAAG,CAAC,CAAC;KAEtC,CAAC;GACL;EAED,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIN,WAA4B;IACzDZ,gBAAgB,CAAC,UAAC/d,KAA6B;MAC3C,IAAMgf,WAAW,GAAGhf,KAAK,CAACoe,SAAS,CAAC,UAAAloB,CAAC;QAAA,OAAIA,CAAC,CAACsX,EAAE,KAAKmR,WAAW,CAACtJ,cAAc;QAAC;MAC7E,IAAG2J,WAAW,GAAG,CAAC,EAAE,OAAOhf,KAAK;MAChChI,OAAO,CAACC,GAAG,CAAC;QACR0mB,WAAW,EAAXA;OACH,CAAC;MAEF,QAAA/S,QAAA,KAEW5L,KAAK,CAACgf,WAAW,CAAC;QACrBL,WAAW,EAAXA;UAAW5d,MAAA,CAEZf,KAAK,CAAC0a,KAAK,CAAC,CAAC,EAAEsE,WAAW,CAAC,EAC3Bhf,KAAK,CAAC0a,KAAK,CAACsE,WAAW,GAAG,CAAC,CAAC;KAEtC,CAAC;GACL;EAED,IAAME,+BAA+B,YAA/BA,+BAA+BA,CAAU1R,EAAU;IAAA;MACrD,IAAG,CAACsL,oBAAoB,EAAE,OAAAjhB,OAAA,CAAA2D,OAAA;MAC1Bud,uBAAuB,CAAAnN,QAAA,KAClBkN,oBAAoB;QACvBtL,EAAE,EAAFA;QACD,CAAC;MACF,IAAMrD,KAAK,GAAG2T,aAAa,CAACM,SAAS,CAAC,UAAAloB,CAAC;QAAA,OAAIA,CAAC,CAACwjB,OAAO,CAAClM,EAAE,MAAKsL,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEY,OAAO,CAAClM,EAAE,KAAItX,CAAC,CAACsjB,OAAO,CAAChM,EAAE,MAAKsL,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEU,OAAO,CAAChM,EAAE;QAAC;MAClJ,IAAGrD,KAAK,GAAG,CAAC,CAAC,EAAE;QACX4T,gBAAgB,IAAAhd,MAAA,CACT+c,aAAa,CAACpD,KAAK,CAAC,CAAC,EAAEvQ,KAAK,CAAC,GAAAyB,QAAA,KACzBkN,oBAAoB;UACvBtL,EAAE,EAAFA;aAECsQ,aAAa,CAACpD,KAAK,CAACvQ,KAAK,GAAG,CAAC,CAAC,CACtC,CAAC;;MACL,OAAAtS,OAAA,CAAA2D,OAAA;KACF,QAAAiB,CAAA;MAAA,OAAA5E,OAAA,CAAAC,MAAA,CAAA2E,CAAA;;;EAGHkC,eAAS,CAAC;IACNkgB,mBAAmB,EAAE;GACxB,EAAE,CAAC/iB,IAAI,CAACC,SAAS,CAACiiB,kBAAkB,CAAC,EAAEvb,KAAK,CAACuD,MAAM,CAAC,CAAC;EAEtDrH,eAAS,CAAC;IACNnK,MAAM,CAAC2M,QAAQ,CAACC,KAAK,GAAG,KAAK;GAChC,EAAE,EAAE,CAAC;EAEN,OAAO;IACHoV,SAAS,EAATA,SAAS;IACTwH,kBAAkB,EAAlBA,kBAAkB;IAClBlF,oBAAoB,EAApBA,oBAAoB;IACpBgF,aAAa,EAAbA,aAAa;IACbiB,8BAA8B,EAA9BA,8BAA8B;IAC9BN,kBAAkB,EAAlBA,kBAAkB;IAClBP,gCAAgC,EAAhCA,gCAAgC;IAChCM,sBAAsB,EAAtBA,sBAAsB;IACtBzF,uBAAuB,EAAvBA,uBAAuB;IACvBkG,uBAAuB,EAAvBA,uBAAuB;IACvBJ,mBAAmB,EAAnBA,mBAAmB;IACnBH,oCAAoC,EAApCA,oCAAoC;IACpCP,4BAA4B,EAA5BA,4BAA4B;IAC5Be,+BAA+B,EAA/BA,+BAA+B;IAC/Bb,6BAA6B,EAA7BA;GACH;AACL,CAAC;;ACxLD,IAAMc,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIC,wBAA+D,EAAEC,yBAA+D;EAC3J,IAAM7G,MAAM,GAAG7S,YAAM,EAAU;EAC/B,IAAM8S,OAAO,GAAG9S,YAAM,EAAW;EACjC,IAAM+S,WAAW,GAAG/S,YAAM,EAAU;EAEpC,IAAMgQ,MAAM,GAAG1T,sBAAW,CAAC,UAACjC,KAAU;IAAA,IAAAwC,aAAA,EAAAqW,kBAAA;IAAA,OAAK7Y,KAAK,aAALA,KAAK,wBAAAwC,aAAA,GAALxC,KAAK,CAAEQ,MAAM,cAAAgC,aAAA,wBAAAqW,kBAAA,GAAbrW,aAAA,CAAe7C,IAAI,cAAAkZ,kBAAA,uBAAnBA,kBAAA,CAAqBrL,EAAE;IAAC;EAEnE,IAAM8R,mCAAmC,GAAG,SAAtCA,mCAAmCA,CAAI1jB,IAA0B;IACnEwjB,wBAAwB,aAAxBA,wBAAwB,uBAAxBA,wBAAwB,CAAGxjB,IAAI,CAAC;GACnC;EAED,IAAM2jB,6BAA6B,GAAG,SAAhCA,6BAA6BA,CAAI3jB,IAA0B;IAC7DyjB,yBAAyB,aAAzBA,yBAAyB,uBAAzBA,yBAAyB,CAAGzjB,IAAI,CAAC4R,EAAE,EAAE5R,IAAI,CAAC2iB,kBAAkB,CAAC;GAChE;EAED,IAAMxC,aAAa,GAAG,SAAhBA,aAAaA;IACftD,OAAO,CAAC5S,OAAO,IAAI4S,OAAO,CAAC5S,OAAO,CAACoW,MAAM,CAAC,4BAA4B,EAAEqD,mCAAmC,CAAC;IAC5G7G,OAAO,CAAC5S,OAAO,IAAI4S,OAAO,CAAC5S,OAAO,CAACoW,MAAM,CAAC,iCAAiC,EAAEsD,6BAA6B,CAAC;IAC3G7G,WAAW,CAAC7S,OAAO,IACjB2S,MAAM,CAAC3S,OAAO,IACd2S,MAAM,CAAC3S,OAAO,CAACsW,WAAW,CAACzD,WAAW,CAAC7S,OAAO,CAAC;GAClD;EAEHlH,eAAS,CAAC;IACN,IACI1J,aAAa,CAACC,OAAO,IACrBD,aAAa,CAACE,GAAG,IACjB,CAAC,CAACwgB,MAAM,EACV;MACE,IAAMle,KAAK,GAAGnC,gBAAc,EAAE;MAC9BkjB,MAAM,CAAC3S,OAAO,GAAG,IAAIuW,MAAM,CAACnnB,aAAa,CAACE,GAAG,EAAE;QAC3CD,OAAO,EAAED,aAAa,CAACC,OAAO;QAC9BmnB,YAAY,EAAKrnB,QAAQ,qBAAkB;QAC3CsnB,IAAI,EAAE;UACF3mB,MAAM,EAAE,EAAE;UACVsB,OAAO,EAAE;YACLS,aAAa,cAAYD;;;OAGpC,CAAC;MACFihB,WAAW,CAAC7S,OAAO,6CAA2C8P,MAAQ;MAEtE8C,OAAO,CAAC5S,OAAO,GAAG2S,MAAM,CAAC3S,OAAO,CAAC0W,SAAS,CAAC7D,WAAW,CAAC7S,OAAO,CAAC;MAC/D4S,OAAO,CAAC5S,OAAO,CAAC2W,IAAI,CAChB,4BAA4B,EAC5B8C,mCAAmC,CACtC;MACD7G,OAAO,CAAC5S,OAAO,CAAC2W,IAAI,CAChB,iCAAiC,EACjC+C,6BAA6B,CAChC;;IAEL,OAAOxD,aAAa;GACvB,EAAE,CAACpG,MAAM,CAAC,CAAC;EACZ,OAAO,EAAE;AACb,CAAC;;;AC7DD,AAGA,IAAM6J,eAAe,GAAG,SAAlBA,eAAeA,CAAArlB,IAAA;MAEjBkS,OAAO,GAAAlS,IAAA,CAAPkS,OAAO;IACPC,UAAU,GAAAnS,IAAA,CAAVmS,UAAU;IACVC,YAAY,GAAApS,IAAA,CAAZoS,YAAY;IACZvI,KAAK,GAAA7J,IAAA,CAAL6J,KAAK;IACLwI,OAAO,GAAArS,IAAA,CAAPqS,OAAO;IACJC,IAAI,GAAAC,6BAAA,CAAAvS,IAAA,EAAAwS,WAAA;EAEP,IAAM9P,aAAa,GAAG7G,KAAK,CAACC,OAAO,CAAC+N,KAAK,CAAC,GAAGqI,OAAO,CAACvW,MAAM,CAAC,UAACI,CAAM;IAAA,OAAI8N,KAAK,CAACpB,QAAQ,CAAC1M,CAAC,CAAC8N,KAAK,CAAC;IAAC,GAAGwI,OAAO,GAAGH,OAAO,CAACvW,MAAM,CAAC,UAACI,CAAM;IAAA,OAAKA,CAAC,CAAC8N,KAAK,IAAIA,KAAK;IAAC,GAAGqI,OAAO,CAAClD,IAAI,CAAC,UAACjT,CAAM;IAAA,OAAKA,CAAC,CAAC8N,KAAK,IAAIA,KAAK;IAAC;EAErM,OACIrH,6BAAC8iB,eAAe;IACZlN,WAAW;IACXjG,UAAU,EAAEA,UAAU;IACtBD,OAAO,EAAEA,OAAO;IAChBrI,KAAK,EAAEnH,aAAa;IACpBiQ,aAAa,EAAEP,YAAY,GAAG,KAAK,GAAG,MAAM;IAC5CC,OAAO,EAAEA;KACLC,IAAI,EAEV;AAEV,CAAC;;;AC1BD,AAGA,IAAMiT,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAvlB,IAAA;MACnBgS,SAAS,GAAAhS,IAAA,CAATgS,SAAS;IACTC,AACAC,OAAO,GAAAlS,IAAA,CAAPkS,OAAO;IACPC,UAAU,GAAAnS,IAAA,CAAVmS,UAAU;IACVC,YAAY,GAAApS,IAAA,CAAZoS,YAAY;IACZvI,KAAK,GAAA7J,IAAA,CAAL6J,KAAK;IACLwI,OAAO,GAAArS,IAAA,CAAPqS,OAAO;IACJC,IAAI,GAAAC,6BAAA,CAAAvS,IAAA,EAAAwS,WAAA;EAEP,IAAM9P,aAAa,GAAG7G,KAAK,CAACC,OAAO,CAAC+N,KAAK,CAAC,GAAGqI,OAAO,CAACvW,MAAM,CAAC,UAACI,CAAM;IAAA,OAAI8N,KAAK,CAACpB,QAAQ,CAAC1M,CAAC,CAAC8N,KAAK,CAAC;IAAC,GAAGwI,OAAO,GAAGH,OAAO,CAACvW,MAAM,CAAC,UAACI,CAAM;IAAA,OAAKA,CAAC,CAAC8N,KAAK,IAAIA,KAAK;IAAC,GAAGqI,OAAO,CAAClD,IAAI,CAAC,UAACjT,CAAM;IAAA,OAAKA,CAAC,CAAC8N,KAAK,IAAIA,KAAK;IAAC;EAErM,OACIrH,6BAACgjB,eAAW;IACRrT,UAAU,EAAEA,UAAU;IACtBD,OAAO,EAAEA,OAAO;IAChBrI,KAAK,EAAE,CAACmI,SAAS,GAAGtP,aAAa,GAAGX,SAAS;IAC7CkQ,YAAY,EAAED,SAAS,GAAGtP,aAAa,GAAGX,SAAS;IACnD4Q,aAAa,EAAEP,YAAY,GAAG,KAAK,GAAG,MAAM;IAC5CC,OAAO,EAAEA;KACLC,IAAI,EAEV;AAEV,CAAC;;;;ACzBM,IAAMmT,gBAAgB,GAAG5pB,KAAK,CAAC6pB,IAAI,CAAC;EAAE7Z,MAAM,EAAE;CAAK,EAAE,UAACgG,CAAC,EAAE9V,CAAC;EAAA,OAAKA,CAAC,GAAG,CAAC;AAAA,EAAC;AAC5E,AAAO,IAAM4pB,aAAa,GAAG9pB,KAAK,CAAC6pB,IAAI,CAAC;EAAE7Z,MAAM,EAAE;CAAI,EAAE,UAACgG,CAAC,EAAE9V,CAAC;EAAA,OAAKA,CAAC,GAAG,CAAC;AAAA,EAAC;AACxE,AAAO,IAAM6pB,gBAAgB,GAAG/pB,KAAK,CAAC6pB,IAAI,CAAC;EAAE7Z,MAAM,EAAE;CAAI,EAAE,UAACgG,CAAC,EAAE9V,CAAC;EAAA,OAAKA,CAAC,GAAG,CAAC;AAAA,EAAC;AAC3E,AAAO,IAAM8pB,cAAc,GAAGhqB,KAAK,CAAC6pB,IAAI,CAAC;EAAE7Z,MAAM,EAAE;CAAG,EAAE,UAACgG,CAAC,EAAE9V,CAAC;EAAA,OAAKA,CAAC,GAAG,CAAC;AAAA,EAAC;AACxE,AAAO,IAAM+pB,aAAa,GAAG,CAAC;AAC9B,AAAO,IAAMC,oBAAoB,GAAG,CAAC;;ACQrC,IAAMC,YAAY,GAA0B,SAAtCA,YAAYA,CAAAhmB,IAAA;MACdgQ,KAAK,GAAAhQ,IAAA,CAALgQ,KAAK;IACLiW,QAAQ,GAAAjmB,IAAA,CAARimB,QAAQ;IACRC,WAAW,GAAAlmB,IAAA,CAAXkmB,WAAW;IACX/T,UAAU,GAAAnS,IAAA,CAAVmS,UAAU;IACVgU,sBAAsB,GAAAnmB,IAAA,CAAtBmmB,sBAAsB;IACtBC,mBAAmB,GAAApmB,IAAA,CAAnBomB,mBAAmB;EAInB,IAAMC,YAAY,GAAGV,aAAa,CAAC/pB,GAAG,CAAC,UAAAG,CAAC;IAAA,OAAK;MACzCsV,KAAK,EAAEyU,aAAa,KAAK/pB,CAAC,GAAMA,CAAC,mCAAeA,CAAC,WAAG;MACpD8N,KAAK,EAAE9N;KACV;GAAC,CAAC;EAEH,OAAOyG;IAAKQ,SAAS,EAAC;KAClBR;IAAKQ,SAAS,EAAC;KACXR;IAAKQ,SAAS,EAAKC,QAAM,CAAC,gBAAgB,CAAC;sBACnCgjB,QAAQ,CAACK,aAAa,GAAG,CAAC,WAC5B,EACN9jB;IAAKQ,SAAS,EAAC;KAEPnH,KAAK,CAAC6pB,IAAI,CAAC;IAAE7Z,MAAM,EAAEqa;GAAa,EAAE,UAACrU,CAAC,EAAE9V,CAAC;IAAA,OAAKA,CAAC,GAAG,CAAC;IAAC,CAACH,GAAG,CAAC,UAAAG,CAAC;IAAA,OACtDyG,6BAAC+jB,oBAAS;MAACvjB,SAAS,EAAC;OACjBR,6BAACgkB,gBAAK;MAACC,OAAO,cAAY1qB,CAAG;MAAEiH,SAAS,OAAKC,QAAM,CAAC,gBAAgB;OAAMlH,CAAC,WAAU,EACrFyG,6BAAC+H,gBAAK;MACF8I,EAAE,cAAYtX,CAAG;MACjBiG,IAAI,EAAE,OAAO;MACb0kB,OAAO,EAAET,QAAQ,CAACU,cAAc,CAACle,QAAQ,CAAC1M,CAAC,CAAC;MAC5CiP,OAAO,EAAE,SAAAA;QAAA,OAAMmb,sBAAsB,CAACpqB,CAAC,EAAEiU,KAAK,CAAC;;MAC/C/E,QAAQ,EAAEkH;MACZ,CACM;GACf,CAAC,CAEJ,CACJ,EACN3P;IAAKQ,SAAS,EAAC;KACXR,6BAAC+jB,oBAAS;IAACvjB,SAAS,EAAC,MAAM;IAAC+E,KAAK,EAAE;MAC/BmI,KAAK,EAAE;;KAEP1N,6BAACuP,YAAY;IACTlI,KAAK,EAAEoc,QAAQ,CAACW,KAAK;IACrB1U,OAAO,EAAEmU,YAAY;IACrB7b,QAAQ,EAAE,SAAAA,SAACX,KAAU;MAAA,OAAKuc,mBAAmB,CAACvc,KAAK,CAACA,KAAK,EAAEmG,KAAK,CAAC;;IACjEmC,UAAU,EAAEA;IACd,CACM,CACV,CACJ;AACV,CAAC;;ACxCD,IAAM0U,gBAAgB,GAA8B,SAA9CA,gBAAgBA,CAAA7mB,IAAA;MAClB8mB,eAAe,GAAA9mB,IAAA,CAAf8mB,eAAe;IACfC,OAAO,GAAA/mB,IAAA,CAAP+mB,OAAO;IACPC,SAAS,GAAAhnB,IAAA,CAATgnB,SAAS;IACTd,WAAW,GAAAlmB,IAAA,CAAXkmB,WAAW;IACXe,aAAa,GAAAjnB,IAAA,CAAbinB,aAAa;IACbC,UAAU,GAAAlnB,IAAA,CAAVknB,UAAU;IACVC,QAAQ,GAAAnnB,IAAA,CAARmnB,QAAQ;IACRhV,UAAU,GAAAnS,IAAA,CAAVmS,UAAU;IACViV,qBAAqB,GAAApnB,IAAA,CAArBonB,qBAAqB;IACrBC,gBAAgB,GAAArnB,IAAA,CAAhBqnB,gBAAgB;IAChBC,mBAAmB,GAAAtnB,IAAA,CAAnBsnB,mBAAmB;IACnBnB,sBAAsB,GAAAnmB,IAAA,CAAtBmmB,sBAAsB;IACtBC,mBAAmB,GAAApmB,IAAA,CAAnBomB,mBAAmB;EAEnB,IAAA5X,eAAA,GAAcC,2BAAc,EAAE;IAAtBgE,CAAC,GAAAjE,eAAA,CAADiE,CAAC;EAET,IAAM8U,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAI1d,KAAU;IACzCud,qBAAqB,CAACL,OAAO,EAAEld,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEA,KAAK,EAAEqc,WAAW,CAAC;GAC5D;EAED,IAAMsB,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAI3d,KAAU;IACpCwd,gBAAgB,CAACN,OAAO,EAAEld,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEA,KAAK,CAAC;GAC1C;EAED,IAAM4d,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAI5d,KAAU;IACvCyd,mBAAmB,CAACP,OAAO,EAAEld,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEA,KAAK,EAAEqc,WAAW,CAAC;GAC1D;EAED,IAAMwB,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAI7d,KAAU,EAAEmG,KAAa;IACzDmW,sBAAsB,CAACY,OAAO,EAAE/W,KAAK,EAAEnG,KAAK,CAAC;GAChD;EAED,IAAM8d,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAI9d,KAAa,EAAEmG,KAAa;IACzDoW,mBAAmB,CAACW,OAAO,EAAE/W,KAAK,EAAEnG,KAAK,CAAC;GAC7C;EAED,IAAM+d,eAAe,GAAGhC,gBAAgB,CAAChqB,GAAG,CAAC,UAAAG,CAAC;IAAA,OAAK;MAC/CsV,KAAK,EAAKtV,CAAC,WAAG;MACd8N,KAAK,EAAE9N;KACV;GAAC,CAAC;EAEH,IAAM8rB,aAAa,GAAGhC,cAAc,CAACjqB,GAAG,CAAC,UAAAG,CAAC;IAAA,OAAK;MAC3CsV,KAAK,EAAKtV,CAAC,WAAG;MACd8N,KAAK,EAAE9N;KACV;GAAC,CAAC;EACH,OACIyG;IAAKQ,SAAS,cAAYC,QAAM,CAAC,UAAU,CAAC,UAAIkkB,QAAQ,GAAGlkB,QAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE;KACtFT;IAAKQ,SAAS,EAAC;KACXR,6BAACslB,kBAAe;IAAC1c,IAAI,EAAE;IAAK,CAC1B,EACN5I;IAAKQ,SAAS,EAAC;KACXR,6BAACO,cAAG,QACAP,6BAACU,cAAG;IAACiC,EAAE,EAAE;KACL3C;IAAGQ,SAAS,YAAUC,QAAM,CAAC,kBAAkB;oBAAW,EAC1DT;IAAGQ,SAAS,mBAAiBC,QAAM,CAAC,kBAAkB;KAAM8jB,OAAO,CAAK,CACtE,CACJ,CACJ,EACNvkB;IAAKQ,SAAS,EAAC;KACXR,6BAACO,cAAG,QACAP,6BAACU,cAAG;IAACiC,EAAE,EAAE;KACL3C,6BAAC+jB,oBAAS,QACN/jB,6BAACgkB,gBAAK;IAACC,OAAO,EAAC,gBAAgB;IAACzjB,SAAS,OAAKC,QAAM,CAAC,gBAAgB;KAChEwP,CAAC,CAAC,gBAAgB,CAAC,CAChB,EACRjQ,6BAACuP,YAAY;IACTgW,OAAO,EAAC,gBAAgB;IACxBle,KAAK,EAAEod,aAAa;IACpB/U,OAAO,EAAE0V,eAAe;IACxBpd,QAAQ,EAAE+c,yBAAyB;IACnCpV,UAAU,EAAEA;IACd,CACM,CACV,EACN3P,6BAACU,cAAG;IAACiC,EAAE,EAAE;KACL3C,6BAAC+jB,oBAAS,QACN/jB,6BAACgkB,gBAAK;IAACC,OAAO,EAAC,UAAU;IAACzjB,SAAS,OAAKC,QAAM,CAAC,gBAAgB;KAAMwP,CAAC,CAAC,UAAU,CAAC,CAAS,EAC3FjQ,6BAACuP,YAAY;IACTgW,OAAO,EAAC,UAAU;IAClBle,KAAK,EAAEqd,UAAU;IACjBhV,OAAO,EAAE4U,eAAe;IACxBtc,QAAQ,EAAEgd,oBAAoB;IAC9BrV,UAAU,EAAEA;IACd,CACM,CACV,EACN3P,6BAACU,cAAG;IAACiC,EAAE,EAAE;KACL3C,6BAAC+jB,oBAAS,QACN/jB,6BAACgkB,gBAAK;IAACC,OAAO,EAAC,cAAc;IAACzjB,SAAS,OAAKC,QAAM,CAAC,gBAAgB;KAC9DwP,CAAC,CAAC,cAAc,CAAC,CACd,EACRjQ,6BAACuP,YAAY;IACTgW,OAAO,EAAC,cAAc;IACtBle,KAAK,EAAEqc,WAAW;IAClBhU,OAAO,EAAE2V,aAAa;IACtBrd,QAAQ,EAAEid,uBAAuB;IACjCtV,UAAU,EAAEA;IACd,CACM,CACV,EACN3P,6BAACU,cAAG;IAACiC,EAAE,EAAE;IACH,CACJ,EACN3C,0CAEQwkB,SAAS,CAACprB,GAAG,CAAC,UAACosB,CAAM,EAAEhY,KAAa;IAAA,OAChCxN,6BAACwjB,YAAY;MACThrB,GAAG,EAAEgV,KAAK;MACViW,QAAQ,EAAE+B,CAAC;MACX9B,WAAW,EAAEA,WAAW;MACxBlW,KAAK,EAAEA,KAAK;MACZmW,sBAAsB,EAAEuB,0BAA0B;MAClDtB,mBAAmB,EAAEuB,uBAAuB;MAC5CxV,UAAU,EAAEA;MACd;GACL,CAAC,CAEJ,CACJ,CACJ;AAEd,CAAC;;ACxID,IAAM8V,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAItpB,KAAY;EACnC,IAAQmhB,IAAI,GAAmBnhB,KAAK,CAA5BmhB,IAAI;IAAEoI,YAAY,GAAKvpB,KAAK,CAAtBupB,YAAY;EAE1B,IAAA1Z,eAAA,GAAcC,2BAAc,EAAE;IAAtBgE,CAAC,GAAAjE,eAAA,CAADiE,CAAC;EACT,IAAM8U,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAC3BR,OAAe,EACfE,aAAqB,EACrBf,WAAmB;IAEnB,IAAI,CAACpG,IAAI,EAAE;IACX,IAAMqI,aAAa,GAAGrI,IAAI,CAACkH,SAAS;IACpC,IAAMA,SAAS,GAAGmB,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,KAAK,CAACA,OAAO;MAAC;IACnE,IAAMqB,aAAa,GAAGD,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,GAAG,CAACA,OAAO;MAAC;IACrE,IAAMsB,aAAa,GAAGF,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,GAAG,CAACA,OAAO;MAAC;IACrE,IAAMuB,SAAS,GAAGtB,SAAS,CAACA,SAAS,CAACnb,MAAM,GAAG,CAAC,CAAC,CAACya,aAAa;IAC/D,IAAIU,SAAS,CAACnb,MAAM,KAAKob,aAAa,EAAE;IACxC,IAAID,SAAS,CAACnb,MAAM,GAAGob,aAAa,EAAE;MAClC,IAAMsB,mBAAmB,GAAe1sB,KAAK,CAAC6pB,IAAI,CAAC;QAC/C7Z,MAAM,EAAEob,aAAa,GAAGD,SAAS,CAACnb;OACrC,CAAC,CAACjQ,GAAG,CAAC,UAACiW,CAAC,EAAE7B,KAAK;QAAA,IAAAwY,WAAA;QAAA,OAAM;UAClBzB,OAAO,EAAE,CAACA,OAAO;UACjBJ,cAAc,EAAE,CAAC,CAAC,CAAC;UACnB8B,eAAe,EAAEvC,WAAW;UAC5BgB,UAAU,GAAAsB,WAAA,GAAExB,SAAS,CAAC,CAAC,CAAC,cAAAwB,WAAA,uBAAZA,WAAA,CAActB,UAAU;UACpCN,KAAK,EAAEd,aAAa;UACpBQ,aAAa,EAAEgC,SAAS,GAAGtY,KAAK,GAAG;SACtC;OAAC,CAAC;MACH,IAAM0Y,YAAY,MAAA9hB,MAAA,CACXwhB,aAAa,EACbpB,SAAS,EACTuB,mBAAmB,EACnBF,aAAa,CAACzsB,GAAG,CAAC,UAAAG,CAAC;QAAA,OAAA0V,QAAA,KACf1V,CAAC;UACJuqB,aAAa,EAAEvqB,CAAC,CAACuqB,aAAa,GAAGW,aAAa,GAAGD,SAAS,CAACnb;;OAC7D,CAAC,CACN;MAEDqc,YAAY,CAAAzW,QAAA,KACLqO,IAAI;QACPkH,SAAS,KAAApgB,MAAA,CAAM8hB,YAAY;QAC9B,CAAC;KACL,MAAM;MACH,IAAMC,eAAe,GAAG3B,SAAS,CAACzG,KAAK,CAAC,CAAC,EAAE0G,aAAa,CAAC;MACzD,IAAMyB,aAAY,MAAA9hB,MAAA,CACXwhB,aAAa,EACbO,eAAe,EACfN,aAAa,CAACzsB,GAAG,CAAC,UAAAG,CAAC;QAAA,OAAA0V,QAAA,KACf1V,CAAC;UACJuqB,aAAa,EAAEvqB,CAAC,CAACuqB,aAAa,GAAGU,SAAS,CAACnb,MAAM,GAAGob;;OACtD,CAAC,CACN;MAEDiB,YAAY,CAAAzW,QAAA,KACLqO,IAAI;QACPkH,SAAS,KAAApgB,MAAA,CAAM8hB,aAAY;QAC9B,CAAC;;GAET;EAED,IAAMlB,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIT,OAAe,EAAEG,UAAkB;IAC7D,IAAI,CAACpH,IAAI,EAAE;IACX,IAAMqI,aAAa,GAAGrI,IAAI,CAACkH,SAAS;IACpC,IAAMA,SAAS,GAAGmB,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,KAAK,CAACA,OAAO;MAAC;IACnE,IAAM6B,cAAc,GAAGT,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,KAAK,CAACA,OAAO;MAAC;IACxEmB,YAAY,CAAAzW,QAAA,KACLqO,IAAI;MACPkH,SAAS,KAAApgB,MAAA,CACFgiB,cAAc,EACd5B,SAAS,CAACprB,GAAG,CAAC,UAAAosB,CAAC;QAAA,OAAAvW,QAAA,KACXuW,CAAC;UACJd,UAAU,EAAVA;;OACF,CAAC;MAEV,CAAC;GACL;EAED,IAAMO,uBAAuB,GAAG,SAA1BA,uBAAuBA,CACzBV,OAAe,EACf8B,cAAsB,EACtB3C,WAAmB;IAEnB,IAAI,CAACpG,IAAI,EAAE;IACX,IAAI+I,cAAc,KAAK3C,WAAW,EAAE;IACpC,IAAMiC,aAAa,GAAGrI,IAAI,CAACkH,SAAS;IACpC,IAAMA,SAAS,GAAGmB,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,KAAK,CAACA,OAAO;MAAC;IACnE,IAAM6B,cAAc,GAAGT,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,KAAK,CAACA,OAAO;MAAC;IACxE,IAAIb,WAAW,GAAG2C,cAAc,EAAE;MAC9BX,YAAY,CAAAzW,QAAA,KACLqO,IAAI;QACPkH,SAAS,KAAApgB,MAAA,CACFgiB,cAAc,EACd5B,SAAS,CAACprB,GAAG,CAAC,UAAAosB,CAAC;UAAA,OAAAvW,QAAA,KACXuW,CAAC;YACJS,eAAe,EAAEI;;SACnB,CAAC;QAEV,CAAC;KACL,MAAM;MACHX,YAAY,CAAAzW,QAAA,KACLqO,IAAI;QACPkH,SAAS,KAAApgB,MAAA,CACFgiB,cAAc,EACd5B,SAAS,CAACprB,GAAG,CAAC,UAAAosB,CAAC;UAAA,OAAAvW,QAAA,KACXuW,CAAC;YACJS,eAAe,EAAEI,cAAc;YAC/BlC,cAAc,EAAEqB,CAAC,CAACrB,cAAc,CAAChrB,MAAM,CACnC,UAAAI,CAAC;cAAA,OAAIA,CAAC,IAAI8sB,cAAc;;;SAE9B,CAAC;QAEV,CAAC;;GAET;EAED,IAAMnB,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAC5BX,OAAe,EACf/W,KAAa,EACb8Y,MAAc;IAEd,IAAI,CAAChJ,IAAI,EAAE;IACX,IAAMqI,aAAa,GAAGrI,IAAI,CAACkH,SAAS;IACpC,IAAMA,SAAS,GAAGmB,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,KAAK,CAACA,OAAO;MAAC;IACnE,IAAM6B,cAAc,GAAGT,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,KAAK,CAACA,OAAO;MAAC;IACxE,IAAMgC,gBAAgB,GAAG/B,SAAS,CAAChX,KAAK,CAAC;IACzCkY,YAAY,CAAAzW,QAAA,KACLqO,IAAI;MACPkH,SAAS,KAAApgB,MAAA,CACFgiB,cAAc,EACd5B,SAAS,CAACzG,KAAK,CAAC,CAAC,EAAEvQ,KAAK,CAAC,GAAAyB,QAAA,KAErBsX,gBAAgB;QACnBpC,cAAc,EAAE,CAACmC,MAAM;WAExB9B,SAAS,CAACzG,KAAK,CAACvQ,KAAK,GAAG,CAAC,CAAC;MAEpC,CAAC;GACL;EAED,IAAM2X,uBAAuB,GAAG,SAA1BA,uBAAuBA,CACzBZ,OAAe,EACf/W,KAAa,EACb4W,KAAa;IAEb,IAAI,CAAC9G,IAAI,EAAE;IACX,IAAMqI,aAAa,GAAGrI,IAAI,CAACkH,SAAS;IACpC,IAAMA,SAAS,GAAGmB,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,KAAK,CAACA,OAAO;MAAC;IACnE,IAAM6B,cAAc,GAAGT,aAAa,CAACxsB,MAAM,CAAC,UAAAI,CAAC;MAAA,OAAIA,CAAC,CAACgrB,OAAO,KAAK,CAACA,OAAO;MAAC;IACxE,IAAMgC,gBAAgB,GAAG/B,SAAS,CAAChX,KAAK,CAAC;IACzC,IAAI4W,KAAK,KAAKmC,gBAAgB,CAACnC,KAAK,EAAE;IACtCsB,YAAY,CAAAzW,QAAA,KACLqO,IAAI;MACPkH,SAAS,KAAApgB,MAAA,CACFgiB,cAAc,EACd5B,SAAS,CAACzG,KAAK,CAAC,CAAC,EAAEvQ,KAAK,CAAC,GAAAyB,QAAA,KAErBsX,gBAAgB;QACnBnC,KAAK,EAALA;WAEDI,SAAS,CAACzG,KAAK,CAACvQ,KAAK,GAAG,CAAC,CAAC;MAEpC,CAAC;GACL;EAED,IAAMgZ,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAInf,KAAU;IACpC,IAAI,CAACiW,IAAI,EAAE;IACXoI,YAAY,CAAAzW,QAAA,KACLqO,IAAI;MACPmJ,QAAQ,EAAEpf,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEA;MACpB,CAAC;GACL;EAED,IAAMqf,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAI5mB,CAAgC;IACvD,IAAI,CAACwd,IAAI,EAAE;IACXoI,YAAY,CAAAzW,QAAA,KACLqO,IAAI;MACP7Y,KAAK,EAAE3E,CAAC,CAACsH,MAAM,CAACC;MACnB,CAAC;GACL;EAED,IAAMsf,gBAAgB,GAAG,SAAnBA,gBAAgBA;;IAClB,IAAI,CAACrJ,IAAI,EAAE;IACX,IAAMsJ,UAAU,GAAG,EAAAC,OAAA,GAAAxX,CAAC,CAACyX,KAAK,CAACxJ,IAAI,CAACkH,SAAS,EAAE,SAAS,CAAC,cAAAqC,OAAA,uBAAlCA,OAAA,CAAoCtC,OAAO,KAAI,CAAC;IACnE,IAAMwC,QAAQ,GAAI,EAAAC,QAAA,GAAA3X,CAAC,CAACyX,KAAK,CAACxJ,IAAI,CAACkH,SAAS,EAAE,eAAe,CAAC,cAAAwC,QAAA,uBAAxCA,QAAA,CAA0ClD,aAAa,KAAI,CAAC;IAC9E4B,YAAY,CAAAzW,QAAA,KACLqO,IAAI;MACPkH,SAAS,KAAApgB,MAAA,CACFkZ,IAAI,CAACkH,SAAS,GACjB;QACID,OAAO,EAAEqC,UAAU,GAAG,CAAC;QACvBzC,cAAc,EAAE,CAAC,CAAC,CAAC;QACnB8B,eAAe,EAAE1C,oBAAoB;QACrCa,KAAK,EAAEd,aAAa;QACpBQ,aAAa,EAAEiD,QAAQ,GAAG;OAC7B;MAER,CAAC;GACL;EAED,IAAME,kBAAkB,GAAmBra,aAAO,CAAC;IAC/C,IAAI,CAAC0Q,IAAI,EAAE,OAAO,EAAE;IACpB,IAAM4J,QAAQ,GAAG,EAAE;IACnB,IAAMC,cAAc,GAAG9X,CAAC,CAAC+X,OAAO,CAAC9J,IAAI,CAACkH,SAAS,EAAE,SAAS,CAAC;IAC3D,KAAK,IAAMhsB,GAAG,IAAI2uB,cAAc,EAAE;MAC9B,IAAIluB,MAAM,CAACouB,SAAS,CAACC,cAAc,CAACC,IAAI,CAACJ,cAAc,EAAE3uB,GAAG,CAAC,EAAE;QAAA,IAAAgvB,eAAA,EAAAC,QAAA;QAC3D,IAAMjD,SAAS,GAAe2C,cAAc,CAAC3uB,GAAG,CAAC;QACjD0uB,QAAQ,CAACQ,IAAI,CAAC;UACVnD,OAAO,EAAE,CAAC/rB,GAAG;UACbksB,UAAU,GAAA8C,eAAA,GAAEhD,SAAS,CAAChY,IAAI,CAAC,UAAAjT,CAAC;YAAA,OAAI,CAAC,CAACA,CAAC,CAACmrB,UAAU;YAAC,cAAA8C,eAAA,uBAAnCA,eAAA,CAAqC9C,UAAU;UAC3DhB,WAAW,EACP,EAAA+D,QAAA,GAAApY,CAAC,CAACyX,KAAK,CAACtC,SAAS,EAAE,iBAAiB,CAAC,cAAAiD,QAAA,uBAArCA,QAAA,CACMxB,eAAe,KAAI1C,oBAAoB;UACjDkB,aAAa,EAAED,SAAS,CAACnb,MAAM;UAC/Bmb,SAAS,EAATA;SACH,CAAC;;;IAGV,OAAOnV,CAAC,CAACsY,MAAM,CAACT,QAAQ,EAAE,SAAS,CAAC;GACvC,EAAE,CAAC/nB,IAAI,CAACC,SAAS,CAACke,IAAI,CAAC,CAAC,CAAC;EAE1B,IAAMsK,eAAe,GAAGhb,aAAO,CAAC;IAC5B,IAAM8C,OAAO,GAAGuT,gBAAgB,CAAC7pB,GAAG,CAAC,UAACG,CAAC;MAAA,OACnC;QACIsV,KAAK,EAAKtV,CAAC,WAAG;QACd8N,KAAK,EAAE9N;OACV;KACJ,CAAC;IACF,IAAG,CAAC,CAAC+jB,IAAI,CAACmJ,QAAQ,IAAInJ,IAAI,CAACmJ,QAAQ,GAAGxD,gBAAgB,CAACA,gBAAgB,CAAC5Z,MAAM,GAAG,CAAC,CAAC,EAAE,UAAAjF,MAAA,CAAWsL,OAAO,GAAE;MACrGb,KAAK,EAAKyO,IAAI,CAACmJ,QAAQ,WAAG;MAC1Bpf,KAAK,EAAEiW,IAAI,CAACmJ;KACf;IACD,OAAO/W,OAAO;GACjB,EAAE,CAAC4N,IAAI,CAACmJ,QAAQ,CAAC,CAAC;EAEnB,OAAO;IACHxW,CAAC,EAADA,CAAC;IACD2X,eAAe,EAAfA,eAAe;IACfX,kBAAkB,EAAlBA,kBAAkB;IAClBN,gBAAgB,EAAhBA,gBAAgB;IAChBxB,uBAAuB,EAAvBA,uBAAuB;IACvBuB,iBAAiB,EAAjBA,iBAAiB;IACjBF,oBAAoB,EAApBA,oBAAoB;IACpBtB,0BAA0B,EAA1BA,0BAA0B;IAC1BD,uBAAuB,EAAvBA,uBAAuB;IACvBF,yBAAyB,EAAzBA,yBAAyB;IACzBC,oBAAoB,EAApBA;GACH;AACL,CAAC;;ACtPD,IAAM6C,cAAc,GAA4B,SAA1CA,cAAcA,CAAArqB,IAAA;4BAChBgD,SAAS;IAATA,SAAS,GAAAsnB,cAAA,cAAG,EAAE,GAAAA,cAAA;IACdxD,eAAe,GAAA9mB,IAAA,CAAf8mB,eAAe;IACfhH,IAAI,GAAA9f,IAAA,CAAJ8f,IAAI;IAAAyK,eAAA,GAAAvqB,IAAA,CACJwqB,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,IAAI,GAAAA,eAAA;IACjBpY,UAAU,GAAAnS,IAAA,CAAVmS,UAAU;IACV+V,YAAY,GAAAloB,IAAA,CAAZkoB,YAAY;EAEZ,IAAAuC,kBAAA,GAYIxC,iBAAiB,CAAC;MAClBnI,IAAI,EAAJA,IAAI;MACJoI,YAAY,EAAZA;KACH,CAAC;IAdEzV,CAAC,GAAAgY,kBAAA,CAADhY,CAAC;IACD2X,eAAe,GAAAK,kBAAA,CAAfL,eAAe;IACfX,kBAAkB,GAAAgB,kBAAA,CAAlBhB,kBAAkB;IAClBN,gBAAgB,GAAAsB,kBAAA,CAAhBtB,gBAAgB;IAChBxB,uBAAuB,GAAA8C,kBAAA,CAAvB9C,uBAAuB;IACvBuB,iBAAiB,GAAAuB,kBAAA,CAAjBvB,iBAAiB;IACjBF,oBAAoB,GAAAyB,kBAAA,CAApBzB,oBAAoB;IACpBtB,0BAA0B,GAAA+C,kBAAA,CAA1B/C,0BAA0B;IAC1BD,uBAAuB,GAAAgD,kBAAA,CAAvBhD,uBAAuB;IACvBF,yBAAyB,GAAAkD,kBAAA,CAAzBlD,yBAAyB;IACzBC,oBAAoB,GAAAiD,kBAAA,CAApBjD,oBAAoB;EAMxB,OAAOhlB,6BAACO,cAAG;IAACC,SAAS,OAAKA;KACtBR,6BAACU,cAAG;IAACiC,EAAE,EAAE;KACL3C,6BAAC+jB,oBAAS,QACN/jB,6BAACgkB,gBAAK;IAACxjB,SAAS,OAAKC,QAAM,CAAC,gBAAgB,CAAG;IAAEwjB,OAAO,EAAC;KAAShU,CAAC,CAAC,OAAO,CAAC,CAAS,EACrFjQ,6BAAC+H,gBAAK;IAACU,QAAQ,EAAEkH,UAAU;IAAEnP,SAAS,uBAAqBC,QAAM,CAAC,gBAAgB,CAAG;IAAE4G,KAAK,EAAEiW,IAAI,CAAC7Y,KAAK;IAAEoM,EAAE,EAAC,OAAO;IAAC5I,WAAW,EAAEgI,CAAC,CAAC,aAAa,CAAC;IAAEjI,QAAQ,EAAE0e;IAAoB,CAC1K,CACV,EACN1mB,6BAACU,cAAG;IAACiC,EAAE,EAAE;KACL3C,6BAAC+jB,oBAAS,QACN/jB,6BAACgkB,gBAAK;IAACxjB,SAAS,OAAKC,QAAM,CAAC,gBAAgB,CAAG;IAAEwjB,OAAO,EAAC;KAAYhU,CAAC,CAAC,UAAU,CAAC,CAAS,EAC3FjQ,6BAACuP,YAAY;IACTgW,OAAO,EAAC,UAAU;IAClBle,KAAK,EAAEiW,IAAI,CAACmJ,QAAQ;IACpB/W,OAAO,EAAEkY,eAAe;IACxB5f,QAAQ,EAAEwe,oBAAoB;IAC9B7W,UAAU,EAAEA;IACd,CACM,CACV,EACN3P,6BAACU,cAAG;IAACiC,EAAE,EAAE;IAAS,EAEdskB,kBAAkB,CAAC7tB,GAAG,CAAC,UAACG,CAAe,EAAEiU,KAAa;IAAA,OAClDxN,6BAACU,cAAG;MAACiC,EAAE,EAAE,EAAE;MAAEnK,GAAG,EAAEe,CAAC,CAACgrB,OAAO;MAAE/jB,SAAS,GAAKgN,KAAK,KAAK,CAAC,IAAI,CAACwa,UAAU,GAAG,MAAM,GAAG,EAAE,WAAI,CAACA,UAAU,GAAG,MAAM,GAAG,EAAE;OAC5GhoB,6BAACqkB,gBAAgB,oBACT9qB,CAAC;MACL+qB,eAAe,EAAEA,eAAe;MAChCK,QAAQ,EAAEnX,KAAK,KAAKyZ,kBAAkB,CAAC5d,MAAM,GAAG,CAAC;MACjDub,qBAAqB,EAAEG,yBAAyB;MAChDF,gBAAgB,EAAEG,oBAAoB;MACtCF,mBAAmB,EAAEG,uBAAuB;MAC5CtB,sBAAsB,EAAEuB,0BAA0B;MAClDtB,mBAAmB,EAAEuB,uBAAuB;MAC5CxV,UAAU,EAAEA;OACd,CACA;GACT,CAAC,EAEN3P,6BAACU,cAAG;IAACiC,EAAE,EAAE;KACL3C,6BAACsI,iBAAM;IAACG,QAAQ,EAAEkH,UAAU;IAAEnP,SAAS,8DAA4DC,QAAM,CAAC,cAAc,CAAG;IAAE8H,KAAK,EAAC,SAAS;IAAC2f,OAAO;IAAC1f,OAAO,EAAEme;KAC1J3mB,6BAACmoB,eAAY;IAAC3nB,SAAS,EAAC;IAAQ,0CAE3B,CACP,CACJ;AACV,CAAC;;IC/EK4nB,WAAW,GAAGC,4BAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/redux/commons/action.ts","../src/utils/isLocalHost.ts","../src/utils/constants.ts","../src/utils/utcToLocalTime.ts","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../src/configs/api.ts","../src/containers/Login/apiClient/index.ts","../src/containers/Login/configs/constants.ts","../src/utils/useGoogleSignOut.ts","../src/containers/Login/views/block/BlockLogin.tsx","../src/utils/getAccessToken.ts","../src/containers/Login/hooks/useLogin.ts","../src/containers/Login/views/Login.tsx","../node_modules/redux-logger/dist/redux-logger.js","../node_modules/redux/dist/redux.legacy-esm.js","../src/redux/commons/reducer.ts","../src/rootReducer.ts","../src/store.ts","../src/components/Commons/NotFound.tsx","../src/components/Loading/Loading.tsx","../src/services/accountService.ts","../src/layouts/LayoutContext.tsx","../src/components/Dialogs/ConfirmDialog.tsx","../src/components/Dialogs/CommonDialog.tsx","../src/components/Alerts/CommonAlert.tsx","../src/utils/formatTime.ts","../src/utils/diffFromNow.ts","../src/components/Paginations/CustomPagination.tsx","../src/utils/types.ts","../src/i18n.ts","../src/configs/constants.ts","../src/utils/useLanguage.ts","../src/layouts/TheLanguageDropdown.tsx","../src/utils/minutesToTimeSpan.ts","../src/utils/toISOString.ts","../src/utils/canAccessRoute.ts","../src/components/Selects/CustomSelect.tsx","../src/components/Chats/configs/types.ts","../src/components/Chats/ChatRightItem.tsx","../src/components/Chats/ChatLeftItem.tsx","../src/components/Chats/ChatItem.tsx","../src/components/Chats/ChatList.tsx","../src/components/Chats/InputChat.tsx","../src/components/Chats/ChatHeader.tsx","../src/components/Chats/ChatContainer.tsx","../src/components/Chats/apiClient/conversationService.ts","../src/components/Chats/configs/constants.ts","../src/components/Chats/apiClient/examService.ts","../src/components/Chats/hooks/useExamList.ts","../src/components/Chats/hooks/useMessageList.ts","../src/components/Chats/hooks/useChatContainer.ts","../src/components/Chats/apiClient/studentStatusService.ts","../src/components/Chats/hooks/useConversationList.ts","../src/components/Chats/hooks/usePusherConversation.ts","../src/components/Selects/CustomCreatable.tsx","../src/components/Selects/CustomAsyncSelect.tsx","../src/containers/Exams/configs/constants.ts","../src/containers/Exams/components/QuestionView.tsx","../src/containers/Exams/components/ArticleGroupView.tsx","../src/containers/Exams/hooks/useExamDetailView.ts","../src/containers/Exams/views/ExamDetailView.tsx","../src/index.tsx"],"sourcesContent":["import { createAction } from \"@reduxjs/toolkit\"\n\nexport const setLoading = createAction<boolean | undefined>(\"common/setLoading\")\n\nexport const setAlert = createAction<any>(\"common/setAlert\")\n\nexport const setUser = createAction<any>(\"common/setUser\")\n\nexport const setLanguage = createAction<string>(\"common/setLanguage\")\n\nexport const reset = createAction<undefined>(\"common/reset\")\n","const isLocalHost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n)\n\nexport default isLocalHost\n","import isLocalHost from \"./isLocalHost\";\n\nexport const GOOGLE_RECAPTCHA_KEY = \"6LfNtLUaAAAAAL24lbBV11jS-gBtt1mhtxb4NXs0\"\n\nexport const GOOGLE_CLIENT_ID = \"64118819726-0qlur4qjrs9jbuu6rnoa0u91g680lmpg.apps.googleusercontent.com\"\n\nexport const GOOGLE_RECAPTCHA_ID = \"6LfNtLUaAAAAAL24lbBV11jS-gBtt1mhtxb4NXs0\";\n\nexport const GOOGLE_RECAPTCHA_SECRET = \"6LfNtLUaAAAAAC7zhleGzO61FgFwGF0H5FAsKYux\";\n\nexport const ACCESS_TOKEN = \"ACCESS_TOKEN\"\n\nexport const DATE_MIN_VALUE = \"0001-01-01T00:00:00+00:00\"\nexport const DATE_TIME_MIN_VALUE = \"0001-01-01T00:00:00\"\n\nexport const BASE_URL = (() => {\n return isLocalHost ? \"https://localhost:7045\" : \"https://api.studypeak.io\"\n})()\n\nexport const PUSHER_CONFIG = {\n cluster: \"ap1\",\n key: \"9018c77328885a14150b\"\n}\n\nexport const EXAM_CHANNEL = \"presence-exam-channel\"\nexport const EXAM_STUDENT_CHANNEL = \"EXAM-CHANNEL-{examCode}-STUDENT-{studentId}\"\n\n\nexport const getAccessToken = () => {\n try {\n return localStorage.getItem(ACCESS_TOKEN);\n } catch (err) {\n return null;\n }\n}\n\nexport const encodeParams = (params: any) => {\n return Object.keys(params)\n .filter(key => params[key] || params[key] === 0 || params[key] === false)\n .map(key => {\n if (Array.isArray(params[key])) {\n return params[key].map((i: any) => `${encodeURIComponent(key)}=${encodeURIComponent(i)}`).join('&')\n }\n return `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`\n }).join('&')\n}\n","import moment from \"moment\"\nimport { DATE_MIN_VALUE, DATE_TIME_MIN_VALUE } from \"../utils/constants\"\n\nexport default (time?: string, FORMAT?: string) => {\n if (time === DATE_MIN_VALUE || time === DATE_TIME_MIN_VALUE) return \"\"\n try {\n return moment.utc(time).local().format(FORMAT || \"yyyy-MM-DD\");\n } catch {\n return \"\"\n }\n}\n","// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","import axios, { AxiosInstance } from \"axios\"\nimport { ACCESS_TOKEN, BASE_URL, getAccessToken, encodeParams } from \"../utils/constants\"\nimport moment from \"moment\"\n\nexport const api: AxiosInstance = axios.create({\n baseURL: BASE_URL,\n timeout: 0,\n headers: {\n \"Content-Type\": \"application/json\"\n },\n paramsSerializer: params => {\n return encodeParams(params)\n }\n})\n\nexport const apiUpload: AxiosInstance = axios.create({\n baseURL: BASE_URL,\n timeout: 60000,\n headers: {\n \"Content-Type\": \"multipart/form-data\"\n }\n})\n;[api, apiUpload].forEach(i =>\n i.interceptors.request.use(\n (config: any) => {\n const token = getAccessToken()\n if (token) {\n config.headers.Authorization = `Bearer ${token}`\n localStorage.setItem(\"LAST_TIME_REQUETST\", moment().utc().format(\"YYYY-MM-DD HH:mm:ss\"))\n }\n return config\n },\n (error: any) => Promise.reject(error)\n )\n)\n;[api, apiUpload].forEach(i =>\n i.interceptors.response.use(\n response => {\n return response\n },\n error => {\n console.log({ error })\n if (error.response?.status === 401) {\n window.location.href = \"/login\"\n }\n if (error.response?.status == 403) {\n localStorage.removeItem(ACCESS_TOKEN)\n localStorage.removeItem(\"USER_EMAIL\")\n window.location.href = \"/login\"\n }\n return Promise.reject(error)\n }\n )\n)\n","import { api } from \"../../../configs/api\"\nimport { BASE_URL } from \"../../../utils/constants\"\n\nconst ACCOUNT_URL = `${BASE_URL}/api/account`\n\nexport const getGoogleClientId = () =>\n api.get(`${ACCOUNT_URL}/send-google`)\n\nexport const apiLoginGoogle = (body: any, role: string) => api.post(`${BASE_URL}/api/auth/${role}/login`, body)\n\n","export enum AuthenticationMessage {\n NotAllowedToRegister = \"NotAllowedToRegister\",\n InvalidGoogleToken = \"InvalidGoogleToken\"\n}\n\nexport enum Role {\n Student = \"Student\",\n Teacher = \"Teacher\",\n Admin = \"Admin\"\n}","import { useDispatch } from \"react-redux\";\nimport { ACCESS_TOKEN, GOOGLE_CLIENT_ID } from \"./constants\";\nimport { useGoogleLogout } from \"@leecheuk/react-google-login\"\nimport { reset } from \"../redux/commons/action\";\n\ninterface Props{\n onLogoutSuccess?: () => void\n onFailure?: () => void\n onNavigate: Function\n}\nconst useGoogleSignOut = (props: Props) => {\n const dispatch = useDispatch()\n const {\n onLogoutSuccess,\n onFailure\n } = props\n\n\n const handleLogoutSuccess = () => {\n onLogoutSuccess?.()\n }\n\n const handleLogoutFailure = () => {\n onFailure?.()\n }\n\n const { signOut, loaded } = useGoogleLogout({\n clientId: GOOGLE_CLIENT_ID,\n onLogoutSuccess: handleLogoutSuccess,\n onFailure: handleLogoutFailure,\n })\n\n const handleSignOut = () => {\n localStorage.removeItem(\"USER_INFORMATION\")\n localStorage.removeItem(ACCESS_TOKEN);\n try {\n signOut()\n } catch (error) {\n console.log({error});\n }\n dispatch(reset())\n window.location.href = \"/login\"\n }\n return {\n handleSignOut, loaded\n }\n}\n\nexport default useGoogleSignOut","import React, { FC } from \"react\"\nimport { Col, Form, Row } from \"reactstrap\"\nimport styles from \"../../../../styles.module.scss\"\n\nimport { ACCESS_TOKEN, GOOGLE_CLIENT_ID } from \"../../../../utils/constants\"\nimport { Formik } from \"formik\"\nimport * as yup from \"yup\"\n// import { GoogleReCaptcha, useGoogleReCaptcha } from \"react-google-recaptcha-v3\"\nimport GoogleLogin from \"@leecheuk/react-google-login\"\nimport { INavigateProps } from \"../../../../utils/types\"\nimport { apiLoginGoogle } from \"../../apiClient/index\"\nimport { useDispatch } from \"react-redux\"\nimport { setLoading } from \"../../../../redux/commons/action\"\nimport { AuthenticationMessage, Role } from \"../../configs/constants\"\nimport useGoogleSignOut from \"../../../../utils/useGoogleSignOut\"\n\ninterface Props {\n defaultInfo?: any\n role?: Role\n}\n\nconst ERROR_MESSAGE = \"Login fail!\"\n\nconst schema = yup.object({\n email: yup.string().email(\"Email is invalid\").required(\"Email is required\"),\n password: yup.string().required(\"Password is required\"),\n rememberMe: yup.boolean()\n})\n\nconst BlockLogin: FC<Props & INavigateProps> = ({\n defaultInfo,\n onNavigate,\n role = Role.Student\n}) => {\n const dispatch = useDispatch()\n // const { executeRecaptcha, } = useGoogleReCaptcha()\n const {\n handleSignOut\n } = useGoogleSignOut({onNavigate})\n // const clickHandler = useCallback(async () => {\n // if (!executeRecaptcha) {\n // return\n // }\n // try {\n // const result = await executeRecaptcha(\"login\")\n // return result\n // } catch (error) {\n // console.log({error});\n // }\n // return\n // }, [executeRecaptcha])\n\n // const handleVerify = useCallback(() => {}, [])\n const onSuccessGoogle = async (res: any) => {\n if (!!res?.accessToken) {\n let {\n email,\n imageUrl,\n name // fullName\n } = res.profileObj\n let accessToken = res.tokenObj.id_token\n let googleId = res.googleId\n\n const infoLogin = {\n imageUrl: imageUrl,\n fullName: name,\n email: email,\n token: accessToken,\n googleId: googleId\n }\n dispatch(setLoading(true))\n try {\n const res1 = await apiLoginGoogle(infoLogin, role)\n const isFirstLogin = res1.data.isFirstLogin\n const tokenJWT = res1.data.token\n localStorage.setItem(\n \"USER_INFORMATION\",\n JSON.stringify(infoLogin)\n )\n \n localStorage.setItem(ACCESS_TOKEN, tokenJWT)\n if (role === Role.Student && isFirstLogin) {\n onNavigate(\"/register/info\")\n }else{\n onNavigate(\"/\")\n }\n } catch (error) {\n let message = undefined\n const type = error?.response?.data?.type\n \n if(type === AuthenticationMessage.NotAllowedToRegister){\n alert(\"가입 권한이 없는 계정입니다. 관리자에게 문의하세요.\")\n }\n else if(type){\n message = error?.response?.data?.message || ERROR_MESSAGE\n }else{\n message = error?.response?.data || ERROR_MESSAGE\n }\n message && alert(message)\n handleSignOut()\n }\n dispatch(setLoading(false))\n }\n }\n\n const onFailureGoogle = (err: any) => {\n console.log(\"error: login google\", err)\n onNavigate(\"/login\")\n }\n return (\n <Formik\n initialValues={defaultInfo}\n validationSchema={schema}\n onSubmit={() => {}}\n >\n {formikProps => {\n const { handleSubmit } = formikProps\n\n return (\n <Row className={`${styles[\"box-login\"]}`}>\n <Col className=\"p-0 d-flex justify-content-center\">\n <Form\n className={`${styles[\"block-login\"]}`}\n onSubmit={handleSubmit}\n >\n <div className={`${styles[\"block-form\"]}`}>\n <img\n src={\"/images/logo.jpeg\"}\n className={`${styles[\"img-login-rectangle\"]}`}\n />\n {/* <FormGroup>\n <GoogleReCaptcha\n action=\"login\"\n onVerify={handleVerify}\n />\n </FormGroup> */}\n <Col className=\"p-0 mt-1 mb-4\">\n <GoogleLogin\n clientId={GOOGLE_CLIENT_ID}\n buttonText=\"Google 계정으로 로그인\"\n onSuccess={onSuccessGoogle}\n onFailure={onFailureGoogle}\n cookiePolicy={\"single_host_origin\"}\n className={`${styles[\"btn-login-google\"]}`}\n isSignedIn={true}\n />\n </Col>\n </div>\n </Form>\n </Col>\n </Row>\n )\n }}\n </Formik>\n )\n}\n\nexport default BlockLogin\n","import { ACCESS_TOKEN } from \"./constants\"\n\nexport default () => {\n try {\n return localStorage.getItem(ACCESS_TOKEN);\n } catch (err) {\n return null;\n }\n}","import { useCallback, useEffect, useState } from \"react\"\nimport { gapi } from 'gapi-script';\nimport { GOOGLE_CLIENT_ID } from \"../../../utils/constants\"\nimport getAccessToken from \"../../../utils/getAccessToken\";\n\ntype LoginInfo = {\n email: string\n password: string\n captcha: string\n rememberMe: boolean\n}\n\nconst defaultInfo: LoginInfo = {\n email: \"\",\n password: \"\",\n captcha: \"\",\n rememberMe: false\n}\n\nconst useLogin = (onNavigate: Function) => {\n const [openLogin, setOpenLogin] = useState<boolean>(false)\n const [infoUser, setInfoUser] = useState<any>();\n const toggle = useCallback(() => {\n setOpenLogin(!openLogin)\n }, [openLogin])\n const [isShowPassword, setIsShowPassword] = useState<boolean>(false)\n\n useEffect(() => {\n const start = () => {\n gapi.client.init({\n clientId: GOOGLE_CLIENT_ID,\n scope: 'email',\n });\n }\n \n !!gapi && gapi.load('client:auth2', start);\n }, [gapi]);\n\n useEffect(() => {\n const token = getAccessToken()\n if(!!token) onNavigate(\"/\")\n }, [])\n\n return {\n defaultInfo,\n openLogin,\n toggle,\n isShowPassword,\n setIsShowPassword,\n infoUser,\n setInfoUser\n }\n}\n\nexport default useLogin\n","import React, { FC } from \"react\"\n// import { GoogleReCaptchaProvider } from \"react-google-recaptcha-v3\"\nimport { Col, Row } from \"reactstrap\"\n\n// import { GOOGLE_RECAPTCHA_ID } from \"../../../utils/constants\"\nimport BlockLogin from \"./block/BlockLogin\"\nimport useLogin from \"../hooks/useLogin\"\nimport styles from \"../../../styles.module.scss\"\nimport { INavigateProps } from \"../../../utils/types\"\nimport { Role } from \"../configs/constants\"\n\ninterface Props{\n role?: Role\n}\nconst Login: FC<INavigateProps & Props> = ({ onNavigate, role }) => {\n const { defaultInfo } = useLogin(onNavigate)\n return (\n <div className={`${styles[\"login\"]} container-fluid font-family-lato`}>\n <Row className={\"h-100\"}>\n <Col\n lg={12}\n md={12}\n xs={12}\n className=\"d-flex justify-content-center h-100 align-items-center\"\n >\n {/* <GoogleReCaptchaProvider\n useRecaptchaNet\n reCaptchaKey={GOOGLE_RECAPTCHA_ID}\n scriptProps={{\n async: true,\n defer: true,\n appendTo: \"body\"\n }}\n > */}\n <BlockLogin\n defaultInfo={defaultInfo}\n onNavigate={onNavigate}\n role={role}\n />\n {/* </GoogleReCaptchaProvider> */}\n </Col>\n </Row>\n </div>\n )\n}\n\nexport default Login\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t(e.reduxLogger=e.reduxLogger||{})}(this,function(e){\"use strict\";function t(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}function r(e,t){Object.defineProperty(this,\"kind\",{value:e,enumerable:!0}),t&&t.length&&Object.defineProperty(this,\"path\",{value:t,enumerable:!0})}function n(e,t,r){n.super_.call(this,\"E\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0}),Object.defineProperty(this,\"rhs\",{value:r,enumerable:!0})}function o(e,t){o.super_.call(this,\"N\",e),Object.defineProperty(this,\"rhs\",{value:t,enumerable:!0})}function i(e,t){i.super_.call(this,\"D\",e),Object.defineProperty(this,\"lhs\",{value:t,enumerable:!0})}function a(e,t,r){a.super_.call(this,\"A\",e),Object.defineProperty(this,\"index\",{value:t,enumerable:!0}),Object.defineProperty(this,\"item\",{value:r,enumerable:!0})}function f(e,t,r){var n=e.slice((r||t)+1||e.length);return e.length=t<0?e.length+t:t,e.push.apply(e,n),e}function u(e){var t=\"undefined\"==typeof e?\"undefined\":N(e);return\"object\"!==t?t:e===Math?\"math\":null===e?\"null\":Array.isArray(e)?\"array\":\"[object Date]\"===Object.prototype.toString.call(e)?\"date\":\"function\"==typeof e.toString&&/^\\/.*\\//.test(e.toString())?\"regexp\":\"object\"}function l(e,t,r,c,s,d,p){s=s||[],p=p||[];var g=s.slice(0);if(\"undefined\"!=typeof d){if(c){if(\"function\"==typeof c&&c(g,d))return;if(\"object\"===(\"undefined\"==typeof c?\"undefined\":N(c))){if(c.prefilter&&c.prefilter(g,d))return;if(c.normalize){var h=c.normalize(g,d,e,t);h&&(e=h[0],t=h[1])}}}g.push(d)}\"regexp\"===u(e)&&\"regexp\"===u(t)&&(e=e.toString(),t=t.toString());var y=\"undefined\"==typeof e?\"undefined\":N(e),v=\"undefined\"==typeof t?\"undefined\":N(t),b=\"undefined\"!==y||p&&p[p.length-1].lhs&&p[p.length-1].lhs.hasOwnProperty(d),m=\"undefined\"!==v||p&&p[p.length-1].rhs&&p[p.length-1].rhs.hasOwnProperty(d);if(!b&&m)r(new o(g,t));else if(!m&&b)r(new i(g,e));else if(u(e)!==u(t))r(new n(g,e,t));else if(\"date\"===u(e)&&e-t!==0)r(new n(g,e,t));else if(\"object\"===y&&null!==e&&null!==t)if(p.filter(function(t){return t.lhs===e}).length)e!==t&&r(new n(g,e,t));else{if(p.push({lhs:e,rhs:t}),Array.isArray(e)){var w;e.length;for(w=0;w<e.length;w++)w>=t.length?r(new a(g,w,new i(void 0,e[w]))):l(e[w],t[w],r,c,g,w,p);for(;w<t.length;)r(new a(g,w,new o(void 0,t[w++])))}else{var x=Object.keys(e),S=Object.keys(t);x.forEach(function(n,o){var i=S.indexOf(n);i>=0?(l(e[n],t[n],r,c,g,n,p),S=f(S,i)):l(e[n],void 0,r,c,g,n,p)}),S.forEach(function(e){l(void 0,t[e],r,c,g,e,p)})}p.length=p.length-1}else e!==t&&(\"number\"===y&&isNaN(e)&&isNaN(t)||r(new n(g,e,t)))}function c(e,t,r,n){return n=n||[],l(e,t,function(e){e&&n.push(e)},r),n.length?n:void 0}function s(e,t,r){if(r.path&&r.path.length){var n,o=e[t],i=r.path.length-1;for(n=0;n<i;n++)o=o[r.path[n]];switch(r.kind){case\"A\":s(o[r.path[n]],r.index,r.item);break;case\"D\":delete o[r.path[n]];break;case\"E\":case\"N\":o[r.path[n]]=r.rhs}}else switch(r.kind){case\"A\":s(e[t],r.index,r.item);break;case\"D\":e=f(e,t);break;case\"E\":case\"N\":e[t]=r.rhs}return e}function d(e,t,r){if(e&&t&&r&&r.kind){for(var n=e,o=-1,i=r.path?r.path.length-1:0;++o<i;)\"undefined\"==typeof n[r.path[o]]&&(n[r.path[o]]=\"number\"==typeof r.path[o]?[]:{}),n=n[r.path[o]];switch(r.kind){case\"A\":s(r.path?n[r.path[o]]:n,r.index,r.item);break;case\"D\":delete n[r.path[o]];break;case\"E\":case\"N\":n[r.path[o]]=r.rhs}}}function p(e,t,r){if(r.path&&r.path.length){var n,o=e[t],i=r.path.length-1;for(n=0;n<i;n++)o=o[r.path[n]];switch(r.kind){case\"A\":p(o[r.path[n]],r.index,r.item);break;case\"D\":o[r.path[n]]=r.lhs;break;case\"E\":o[r.path[n]]=r.lhs;break;case\"N\":delete o[r.path[n]]}}else switch(r.kind){case\"A\":p(e[t],r.index,r.item);break;case\"D\":e[t]=r.lhs;break;case\"E\":e[t]=r.lhs;break;case\"N\":e=f(e,t)}return e}function g(e,t,r){if(e&&t&&r&&r.kind){var n,o,i=e;for(o=r.path.length-1,n=0;n<o;n++)\"undefined\"==typeof i[r.path[n]]&&(i[r.path[n]]={}),i=i[r.path[n]];switch(r.kind){case\"A\":p(i[r.path[n]],r.index,r.item);break;case\"D\":i[r.path[n]]=r.lhs;break;case\"E\":i[r.path[n]]=r.lhs;break;case\"N\":delete i[r.path[n]]}}}function h(e,t,r){if(e&&t){var n=function(n){r&&!r(e,t,n)||d(e,t,n)};l(e,t,n)}}function y(e){return\"color: \"+F[e].color+\"; font-weight: bold\"}function v(e){var t=e.kind,r=e.path,n=e.lhs,o=e.rhs,i=e.index,a=e.item;switch(t){case\"E\":return[r.join(\".\"),n,\"→\",o];case\"N\":return[r.join(\".\"),o];case\"D\":return[r.join(\".\")];case\"A\":return[r.join(\".\")+\"[\"+i+\"]\",a];default:return[]}}function b(e,t,r,n){var o=c(e,t);try{n?r.groupCollapsed(\"diff\"):r.group(\"diff\")}catch(e){r.log(\"diff\")}o?o.forEach(function(e){var t=e.kind,n=v(e);r.log.apply(r,[\"%c \"+F[t].text,y(t)].concat(P(n)))}):r.log(\"—— no diff ——\");try{r.groupEnd()}catch(e){r.log(\"—— diff end —— \")}}function m(e,t,r,n){switch(\"undefined\"==typeof e?\"undefined\":N(e)){case\"object\":return\"function\"==typeof e[n]?e[n].apply(e,P(r)):e[n];case\"function\":return e(t);default:return e}}function w(e){var t=e.timestamp,r=e.duration;return function(e,n,o){var i=[\"action\"];return i.push(\"%c\"+String(e.type)),t&&i.push(\"%c@ \"+n),r&&i.push(\"%c(in \"+o.toFixed(2)+\" ms)\"),i.join(\" \")}}function x(e,t){var r=t.logger,n=t.actionTransformer,o=t.titleFormatter,i=void 0===o?w(t):o,a=t.collapsed,f=t.colors,u=t.level,l=t.diff,c=\"undefined\"==typeof t.titleFormatter;e.forEach(function(o,s){var d=o.started,p=o.startedTime,g=o.action,h=o.prevState,y=o.error,v=o.took,w=o.nextState,x=e[s+1];x&&(w=x.prevState,v=x.started-d);var S=n(g),k=\"function\"==typeof a?a(function(){return w},g,o):a,j=D(p),E=f.title?\"color: \"+f.title(S)+\";\":\"\",A=[\"color: gray; font-weight: lighter;\"];A.push(E),t.timestamp&&A.push(\"color: gray; font-weight: lighter;\"),t.duration&&A.push(\"color: gray; font-weight: lighter;\");var O=i(S,j,v);try{k?f.title&&c?r.groupCollapsed.apply(r,[\"%c \"+O].concat(A)):r.groupCollapsed(O):f.title&&c?r.group.apply(r,[\"%c \"+O].concat(A)):r.group(O)}catch(e){r.log(O)}var N=m(u,S,[h],\"prevState\"),P=m(u,S,[S],\"action\"),C=m(u,S,[y,h],\"error\"),F=m(u,S,[w],\"nextState\");if(N)if(f.prevState){var L=\"color: \"+f.prevState(h)+\"; font-weight: bold\";r[N](\"%c prev state\",L,h)}else r[N](\"prev state\",h);if(P)if(f.action){var T=\"color: \"+f.action(S)+\"; font-weight: bold\";r[P](\"%c action \",T,S)}else r[P](\"action \",S);if(y&&C)if(f.error){var M=\"color: \"+f.error(y,h)+\"; font-weight: bold;\";r[C](\"%c error \",M,y)}else r[C](\"error \",y);if(F)if(f.nextState){var _=\"color: \"+f.nextState(w)+\"; font-weight: bold\";r[F](\"%c next state\",_,w)}else r[F](\"next state\",w);l&&b(h,w,r,k);try{r.groupEnd()}catch(e){r.log(\"—— log end ——\")}})}function S(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign({},L,e),r=t.logger,n=t.stateTransformer,o=t.errorTransformer,i=t.predicate,a=t.logErrors,f=t.diffPredicate;if(\"undefined\"==typeof r)return function(){return function(e){return function(t){return e(t)}}};if(e.getState&&e.dispatch)return console.error(\"[redux-logger] redux-logger not installed. Make sure to pass logger instance as middleware:\\n// Logger with default options\\nimport { logger } from 'redux-logger'\\nconst store = createStore(\\n reducer,\\n applyMiddleware(logger)\\n)\\n// Or you can create your own logger with custom options http://bit.ly/redux-logger-options\\nimport createLogger from 'redux-logger'\\nconst logger = createLogger({\\n // ...options\\n});\\nconst store = createStore(\\n reducer,\\n applyMiddleware(logger)\\n)\\n\"),function(){return function(e){return function(t){return e(t)}}};var u=[];return function(e){var r=e.getState;return function(e){return function(l){if(\"function\"==typeof i&&!i(r,l))return e(l);var c={};u.push(c),c.started=O.now(),c.startedTime=new Date,c.prevState=n(r()),c.action=l;var s=void 0;if(a)try{s=e(l)}catch(e){c.error=o(e)}else s=e(l);c.took=O.now()-c.started,c.nextState=n(r());var d=t.diff&&\"function\"==typeof f?f(r,l):t.diff;if(x(u,Object.assign({},t,{diff:d})),u.length=0,c.error)throw c.error;return s}}}}var k,j,E=function(e,t){return new Array(t+1).join(e)},A=function(e,t){return E(\"0\",t-e.toString().length)+e},D=function(e){return A(e.getHours(),2)+\":\"+A(e.getMinutes(),2)+\":\"+A(e.getSeconds(),2)+\".\"+A(e.getMilliseconds(),3)},O=\"undefined\"!=typeof performance&&null!==performance&&\"function\"==typeof performance.now?performance:Date,N=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},P=function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)},C=[];k=\"object\"===(\"undefined\"==typeof global?\"undefined\":N(global))&&global?global:\"undefined\"!=typeof window?window:{},j=k.DeepDiff,j&&C.push(function(){\"undefined\"!=typeof j&&k.DeepDiff===c&&(k.DeepDiff=j,j=void 0)}),t(n,r),t(o,r),t(i,r),t(a,r),Object.defineProperties(c,{diff:{value:c,enumerable:!0},observableDiff:{value:l,enumerable:!0},applyDiff:{value:h,enumerable:!0},applyChange:{value:d,enumerable:!0},revertChange:{value:g,enumerable:!0},isConflict:{value:function(){return\"undefined\"!=typeof j},enumerable:!0},noConflict:{value:function(){return C&&(C.forEach(function(e){e()}),C=null),c},enumerable:!0}});var F={E:{color:\"#2196F3\",text:\"CHANGED:\"},N:{color:\"#4CAF50\",text:\"ADDED:\"},D:{color:\"#F44336\",text:\"DELETED:\"},A:{color:\"#2196F3\",text:\"ARRAY:\"}},L={level:\"log\",logger:console,logErrors:!0,collapsed:void 0,predicate:void 0,duration:!1,timestamp:!0,stateTransformer:function(e){return e},actionTransformer:function(e){return e},errorTransformer:function(e){return e},colors:{title:function(){return\"inherit\"},prevState:function(){return\"#9E9E9E\"},action:function(){return\"#03A9F4\"},nextState:function(){return\"#4CAF50\"},error:function(){return\"#F20404\"}},diff:!1,diffPredicate:void 0,transformer:void 0},T=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.dispatch,r=e.getState;return\"function\"==typeof t||\"function\"==typeof r?S()({dispatch:t,getState:r}):void console.error(\"\\n[redux-logger v3] BREAKING CHANGE\\n[redux-logger v3] Since 3.0.0 redux-logger exports by default logger with default settings.\\n[redux-logger v3] Change\\n[redux-logger v3] import createLogger from 'redux-logger'\\n[redux-logger v3] to\\n[redux-logger v3] import { createLogger } from 'redux-logger'\\n\")};e.defaults=L,e.createLogger=S,e.logger=T,e.default=T,Object.defineProperty(e,\"__esModule\",{value:!0})});\n","// src/utils/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n// src/utils/symbol-observable.ts\nvar $$observable = /* @__PURE__ */ (() => typeof Symbol === \"function\" && Symbol.observable || \"@@observable\")();\nvar symbol_observable_default = $$observable;\n\n// src/utils/actionTypes.ts\nvar randomString = () => Math.random().toString(36).substring(7).split(\"\").join(\".\");\nvar ActionTypes = {\n INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,\n REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nvar actionTypes_default = ActionTypes;\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null)\n return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}\n\n// src/utils/kindOf.ts\nfunction miniKindOf(val) {\n if (val === void 0)\n return \"undefined\";\n if (val === null)\n return \"null\";\n const type = typeof val;\n switch (type) {\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\": {\n return type;\n }\n }\n if (Array.isArray(val))\n return \"array\";\n if (isDate(val))\n return \"date\";\n if (isError(val))\n return \"error\";\n const constructorName = ctorName(val);\n switch (constructorName) {\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n }\n return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n if (val instanceof Date)\n return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n let typeOfVal = typeof val;\n if (process.env.NODE_ENV !== \"production\") {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n\n// src/createStore.ts\nfunction createStore(reducer, preloadedState, enhancer) {\n if (typeof reducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = void 0;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n let currentReducer = reducer;\n let currentState = preloadedState;\n let currentListeners = /* @__PURE__ */ new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = /* @__PURE__ */ new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== \"string\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach((listener) => {\n listener();\n });\n return action;\n }\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = nextReducer;\n dispatch({\n type: actionTypes_default.REPLACE\n });\n }\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = observer;\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [symbol_observable_default]() {\n return this;\n }\n };\n }\n dispatch({\n type: actionTypes_default.INIT\n });\n const store = {\n dispatch,\n subscribe,\n getState,\n replaceReducer,\n [symbol_observable_default]: observable\n };\n return store;\n}\nfunction legacy_createStore(reducer, preloadedState, enhancer) {\n return createStore(reducer, preloadedState, enhancer);\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/combineReducers.ts\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === actionTypes_default.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n if (reducerKeys.length === 0) {\n return \"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach((key) => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === actionTypes_default.REPLACE)\n return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? \"keys\" : \"key\"} \"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. Expected to find one of the known reducer keys instead: \"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach((key) => {\n const reducer = reducers[key];\n const initialState = reducer(void 0, {\n type: actionTypes_default.INIT\n });\n if (typeof initialState === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n if (typeof reducer(void 0, {\n type: actionTypes_default.PROBE_UNKNOWN_ACTION()\n }) === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\nfunction combineReducers(reducers) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducers[key] === \"undefined\") {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === \"function\") {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n let unexpectedKeyCache;\n if (process.env.NODE_ENV !== \"production\") {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state = {}, action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== \"production\") {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === \"undefined\") {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : \"(unknown type)\"}, the slice reducer for key \"${key}\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\n// src/bindActionCreators.ts\nfunction bindActionCreator(actionCreator, dispatch) {\n return function(...args) {\n return dispatch(actionCreator.apply(this, args));\n };\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n// src/compose.ts\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\n// src/applyMiddleware.ts\nfunction applyMiddleware(...middlewares) {\n return (createStore2) => (reducer, preloadedState) => {\n const store = createStore2(reducer, preloadedState);\n let dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n };\n const middlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map((middleware) => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}\n\n// src/utils/isAction.ts\nfunction isAction(action) {\n return isPlainObject(action) && \"type\" in action && typeof action.type === \"string\";\n}\nexport {\n actionTypes_default as __DO_NOT_USE__ActionTypes,\n applyMiddleware,\n bindActionCreators,\n combineReducers,\n compose,\n createStore,\n isAction,\n isPlainObject,\n legacy_createStore\n};\n//# sourceMappingURL=redux.mjs.map","import { createReducer } from \"@reduxjs/toolkit\"\n\nimport {\n setLoading,\n setAlert,\n setUser,\n setLanguage,\n reset\n} from \"./action\"\n\nconst initialState: any = {\n isLoading: false,\n alert: {\n type: \"\",\n message: \"\"\n },\n user: null\n}\n\n\nconst commonReducer = createReducer(initialState, builder => {\n builder\n .addCase(setLoading, (state, action) => {\n state.isLoading = action.payload\n })\n .addCase(setAlert, (state, action) => {\n state.alert = action.payload\n })\n .addCase(setUser, (state, action) => {\n state.user = action.payload\n })\n .addCase(setLanguage, (state, action) => {\n state.language = action.payload\n })\n .addCase(reset, (_state, _action) => {\n return initialState\n })\n})\n\nexport default commonReducer","import { combineReducers } from \"redux\"\n\nimport common from \"./redux/commons/reducer\"\n\nconst rootReducer = combineReducers({\n common\n})\n\nexport default rootReducer\n","import { configureStore } from \"@reduxjs/toolkit\"\nimport logger from \"redux-logger\"\n\nimport rootReducer from \"./rootReducer\"\n\nconst store = configureStore({\n reducer: rootReducer,\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware({ serializableCheck: false }).concat(logger)\n})\n\nexport default store\n","import React, { FC, useEffect } from \"react\"\n\nconst TITLE = \"Not found\"\nconst NotFound: FC = () => {\n useEffect(() => {\n document.title = TITLE\n })\n return (\n <div className=\"not-found d-flex justify-content-center\">\n <div className=\"clearfix pt-5\">\n <h1 className=\"float-left display-3 fw-bold mr-4 text-center\">404</h1>\n <div className=\"float-left\">\n <h4 className=\"pt-3\">Oops! You are lost.</h4>\n <p className=\"text-muted mb-2\">\n The page you are looking for was not found.\n </p>\n <div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\nexport default NotFound\n","import React, { FC, CSSProperties } from \"react\"\nimport { useSelector } from \"react-redux\"\nimport moment from \"moment\"\n\nconst loadingStyle: CSSProperties = {\n minWidth: \"100vw\",\n minHeight: \"100vh\",\n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 999999999,\n backgroundColor: \"rgba(0, 0, 0, 0.4)\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n}\n\nconst Loading: FC = () => {\n const isLoading = useSelector((state: any) => state.common.isLoading)\n localStorage.setItem(\"LAST_TIME_REQUETST\", moment().utc().format(\"YYYY-MM-DD HH:mm:ss\"))\n return isLoading ? (\n <div style={loadingStyle}>\n <div className=\"spinner-border text-secondary\" role=\"status\">\n <span className=\"sr-only\"></span>\n </div>\n </div>\n ) : null\n}\n\nexport default Loading","import { api } from \"../configs/api\"\nimport { BASE_URL } from \"../utils/constants\"\n\nconst AUTH_URL = `${BASE_URL}/api/auth`\n\nexport const getInfo = () => api.get(`${AUTH_URL}/info`)","import React, { FC, Fragment, PropsWithChildren, useCallback, useEffect } from \"react\"\nimport { getAccessToken } from \"../utils/constants\"\nimport { useDispatch, useSelector } from \"react-redux\"\nimport { setLoading, setUser } from \"../redux/commons/action\"\nimport { getInfo } from \"../services/accountService\"\nimport useGoogleSignOut from \"../utils/useGoogleSignOut\"\n\ninterface Props {\n onNavigate: (pathname: string) => void\n role: string\n}\n\nconst LayoutContext: FC<Props & PropsWithChildren> = ({\n children,\n role,\n onNavigate\n}) => {\n const {\n handleSignOut\n } = useGoogleSignOut({onNavigate})\n\n const dispatch = useDispatch()\n const user = useSelector((state: any) => state?.common?.user)\n const roles = user?.roles || []\n const resetAuth = () => {\n handleSignOut()\n }\n\n const checkRoleUser = useCallback(() => {\n if(!user) return\n if(!roles.includes(role))\n {\n alert(`${user.email} not allow to register ${role}`)\n resetAuth()\n }\n }, [role, JSON.stringify(user)])\n\n const loadInfo = async () => {\n const token = getAccessToken()\n if(!token) {\n resetAuth()\n return\n }\n dispatch(setLoading(true))\n try {\n const info = await getInfo()\n if (!info) {\n resetAuth()\n }\n dispatch(setUser(info.data))\n } catch (err) {\n console.log({err});\n role === \"Student\" ? alert(\"학생, 다시 로그인해주세요.\") : alert(\"선생님, 다시 로그인해주세요.\")\n resetAuth()\n }\n dispatch(setLoading(false))\n }\n useEffect(() => {\n !user && loadInfo()\n !!user && checkRoleUser()\n }, [JSON.stringify(user)])\n\n return <Fragment>{children}</Fragment>\n}\n\nexport default LayoutContext\n","import React, { ChangeEvent, FC, useEffect, useState } from \"react\"\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input } from \"reactstrap\"\n\ninterface Props {\n text: string\n cancelText?: string\n okText?: string\n onConfirm: () => void\n open: boolean\n toggle: () => void\n isDelete?: boolean\n title?: string\n confirmText?: string\n}\nexport const ConfirmDialog: FC<Props> = ({\n open,\n text,\n cancelText = \"No\",\n okText = \"Yes\",\n isDelete,\n title = \"Confirmation\",\n toggle,\n onConfirm,\n confirmText\n}) => {\n const [confirmTextValue, setConfirmTextValue] = useState<string>()\n const handleConfirm = () => {\n onConfirm()\n }\n const handleChangeConfirmText = (e: ChangeEvent<HTMLInputElement>) => {\n setConfirmTextValue(e.target.value)\n }\n const handlePaste = (e: any) => {\n e.preventDefault()\n }\n\n useEffect(() => {\n !open && setConfirmTextValue(undefined)\n }, [open])\n const isValid = !!confirmText && !!confirmTextValue && confirmTextValue.trim() === confirmText.trim()\n return (\n <Modal isOpen={open} toggle={toggle} centered zIndex={1102}>\n <ModalHeader toggle={toggle}>{title}</ModalHeader>\n <ModalBody>\n <p><strong>{text}</strong></p>\n {\n !!confirmText &&\n <div>\n <p>Enter \"<strong>{confirmText}</strong>\" to confirm delete</p>\n <Input\n value={confirmTextValue} onChange={handleChangeConfirmText}\n placeholder=\"Please enter...\"\n onPaste={handlePaste}\n invalid={!isValid && confirmTextValue !== undefined}\n valid={isValid}\n />\n </div>\n }\n </ModalBody>\n <ModalFooter>\n <Button\n color=\"secondary\"\n className=\"px-3\"\n onClick={toggle}>\n {cancelText}\n </Button>\n <Button\n color={isDelete ? \"danger\" : \"primary\"}\n className=\"px-3\"\n disabled={!!confirmText && confirmTextValue?.trim() !== confirmText.trim()}\n onClick={handleConfirm}\n >\n {okText}\n </Button>\n </ModalFooter>\n </Modal>\n )\n}\n","import { FC, PropsWithChildren } from \"react\"\nimport { Modal, ModalHeader } from \"reactstrap\"\nimport React from \"react\"\n\ninterface Props {\n open: boolean\n onClose: () => void\n centered?: boolean\n title: string\n size?: \"xs\" | \"lg\" | \"xl\"\n backdrop?: boolean | \"static\"\n}\n\nconst CommonDialog: FC<Props & PropsWithChildren> = ({\n open,\n children,\n centered,\n title,\n size = \"xs\",\n onClose,\n backdrop\n}) => {\n return (\n <Modal backdrop={backdrop} isOpen={open} toggle={onClose} centered={centered} size={size} zIndex={1102}>\n <ModalHeader toggle={onClose}>{title}</ModalHeader>\n {children}\n </Modal>\n )\n}\n\nexport default CommonDialog\n","import React, { FC, useRef, useEffect } from \"react\"\nimport { useSelector, useDispatch } from \"react-redux\"\nimport { Alert } from \"reactstrap\"\n\nimport { setAlert } from \"../../redux/commons/action\"\n\nconst CommonAlert: FC = () => {\n const dispatch = useDispatch()\n const alert = useSelector((state: any) => state.common.alert)\n const timeout = useRef<any>()\n\n const onDismiss = () => {\n dispatch(setAlert({ message: \"\" }))\n timeout && timeout.current && clearTimeout(timeout.current)\n }\n\n useEffect(() => {\n if (!!alert.message?.length) {\n timeout && timeout.current && clearTimeout(timeout.current)\n timeout.current = setTimeout(() => {\n dispatch(setAlert({ message: \"\" }))\n }, 3000)\n }\n }, [alert])\n\n return alert.message?.length > 0 ? (\n <div className=\"app-alert\">\n <Alert\n color={alert.type}\n isOpen={alert.message.length > 0}\n toggle={onDismiss}\n >\n {alert.message}\n </Alert>\n </div>\n ) : null\n}\n\nexport default CommonAlert\n","import moment from \"moment\"\nimport { DATE_MIN_VALUE } from \"../utils/constants\"\n\nexport default (time: string, ORIGINAL_FORMAT: string, FORMAT?: string) => {\n if (time === DATE_MIN_VALUE) return \"\"\n try {\n return moment(time, ORIGINAL_FORMAT).format(FORMAT || \"yyyy-MM-DD\");\n } catch {\n return \"\"\n }\n}\n","import moment, { unitOfTime } from \"moment\"\nimport { DATE_MIN_VALUE } from \"../utils/constants\"\n\nexport default (time: string, unitOfTime: unitOfTime.Diff, targetTime?: string) => {\n if (time === DATE_MIN_VALUE || targetTime === DATE_MIN_VALUE) return 0\n try {\n var now = !!targetTime ? moment() : moment.utc(targetTime).local();\n return now.diff(moment.utc(time).local(), unitOfTime)\n } catch {\n return \"\"\n }\n}\n","import React from \"react\"\nimport { FC } from \"react\"\nimport { Pagination, PaginationItem, PaginationLink } from \"reactstrap\"\n\ninterface Props {\n currentPage: number\n totalPage: number\n onChangePage: (page: number) => void\n}\nconst CustomPagination: FC<Props> = ({\n currentPage,\n totalPage,\n onChangePage\n}) => {\n\n return (\n <Pagination className=\"w-fit\">\n <PaginationItem disabled={currentPage <= 1}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(currentPage - 1)\n }}\n previous\n href=\"#\"\n />\n </PaginationItem>\n <PaginationItem active={1 === currentPage} key={1}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(1)\n }}\n href=\"#\"\n >\n {1}\n </PaginationLink>\n </PaginationItem>\n\n {\n totalPage > 2 && <PaginationItem active={2 === currentPage} key={1}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(2)\n }}\n href=\"#\"\n >\n {2}\n </PaginationLink>\n </PaginationItem>\n }\n\n {\n currentPage > 4 && currentPage !== totalPage && totalPage !== 5\n &&\n <PaginationItem disabled key={\"first\"}>\n <PaginationLink\n href=\"#\"\n >\n ...\n </PaginationLink>\n </PaginationItem>\n }\n {\n (currentPage === 1 || currentPage === totalPage) && totalPage === 5 && \n <PaginationItem key={3}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(3)\n }}\n href=\"#\"\n >\n 3\n </PaginationLink>\n </PaginationItem>\n }\n {\n [currentPage - 1, currentPage, currentPage + 1]\n .filter(page => page > 2 && page < totalPage - 1).map(page => (\n <PaginationItem active={page === currentPage} key={page}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(page)\n }}\n href=\"#\"\n >\n {page}\n </PaginationLink>\n </PaginationItem>\n ))\n }\n\n {\n totalPage - currentPage > 4\n &&\n <PaginationItem disabled key={\"last\"}>\n <PaginationLink\n href=\"#\"\n >\n ...\n </PaginationLink>\n </PaginationItem>\n }\n\n {totalPage > 3 && (\n <PaginationItem active={totalPage - 1 === currentPage} key={totalPage - 1}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(totalPage - 1)\n }}\n href=\"#\"\n >\n {totalPage - 1}\n </PaginationLink>\n </PaginationItem>\n )}\n {totalPage > 1 && (\n <PaginationItem active={totalPage === currentPage} key={totalPage}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(totalPage)\n }}\n href=\"#\"\n >\n {totalPage}\n </PaginationLink>\n </PaginationItem>\n )}\n <PaginationItem disabled={currentPage >= totalPage}>\n <PaginationLink\n onClick={e => {\n e.preventDefault()\n onChangePage(currentPage + 1)\n }}\n next\n href=\"#\"\n />\n </PaginationItem>\n </Pagination>\n )\n}\n\nexport default CustomPagination\n","export interface INavigateProps{\n onNavigate: (pathname: string) => void\n}\n\nexport enum ExamEvent {\n StartExam = \"start-exam\",\n TerminateExam = \"terminate-exam\",\n AddExtraDuration = \"add-extra-duration-exam\",\n TeacherKickOutStudent = \"teacher-kick-out-student\"\n }\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport lang_ko from \"./lang/lang_ko.json\"\nimport lang_en from \"./lang/lang_en.json\"\n\ni18n.use(initReactI18next)\n .init({\n lng: \"ko\",\n fallbackLng: \"ko\",\n interpolation: {\n escapeValue: false,\n },\n resources: {\n ko: {\n translation: lang_ko\n },\n en: {\n translation: lang_en\n },\n },\n });\n\nexport default i18n;","export type Language = {\n code: string\n name: string\n fullName: string\n shortName: string\n nativeName: string\n image: string\n momentLangCode: string\n}\n\nexport const DEFAULT_LANGUAGE_INDEX = 0\n\nexport const LANGUAGES: Language[] = [\n {\n code: \"ko\",\n fullName: \"Korean\",\n shortName: \"Korean\",\n nativeName: \"Korean\",\n name: \"Korean\",\n image: \"/images/korea.png\",\n momentLangCode: \"ko\"\n },\n {\n code: \"en\",\n fullName: \"English\",\n shortName: \"English\",\n nativeName: \"English\",\n name: \"English\",\n image: \"/images/usa.png\",\n momentLangCode: \"en-au\"\n }\n]\n","import { useState, useEffect, useMemo } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { useDispatch } from \"react-redux\"\nimport { DEFAULT_LANGUAGE_INDEX, LANGUAGES, Language } from \"../configs/constants\"\nimport { setLanguage } from \"../redux/commons/action\"\nimport moment from \"moment\"\nimport \"moment/locale/ko.js\"\nimport \"moment/locale/en-au.js\"\n\nconst useLanguage = () => {\n const defaultLanguage =\n !!localStorage.getItem(\"language\")\n ? localStorage.getItem(\"language\")\n : navigator.language || LANGUAGES[DEFAULT_LANGUAGE_INDEX].code\n\n const dispatch = useDispatch()\n const { i18n } = useTranslation()\n const [dropdownOpen, setDropdownOpen] = useState(false)\n const [language, setItemLanguage] = useState(defaultLanguage!)\n const toggle = () => setDropdownOpen(prevState => !prevState)\n const changeLanguageApp = (lang: string) => {\n let language = LANGUAGES.find(i => i.code === lang)\n if (!language) language = LANGUAGES[DEFAULT_LANGUAGE_INDEX]\n i18n.changeLanguage(language.code)\n moment.locale(language.momentLangCode)\n localStorage.setItem(\"language\", language.code)\n setItemLanguage(language.code)\n dispatch(setLanguage(language.code))\n }\n\n useEffect(() => {\n changeLanguageApp(language)\n }, [language])\n\n const currentLanguage = useMemo(() => {\n const currentLang = LANGUAGES.find((i: Language) => i.code === language)\n if(!currentLang) return null\n return currentLang\n }, [language])\n return {\n language,\n dropdownOpen,\n currentLanguage,\n toggle,\n setItemLanguage\n }\n}\n\nexport default useLanguage","import React from \"react\"\nimport { IoChevronDown } from \"react-icons/io5\";\nimport styles from \"../styles.module.scss\"\nimport {\n Dropdown,\n DropdownItem,\n DropdownMenu,\n DropdownToggle\n} from \"reactstrap\"\nimport { Language, LANGUAGES } from \"../configs/constants\";\nimport useLanguage from \"../utils/useLanguage\";\n\nconst TheLanguageDropdown = () => {\n const {\n currentLanguage,\n language,\n dropdownOpen,\n toggle,\n setItemLanguage\n } = useLanguage()\n\n return (\n <Dropdown\n isOpen={dropdownOpen}\n toggle={toggle}\n className={`${styles[\"dropdown-menu\"]}`}\n >\n <DropdownToggle\n className={`${styles[\"header-avatar\"]} d-flex align-items-center`}\n >\n <span style={{ color: \"#000\", textTransform: \"capitalize\", display: 'flex', alignItems: 'center' }}>\n {!!currentLanguage && <img className={`mr-2 ${styles['dropdown-menu-flag']}`} src={currentLanguage.image} />}\n {!!currentLanguage && currentLanguage.shortName}\n <IoChevronDown className=\"ml-2\" style={{ fontSize: '15px', marginLeft: \"5px\", marginTop: \"2px\" }} />\n </span>\n </DropdownToggle>\n <DropdownMenu className={styles[\"dropdown-content-language\"]}>\n {\n LANGUAGES.map((lang: Language, index: number) => (\n <DropdownItem\n key={lang.code}\n className={`${styles[\"dropdown-change\"]} px-0 py-0 ${index === LANGUAGES.length - 1 ? \"pb-2\" : \"pt-2\"}`}\n onClick={() => setItemLanguage(lang.code)}\n >\n <div\n className={`${styles[\"dropdown-item-language\"]} ${styles[\"item-logout\"]} ${\n language == lang.code ? styles['dropdown-item-language-active'] : \"\"\n } d-flex align-items-center w-100`}\n >\n <span className=\"mr-2 d-flex hover-opacity\">\n <img\n style={{ width: \"30px\", marginRight: \"10px\" }}\n src={lang.image}\n />\n </span>\n {lang.name}\n </div>\n </DropdownItem>\n ))\n }\n </DropdownMenu>\n </Dropdown>\n )\n}\n\nexport default TheLanguageDropdown\n","export default (time: number) => {\n const h = Math.floor(time / 60)\n const m = time % 60\n return `${h.toString().padStart(2, \"0\")}:${m\n .toString()\n .padStart(2, \"0\")}:00`\n}\n","import moment from \"moment\"\n\nexport default (time?: string) => {\n try {\n return moment(time).toISOString()\n } catch {\n return \"\"\n }\n}\n","const canAccess = (userRoles: any[], componentRoles: any[]) => {\n if (!Array.isArray(userRoles)) {\n return false\n }\n if (Array.isArray(componentRoles)) {\n const intersects = userRoles.filter(i => componentRoles.includes(i))\n return intersects.length > 0\n }\n return true\n}\n\nexport default canAccess\n","import React from \"react\"\nimport Select, { DropdownIndicatorProps, components } from 'react-select'\nimport { FaCaretDown } from \"react-icons/fa\";\nimport { useTranslation } from \"react-i18next\";\n\nconst DropdownIndicator = (props: DropdownIndicatorProps) => {\n return <components.DropdownIndicator {...props}>\n <FaCaretDown color=\"#5458D5\"/>\n </components.DropdownIndicator>\n}\n\nconst CustomOption = (props: any) => {\n return (\n <components.Option {...props}>\n <div style={{ fontSize: \"14px\", fontWeight: 500, }}>\n {props.data.label}\n </div>\n </components.Option>\n );\n };\n\nconst customStyles = {\n control: (baseStyles: any, state: any) => ({\n ...baseStyles,\n fontSize: \"14px\",\n fontWeight: 700,\n color: \"#5458D5\",\n borderColor: state.isFocused ? '#5458D5' : '#C3C5FE'\n }),\n input: (baseStyles: any, _: any) => ({\n ...baseStyles,\n fontSize: \"14px\",\n fontWeight: 700,\n color: \"#5458D5\"\n }),\n singleValue: (baseStyles: any) => ({\n ...baseStyles,\n fontSize: \"14px\",\n fontWeight: 700,\n color: \"#5458D5\"\n }),\n};\nconst CustomSelect = ({\n isDefault,\n defaultValue,\n options,\n isDisabled,\n scrollBottom,\n value,\n isMulti,\n ...rest\n}: any) => {\n const { t } = useTranslation()\n const initialValues = Array.isArray(value) ? options.filter((i: any)=> value.includes(i.value)) : isMulti ? options.filter((i: any) => i.value == value) : options.find((i: any) => i.value == value)\n return (\n <Select\n isDisabled={isDisabled}\n options={options}\n value={!isDefault ? (initialValues ?? null) : undefined}\n defaultValue={isDefault ? initialValues : undefined}\n menuPlacement={scrollBottom ? \"top\" : \"auto\"}\n isMulti={isMulti}\n components={{\n IndicatorSeparator: () => null,\n DropdownIndicator,\n Option: CustomOption\n }}\n styles={customStyles}\n placeholder={t(\"select_placeholder\")}\n {...rest}\n />\n )\n}\n\nexport default CustomSelect\n","import { ExamStatus } from \"./constants\"\n\nexport type ConversationResponse = {\n id: number\n student: UserResponse\n teacher: UserResponse\n lastMessage: MessageResponse\n totalUnReadMessage: number\n}\n\nexport type UserResponse = {\n id: number\n displayName: string\n avatar: string\n}\n\nexport type ConversationFilter = {\n currentPage: number,\n pageSize: number,\n textSearch: string\n}\n\nexport type MessageFilter = {\n currentPage?: number,\n pageSize?: number,\n textSearch?: string,\n sortColumnDirection?: OrderBy,\n sortColumnName?: MessageSortBy\n examId?: number\n beforeDate?: string\n}\n\nexport enum MessageSortBy {\n CreatedAt = \"CreatedAt\"\n}\n\nexport enum OrderBy {\n ASC = \"ASC\",\n DESC = \"DESC\"\n}\n\nexport enum StudentSortBy {\n CreatedAt = \"CreatedAt\",\n DisplayName = \"DisplayName\"\n}\n\nexport enum StudentOrderBy {\n ASC = \"ASC\",\n DESC = \"DESC\"\n}\n\nexport type MessageResponse = {\n id?: number\n isStudent: boolean\n conversationId?: number\n content: string\n isRead: boolean\n readAt?: string\n examId?: number\n createdAt: string\n exam?: ExamResponse\n action?: MessageAction\n isSystemLog?: boolean\n type?: MessageSourceType\n parentId?: number\n parentContent?: string\n}\n\nexport type ExamResponse = {\n id: number\n title: string\n code: string\n startTime: string\n createdAt: string\n}\n\nexport type MessageRequest = {\n content: string\n examId?: number\n parentId?: number,\n parentContent?: string\n examTitle?: string\n examCode?: string\n}\n\nexport enum MessageAction{\n Default,\n Took\n}\n\nexport enum MessageSourceType{\n Default,\n Exam,\n Class\n}\n\nexport type ExamFilter = {\n currentPage: number,\n pageSize: number,\n sortColumnName: string,\n textSearch: string,\n sortColumnDirection: string,\n statuses?: ExamStatus[]\n}\n\nexport type Option = {\n value: number\n label: string\n}\n\nexport enum MessageStatus{\n Default = \"Sent\",\n Sending = \"Sending...\",\n SentError = \"Sent fail, Retry\"\n}","import React, { FC, useEffect, useState } from \"react\";\nimport styles from \"./styles/chatStyles.module.scss\";\nimport { Collapse } from \"reactstrap\";\nimport { Link } from \"react-router-dom\";\nimport { IChatItemWithActionProps } from \"./ChatItem\";\nimport utcToLocalTime from \"../../utils/utcToLocalTime\";\nimport { MessageRequest, MessageStatus } from \"./configs/types\";\nimport { useTranslation } from \"react-i18next\";\n\ninterface Props extends IChatItemWithActionProps{\n onReTrySendMessage?: (req?: MessageRequest) => void\n}\nconst ChatRightItem: FC<Props> = ({\n id,\n content,\n createdAt,\n isRead,\n examCode,\n isSystemLog,\n parentId,\n showExamHeader = false,\n isFirst = true,\n isLast,\n actionLink,\n examId,\n examTitle,\n parentContent,\n status,\n selectedReplyMessageId,\n selectedReplyItemRef,\n onAddExamMessage,\n onReTrySendMessage,\n onGotoParentMessage\n}) => {\n const [isShowTime, setShowTime] = useState<boolean>(false);\n const [isShowInfo, setShowInfo] = useState<boolean>(false);\n const { t } = useTranslation()\n const handleShowInfo = () => {\n setShowInfo(!isShowInfo);\n !isFirst && !isSystemLog && setShowTime(!isShowInfo);\n };\n\n const handleReTrySendMessage = () => {\n if(status !== MessageStatus.SentError || !content) return\n onReTrySendMessage?.({\n content,\n examId,\n examTitle,\n parentContent,\n parentId\n })\n }\n\n useEffect(() => {\n setShowTime(isSystemLog || !!isFirst);\n }, [isFirst, isSystemLog]);\n return (\n <li\n ref={selectedReplyMessageId === id ? selectedReplyItemRef : undefined}\n className={`px-3 ${!isLast ? \"pb-1\" : \"pb-3\"} ${\n !!examCode ? \"border border-top-0 border-info\" : \"\"\n } ${\n !!examCode && isLast\n ? \"border-bottom-1 mb-3\"\n : \"border-bottom-0\"\n }`}\n >\n {showExamHeader && isFirst && (\n <div\n className={`d-flex bg-info justify-content-between px-3 mb-3 py-1 ${styles[\"list__item__header\"]}`}\n >\n <Link to={`${actionLink || \"/\"}`} className=\"text-black\">\n {examTitle}\n </Link>\n {!!examId && !!examTitle && !!examCode && <span className=\"pointer text-black\" onClick={() => onAddExamMessage?.(examId, examTitle, examCode)}>\n Add message to exam\n </span>}\n </div>\n )}\n {\n (isSystemLog || !!isFirst)\n ?\n <p className=\"mb-0 py-1 px-3 fs-6 text-muted text-center\">\n {utcToLocalTime(createdAt, t(\"date_time_format\"))}\n </p>\n :\n <Collapse className=\"w-100\" isOpen={isShowTime}>\n <p className=\"mb-0 py-1 px-3 fs-6 text-muted text-center\">\n {utcToLocalTime(createdAt, t(\"date_time_format\"))}\n </p>\n </Collapse>\n }\n {isSystemLog ? (\n <div className=\"text-center w-100\">\n <Link\n to={`${actionLink || \"/\"}`}\n title=\"See the results\"\n className=\"text-primary\"\n >\n {content}\n </Link>\n </div>\n ) : (\n <div className={`d-flex align-items-start w-100 flex-row-reverse`}>\n <div className=\"d-flex flex-column align-items-end\">\n {parentId && (\n <p\n className={`px-3 bg-light opacity-50 pointer ${styles[\"list__item__message\"]} ${styles[\"list__item__message--reply-from-right\"]} mb-0 fw-medium ${styles[\"reply-text\"]}`}\n onClick={() => onGotoParentMessage?.(parentId)}\n >\n <b>Reply To:</b> {parentContent}\n </p>\n )}\n <p\n className={`mb-0 py-2 px-3 fw-medium pointer ${\n styles[\"list__item__message\"]\n } ${\n parentId ? styles[\"list__item__message--reply-right\"] : \"\"\n } text-end bg-primary text-white`}\n onClick={handleShowInfo}\n >\n {content}\n </p>\n {status !== MessageStatus.Default && <p onClick={handleReTrySendMessage} className={`fs-6 mb-0 ${status === MessageStatus.SentError ? \"text-danger text-decoration-underline pointer\" : \"\"}`}>{status}</p>}\n {!isSystemLog && status === MessageStatus.Default && (\n <Collapse isOpen={isShowInfo}>\n <p className=\"mb-0 py-1 px-3 fs-6 text-muted text-end\">\n {isRead ? \"seen\" : \"sent\"}\n </p>\n </Collapse>\n )}\n </div>\n </div>\n )}\n </li>\n );\n};\n\nexport default ChatRightItem;\n","import React, { FC, useEffect, useState } from \"react\";\nimport styles from \"./styles/chatStyles.module.scss\";\nimport { Collapse } from \"reactstrap\";\nimport { Link } from \"react-router-dom\";\nimport { IChatItemWithActionProps } from \"./ChatItem\";\nimport utcToLocalTime from \"../../utils/utcToLocalTime\";\nimport { useTranslation } from \"react-i18next\";\n\nconst ChatLeftItem: FC<IChatItemWithActionProps> = ({\n id,\n avatar,\n content,\n createdAt,\n examCode,\n isSystemLog,\n parentId,\n showExamHeader = false,\n isFirst = true,\n isLast,\n actionLink,\n examId,\n examTitle,\n parentContent,\n onAddExamMessage,\n onReply,\n selectedReplyMessageId,\n onToggleReply,\n selectedReplyItemRef,\n onGotoParentMessage\n}) => {\n const [isShowTime, setShowTime] = useState<boolean>(false);\n const [isShowInfo, setShowInfo] = useState<boolean>(false);\n\n const { t } = useTranslation()\n const handleShowInfo = () => {\n if(!id) return\n setShowInfo(!isShowInfo);\n onToggleReply?.(id)\n !isFirst && !isSystemLog && setShowTime(!isShowInfo);\n };\n\n const handleReply = () => {\n if(!id) return\n onReply?.(id, content || \"\", examId)\n }\n\n useEffect(() => {\n setShowTime(isSystemLog || !!isFirst);\n }, [isFirst, isSystemLog]);\n return (\n <li\n ref={selectedReplyMessageId === id ? selectedReplyItemRef : undefined}\n className={`px-3 ${!isLast ? \"pb-1\" : \"pb-3\"} ${\n !!examCode ? \"border border-top-0 border-info\" : \"\"\n } ${\n !!examCode && isLast\n ? \"border-bottom-1 mb-3\"\n : \"border-bottom-0\"\n }`}\n >\n {showExamHeader && isFirst && (\n <div\n className={`d-flex bg-info justify-content-between px-3 mb-3 py-1 ${styles[\"list__item__header\"]}`}\n >\n <Link to={`${actionLink || \"/\"}`} className=\"text-black\">\n {examTitle}\n </Link>\n {!!examId && !!examTitle && !!examCode && <span className=\"pointer text-black\" onClick={() => onAddExamMessage?.(examId, examTitle, examCode)}>\n Add message to exam\n </span>}\n </div>\n )}\n \n {\n (isSystemLog || !!isFirst)\n ?\n <p className=\"mb-0 py-1 px-3 fs-6 text-muted text-center\">\n {utcToLocalTime(createdAt, t(\"date_time_format\"))}\n </p>\n :\n <Collapse className=\"w-100\" isOpen={isShowTime}>\n <p className=\"mb-0 py-1 px-3 fs-6 text-muted text-center\">\n {utcToLocalTime(createdAt, t(\"date_time_format\"))}\n </p>\n </Collapse>\n }\n {isSystemLog ? (\n <div className=\"text-center w-100\">\n <Link\n to={`${actionLink || \"/\"}`}\n title=\"See the results\"\n className=\"text-primary\"\n >\n {content}\n </Link>\n </div>\n ) : (\n <div className={`d-flex align-items-start w-100`}>\n <div\n className={`rounded-circle ${\n styles[\"list__item__avatar-container\"]\n } bg-light me-2 mt-1 ${isFirst ? \"\" : \"opacity-0\"}`}\n >\n {isFirst && (\n <img\n className={`${styles[\"list__item__avatar\"]} bg-light rounded-circle`}\n src={avatar}\n />\n )}\n </div>\n <div className=\"d-flex flex-column\">\n {parentId && (\n <p\n className={`opacity-50 mb-0 px-3 fw-medium pointer ${styles[\"list__item__message\"]} ${styles[\"list__item__message--reply-from\"]} ${styles[\"reply-text\"]} text-start bg-light`}\n onClick={() => onGotoParentMessage?.(parentId)}\n >\n <b>Reply To:</b> {parentContent}\n </p>\n )}\n <p\n className={`mb-0 py-2 px-3 fw-medium pointer ${\n styles[\"list__item__message\"]\n } ${\n parentId ? styles[\"list__item__message--reply\"] : \"\"\n } text-start bg-light`}\n onClick={handleShowInfo}\n >\n {content}\n </p>\n {\n !isSystemLog && <Collapse className=\"w-100\" isOpen={selectedReplyMessageId === id}>\n <p onClick={handleReply} className=\"mb-0 py-1 px-3 fs-6 text-primary text-left pointer\">\n Reply\n </p>\n </Collapse>\n }\n </div>\n </div>\n )}\n </li>\n );\n};\n\nexport default ChatLeftItem;\n","import { FC, Fragment } from \"react\";\nimport ChatRightItem from \"./ChatRightItem\";\nimport ChatLeftItem from \"./ChatLeftItem\";\nimport React from \"react\";\nimport { MessageStatus } from \"./configs/types\";\n\nexport interface IChatItemProps {\n id?: number;\n isMe?: boolean;\n name: string;\n avatar?: string;\n isSystemLog?: boolean;\n content?: string;\n createdAt: string;\n isRead: boolean;\n type?: ChatItemType;\n examCode?: string;\n examId?: number;\n parentId?: number;\n parentContent?: string;\n showExamHeader?: boolean;\n isFirst?: boolean;\n isLast?: boolean;\n actionLink?: string\n examTitle?: string\n selectedReplyMessageId?: number\n selectedReplyItemRef?: React.RefObject<HTMLLIElement>\n status: MessageStatus\n onToggleReply?: (id: number) => void\n}\n\nexport interface IChatItemWithActionProps extends IChatItemProps{\n onAddExamMessage?: (examId: number, title: string, examCode: string) => void\n onReply?: (id: number, content: string, examId?: number) => void\n onReTrySendMessage?: () => void\n onGotoParentMessage?: (id: number) => void\n}\n\nexport enum ChatItemType {\n Default,\n Exam,\n Class,\n}\n\nconst ChatItem: FC<IChatItemWithActionProps> = (props) => {\n const { isMe, onReTrySendMessage } = props;\n return (\n <Fragment>\n {isMe ? <ChatRightItem {...props} onReTrySendMessage={onReTrySendMessage}/> : <ChatLeftItem {...props} />}\n </Fragment>\n );\n};\n\nexport default ChatItem;\n","import React, { FC, useEffect, useRef, useState } from \"react\"\nimport styles from \"./styles/chatStyles.module.scss\"\nimport ChatItem, { IChatItemProps } from \"./ChatItem\"\n\nexport interface IChatListProps{\n messages?: IChatItemProps[]\n onAddExamMessage: (examId: number, examTitle: string, examCode: string) => void\n onReTrySendMessage?: () => void\n onReply?: (id: number, content: string, examId?: number) => void\n}\n\ninterface Props extends IChatListProps{\n listItemRef: React.RefObject<HTMLUListElement>\n}\n\nconst ChatList: FC<Props> = ({\n messages = [],\n onAddExamMessage,\n onReply,\n onReTrySendMessage,\n listItemRef\n}) => {\n\n const [selectedReplyMessageId, setSelectedReplyMessageId] = useState<number>();\n const selectedReplyItemRef = useRef<HTMLLIElement>(null)\n\n const handleToggleReply = (id: number) => {\n setSelectedReplyMessageId(id === selectedReplyMessageId ? undefined : id)\n }\n\n const handleSelectParentMessage = (id: number) => {\n if(id === selectedReplyMessageId) selectedReplyItemRef.current && selectedReplyItemRef.current.scrollIntoView({\n behavior: \"smooth\"\n })\n else setSelectedReplyMessageId(id)\n }\n\n useEffect(() => {\n selectedReplyMessageId && selectedReplyItemRef.current && selectedReplyItemRef.current.scrollIntoView({\n behavior: \"smooth\"\n })\n }, [selectedReplyMessageId, selectedReplyItemRef.current])\n return <ul ref={listItemRef} className={`${styles[\"list\"]} h-100 d-flex flex-column py-3 px-0 mb-0`}>\n <li className=\"flex-grow-1\" key={\"start-of-list\"}></li>\n {\n !messages?.length\n && <li className=\"text-muted text-center fst-italic fs-6\">No message</li>\n }\n {\n !!messages?.length\n &&\n messages.map((message: IChatItemProps) => (\n <ChatItem\n key={message.id}\n {...message}\n onAddExamMessage={onAddExamMessage}\n onReply={onReply}\n selectedReplyMessageId={selectedReplyMessageId}\n onToggleReply={handleToggleReply}\n selectedReplyItemRef={selectedReplyItemRef}\n onReTrySendMessage={onReTrySendMessage}\n onGotoParentMessage={handleSelectParentMessage}\n />\n ))\n }\n </ul>\n}\n\nexport default ChatList","import { Collapse, Input, InputGroup } from \"reactstrap\"\nimport { IoMdSend } from \"react-icons/io\"\nimport React, { ChangeEvent, FC, KeyboardEvent } from \"react\"\nimport { IoIosCloseCircle } from \"react-icons/io\"\nimport styles from \"./styles/chatStyles.module.scss\"\n\nexport interface IInputChatProps {\n text: string\n parentText?: string\n examTitle?: string\n onSubmit: () => void\n onChangeInput: (text: string) => void\n onClearReply?: () => void\n}\n\ninterface Props extends IInputChatProps {\n inputRef: React.RefObject<HTMLInputElement>\n}\nconst InputChat: FC<Props> = ({\n text,\n parentText,\n examTitle,\n inputRef,\n onChangeInput,\n onSubmit,\n onClearReply\n}) => {\n const handleSubmit = () => {\n if (!text.trim().length) return\n onSubmit()\n }\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChangeInput(event.target.value)\n }\n\n const handleKeyPressEnter = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.code === \"Enter\") handleSubmit()\n }\n\n const handleClearReply = () => {\n onClearReply?.()\n }\n return (\n <div className=\"bg-light rounded-3 p-2\">\n <Collapse isOpen={!!parentText || (!!examTitle && !parentText)}>\n {!!parentText ? (\n <div className=\"d-flex justify-content-between align-items-center\">\n <p className={`mb-3 ${styles[\"reply-text\"]}`}>\n <b>Reply to:</b>\n {` ${parentText}`}\n </p>\n {!!onClearReply && (\n <span\n className=\"pointer ms-3 mb-3 d-flex justify-content-center align-items-center\"\n onClick={handleClearReply}\n >\n <IoIosCloseCircle />\n </span>\n )}\n </div>\n ) : (\n <div className=\"d-flex justify-content-between align-items-center\">\n <p className={`mb-3 ${styles[\"reply-text\"]}`}>\n <b>Reply to{examTitle ? \" exam\" : \"\"}: </b>\n {` ${examTitle}`}\n </p>\n {!!onClearReply && (\n <span\n className=\"pointer ms-3 mb-3 d-flex justify-content-center align-items-center\"\n onClick={handleClearReply}\n >\n <IoIosCloseCircle />\n </span>\n )}\n </div>\n )}\n </Collapse>\n <InputGroup className=\"d-flex align-items\">\n <Input\n innerRef={inputRef}\n value={text}\n placeholder=\"Enter something\"\n onKeyUp={handleKeyPressEnter}\n className=\"rounded-pill px-3\"\n onChange={handleInputChange}\n />\n <div\n className=\"p-2 pointer d-flex align-items-center\"\n onClick={handleSubmit}\n >\n <IoMdSend className=\"text-primary fs-4\" />\n </div>\n </InputGroup>\n </div>\n )\n}\nexport default InputChat\n","import { FC, useEffect, useMemo, useRef } from \"react\";\nimport styles from \"./styles/chatStyles.module.scss\";\n// import { PiDotsThreeOutlineFill } from \"react-icons/pi\";\n// import { Popover, PopoverHeader, PopoverBody } from \"reactstrap\";\nimport React from \"react\";\nimport utcToLocalTime from \"../../utils/utcToLocalTime\";\nimport CustomSelect from \"../Selects/CustomSelect\";\nimport { Option } from \"./configs/types\";\nimport { useTranslation } from \"react-i18next\";\nimport { useSelector } from \"react-redux\";\n\nexport interface IExamOption {\n id: number;\n code: string;\n title: string;\n createdAt: string;\n startTime: string;\n}\n\nexport interface IChatHeaderProps {\n name: string;\n avatar?: string;\n selectedOption?: number\n options?: IExamOption[];\n onChangeOption?: (value: Option) => void\n}\nconst ChatHeader: FC<IChatHeaderProps> = ({ name, avatar, options, selectedOption, onChangeOption }) => {\n // const [isOpenOptions, setOpenOptions] = useState<boolean>(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const actionRef = useRef<HTMLDivElement>(null);\n const language = useSelector((state: any) => state?.common?.language)\n const { t } = useTranslation()\n\n // const handleOpenOptions = () => {\n // setOpenOptions(true);\n // };\n\n // const handleCloseOptions = () => {\n // setOpenOptions(false);\n // };\n\n // const handleToggleOptions = () => {\n // setOpenOptions(!isOpenOptions);\n // };\n\n const handleChangeOption = (val: any) => {\n onChangeOption?.(val)\n }\n\n useEffect(() => {\n const handleClickOutside = (event: any) => {\n if (\n wrapperRef.current &&\n !wrapperRef.current.contains(event.target) &&\n actionRef.current &&\n !actionRef.current.contains(event.target)\n ) {\n // handleCloseOptions();\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [wrapperRef, actionRef]);\n \n const selectOptions = useMemo(\n () =>\n options?.map((i) => ({\n value: i.id,\n label: `${i.title} (${utcToLocalTime(i.startTime, t(\"date_time_format\"))})`,\n })),\n [JSON.stringify(options), language]\n );\n \n return (\n <div className=\"d-flex bg-light rounded-3 p-3\">\n <div>\n <img\n className={`rounded-circle ${styles[\"header__avatar\"]}`}\n src={avatar}\n alt={name}\n />\n </div>\n <div className=\"flex-grow-1 px-3 d-flex align-items-center\">\n <p className=\"mb-0 text-primary fw-medium\">{name}</p>\n </div>\n <div className=\"d-flex align-items-center\">\n {selectOptions !== undefined && (\n <div className={`${styles[\"header__select\"]} mx-3`}>\n <CustomSelect value={selectedOption} options={selectOptions} onChange={handleChangeOption} isClearable/>\n </div>\n )}\n <div className=\"actions d-flex align-items-center\">\n {/* <div\n className=\"pointer\"\n ref={actionRef}\n id=\"Popover1\"\n onClick={handleOpenOptions}\n >\n <PiDotsThreeOutlineFill className=\"fs-5\" />\n </div> */}\n </div>\n </div>\n {/* <Popover\n flip\n target=\"Popover1\"\n toggle={handleToggleOptions}\n isOpen={isOpenOptions}\n placement=\"bottom-end\"\n hideArrow\n >\n <div ref={wrapperRef}>\n <PopoverHeader>Popover Title</PopoverHeader>\n <PopoverBody>\n Sed posuere consectetur est at lobortis. Aenean eu leo quam.\n Pellentesque ornare sem lacinia quam venenatis vestibulum.\n </PopoverBody>\n </div>\n </Popover> */}\n </div>\n );\n};\n\nexport default ChatHeader;\n","import ChatList, { IChatListProps } from \"./ChatList\"\nimport InputChat, { IInputChatProps } from \"./InputChat\"\nimport ChatHeader, { IChatHeaderProps } from \"./ChatHeader\"\nimport styles from \"./styles/chatStyles.module.scss\"\nimport React, { FC, useEffect, useRef } from \"react\"\nimport { Option } from \"./configs/types\"\nimport { Spinner } from \"reactstrap\"\n\nexport interface IChatContainerProps{\n chatHeaderProps: IChatHeaderProps\n chatListProps: IChatListProps\n inputProps: IInputChatProps\n height?: string\n scrollOffset?: number\n isLoading?: boolean\n isScrollToEnd?: boolean\n onRead?: () => void\n onReachTop?: () => void\n onReachBottom?: () => void\n onEndScrollToEnd?: () => void\n}\n\nconst ChatContainer: FC<IChatContainerProps> = ({\n chatHeaderProps,\n chatListProps,\n inputProps,\n scrollOffset = 0,\n isLoading = false,\n isScrollToEnd,\n onRead,\n onReachTop,\n onReachBottom,\n onEndScrollToEnd\n}) => {\n const {\n onReply,\n onAddExamMessage\n } = chatListProps\n\n const {\n onChangeOption\n } = chatHeaderProps\n const inputRef = useRef<HTMLInputElement>(null)\n const listRef = useRef<HTMLDivElement>(null)\n const listItemRef = useRef<HTMLUListElement>(null)\n const scrollRef = useRef<any>()\n const focusRef = useRef<any>()\n const addEventTimeout = useRef<any>()\n\n const handleReply = (id: number, content: string, examId?: number) => {\n inputRef.current?.focus()\n onReply?.(id, content, examId)\n }\n\n const handleAddExamMessage = (examId: number, examTitle: string, examCode: string) => {\n inputRef.current?.focus()\n onAddExamMessage(examId, examTitle, examCode)\n }\n\n const handleChangeExamOption = (val: Option) => {\n if(!!val?.value) inputRef.current?.focus()\n onChangeOption?.(val)\n }\n const handleScroll = () => {\n if(listRef.current){\n const scrollTop = listRef.current.scrollTop\n const scrollHeight = listRef.current.scrollHeight\n const clientHeight = listRef.current.clientHeight\n \n if (scrollTop + clientHeight + scrollOffset >= scrollHeight) {\n onReachBottom?.()\n } else if (scrollTop <= scrollOffset) {\n onReachTop?.()\n }\n }\n \n if(scrollRef.current) clearTimeout(scrollRef.current)\n scrollRef.current = setTimeout(() => {\n onRead?.()\n }, 800)\n }\n\n const handleFocus = () => {\n if(focusRef.current) clearTimeout(focusRef.current)\n focusRef.current = setTimeout(() => {\n onRead?.()\n }, 300)\n }\n\n useEffect(() => {\n scrollRef.current && clearTimeout(scrollRef.current)\n addEventTimeout.current && clearTimeout(addEventTimeout.current)\n listRef.current?.removeEventListener(\"scroll\", handleScroll)\n if(isScrollToEnd && !isLoading && chatListProps.messages?.length){\n listItemRef.current?.lastElementChild?.scrollIntoView({\n behavior: \"smooth\"\n })\n onEndScrollToEnd?.()\n\n addEventTimeout.current = setTimeout(() => {\n listRef.current?.addEventListener(\"scroll\", handleScroll)\n }, 800)\n } else listRef.current?.addEventListener(\"scroll\", handleScroll)\n return () => {\n listRef.current?.removeEventListener(\"scroll\", handleScroll)\n scrollRef.current && clearTimeout(scrollRef.current)\n addEventTimeout.current && clearTimeout(addEventTimeout.current)\n }\n }, [JSON.stringify(chatListProps.messages), scrollOffset, isLoading, onEndScrollToEnd, onRead, isScrollToEnd])\n\n useEffect(() => {\n inputRef.current?.addEventListener(\"focus\", handleFocus)\n return () => {\n inputRef.current?.removeEventListener(\"focus\", handleFocus)\n focusRef.current && clearTimeout(focusRef.current)\n }\n }, [onRead])\n\n return <div className=\"d-flex flex-column w-100 h-100 border border-1 border-light rounded-3 shadow-sm\">\n <div>\n <ChatHeader {...chatHeaderProps} onChangeOption={handleChangeExamOption}/>\n </div>\n <div ref={listRef} className={`flex-grow-1 ${styles[\"body\"]}`}>\n {\n isLoading && <div className=\"d-flex justify-content-center\">\n <Spinner color=\"secondary\" className=\"my-2\">\n Loading...\n </Spinner>\n </div>\n }\n <ChatList {...chatListProps} listItemRef={listItemRef} onReply={handleReply} onAddExamMessage={handleAddExamMessage}/>\n </div>\n <div>\n <InputChat {...inputProps} inputRef={inputRef}/>\n </div>\n </div>\n}\n\nexport default ChatContainer","import { api } from \"../../../configs/api\"\nimport { BASE_URL } from \"../../../utils/constants\"\nimport { ConversationFilter, MessageFilter, MessageRequest } from \"../configs/types\"\n\nconst CONVERSATION_URL = `${BASE_URL}/api/conversation`\n\nexport const getListConversation = (query: ConversationFilter) =>\n api.get(`${CONVERSATION_URL}`, {\n params: query\n })\n\nexport const createConversation = (studentId: number) =>\n api.post(`${CONVERSATION_URL}`, {\n targetUserId: `${studentId}`\n })\n\nexport const apiAddMessage = (conversationId: number, message: MessageRequest) =>\n api.post(`${CONVERSATION_URL}/${conversationId}/messages`, message)\n\nexport const getMessagesByConversation = (conversationId: number, filter: MessageFilter) =>\n api.get(`${CONVERSATION_URL}/${conversationId}/messages`, {\n params: filter\n })\n\nexport const apiMarkReadMessage = (conversationId: number, messageId: number) =>\n api.put(`${CONVERSATION_URL}/${conversationId}/messages/${messageId}/mark-read`)\n\nexport const apiGetConversationByUserId = (userId: number) =>\n api.get(`${CONVERSATION_URL}/users/${userId}`)\n ","import { ConversationFilter, MessageFilter, MessageSortBy, OrderBy } from \"./types\";\n\nexport enum ExamStatus {\n Default = \"Default\",\n Pending = \"Pending\",\n Inprogress = \"Inprogress\",\n Completed = \"Completed\"\n}\n\n\nexport const CONVERSATION_DEFAULT_FILTER: ConversationFilter = {\n currentPage: 1,\n pageSize: -1,\n textSearch: \"\"\n}\n\nexport const MESSAGE_DEFAULT_FILTER: MessageFilter = {\n currentPage: 1,\n pageSize: 12,\n textSearch: \"\",sortColumnDirection: OrderBy.DESC,\n sortColumnName: MessageSortBy.CreatedAt\n \n}","import { api } from \"../../../configs/api\"\nimport { BASE_URL } from \"../../../utils/constants\"\n\nconst EXAM_URL = `${BASE_URL}/api/exam`\n\nexport const getListExamApi = (query: any) =>\n api.get(`${EXAM_URL}/getList`, {\n params: query\n })","import { useState } from \"react\";\nimport { ExamResponse } from \"../configs/types\";\nimport { ExamStatus } from \"../configs/constants\";\nimport { getListExamApi } from \"../apiClient/examService\";\n\nconst useExamList = (isStudent: boolean = true) => {\n const [exams, setExams] = useState<ExamResponse[]>()\n\n const getListExam = async (userId?: number) => {\n setExams([])\n try{\n const res = await getListExamApi({\n currentPage: 1,\n pageSize: -1,\n sortColumnDirection: \"DESC\",\n sortColumnName: \"CreatedAt\",\n statuses: [ExamStatus.Completed],\n studentId: !isStudent ? userId : undefined,\n teacherId: isStudent ? userId : undefined\n });\n const data = res.data?.items || []\n setExams(data)\n } catch (error) {\n console.log({error});\n }\n }\n \n return {\n getListExam,\n exams\n }\n}\n\nexport default useExamList","import { useState } from \"react\"\nimport { MESSAGE_DEFAULT_FILTER } from \"../configs/constants\"\nimport { MessageResponse, MessageFilter } from \"../configs/types\"\nimport { apiMarkReadMessage, getMessagesByConversation } from \"../apiClient/conversationService\"\n\nconst useMessageList = (userId?: number, getListExamOptions?: Function) => {\n const [messages, setMessages] = useState<MessageResponse[]>([])\n const [messageFilter, setMessageFilter] = useState<MessageFilter>(MESSAGE_DEFAULT_FILTER)\n const [isLoading, setLoading] = useState<boolean>(false)\n\n const getMessageList = async (conversationId: number, examId?: number) => {\n setLoading(true)\n try {\n const filter = {\n ...messageFilter,\n examId: !examId ? messageFilter.examId : examId\n }\n const res = await getMessagesByConversation(conversationId, filter)\n if(messageFilter.beforeDate) setMessages((state: MessageResponse[]) => ([...(res.data.items?.reverse() || []), ...state]))\n else setMessages(res.data.items?.reverse())\n !!getListExamOptions && await getListExamOptions(userId)\n } catch (error) {\n console.log({error});\n }\n setLoading(false)\n }\n\n const handleLoadMore = () => {\n if(isLoading) return\n const lastItem = messages[0]\n if (!lastItem) return\n const newFilter = {\n ...messageFilter,\n currentPage: 1,\n beforeDate: lastItem.createdAt\n }\n setMessageFilter(newFilter)\n return JSON.stringify(newFilter) === JSON.stringify(messageFilter)\n }\n\n const handleMarkReadMessage = async (conversationId: number, messageId: number) => {\n try {\n await apiMarkReadMessage(conversationId, messageId)\n } catch (error) {\n console.log({error});\n }\n }\n\n const resetMessages = () => {\n setMessageFilter(MESSAGE_DEFAULT_FILTER)\n setMessages([])\n }\n\n const handleChangeExamId = (value: any) => {\n setMessageFilter({\n ...messageFilter,\n examId: value?.value,\n currentPage: 1\n })\n }\n\n return {\n isLoading,\n messageFilter,\n messages,\n getMessageList,\n setMessages,\n resetMessages,\n handleChangeExamId,\n handleMarkReadMessage,\n handleLoadMore\n }\n}\n\nexport default useMessageList","import { useRef, useState, useMemo, useEffect, useCallback } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setLoading } from \"../../../redux/commons/action\";\nimport { PUSHER_CONFIG, getAccessToken, BASE_URL } from \"../../../utils/constants\";\nimport { IChatItemProps, ChatItemType } from \"../ChatItem\";\nimport { apiGetConversationByUserId, createConversation, apiMarkReadMessage, apiAddMessage } from \"../apiClient/conversationService\";\nimport { ConversationResponse, MessageResponse, MessageRequest, MessageSourceType, MessageAction, MessageStatus } from \"../configs/types\";\nimport Pusher, { Channel } from \"pusher-js\";\nimport useExamList from \"./useExamList\";\nimport useMessageList from \"./useMessageList\";\nimport moment from \"moment\";\nimport { toast } from \"react-toastify\";\n\ninterface Props {\n conversation?: ConversationResponse;\n userId?: number;\n onUpdateLastMessage?: (message: MessageResponse) => void;\n onUpdateConversation?: (conversation: ConversationResponse) => void;\n onCreateConversationSuccess?: Function,\n onGetMessagesSuccess?: Function\n examId?: number\n}\nconst useChatContainer = (props: Props) => {\n const { conversation, userId, examId, onUpdateLastMessage, onCreateConversationSuccess, onGetMessagesSuccess } =\n props;\n const pusher = useRef<Pusher>();\n const channel = useRef<Channel>();\n const channelName = useRef<string>();\n const loadingRef = useRef<boolean>(false);\n const firstLoadRef = useRef<boolean>(true);\n\n const dispatch = useDispatch();\n\n const roles: string[] =\n useSelector((state: any) => state?.common?.user?.roles) || [];\n const isStudent = roles.includes(\"Student\");\n\n const [selectedConversation, setSelectedConversation] =\n useState<ConversationResponse>();\n const [message, setMessage] = useState<MessageRequest>();\n const [messageStatus, setMessageStatus] = useState<MessageStatus>(MessageStatus.Default)\n const [isScrollToEnd, setScrollToEnd] = useState<boolean>(true)\n\n const { exams, getListExam } = useExamList(isStudent);\n\n const {\n isLoading: isLoadingMessages,\n messages,\n messageFilter,\n getMessageList,\n resetMessages,\n handleChangeExamId,\n setMessages,\n handleLoadMore\n } = useMessageList(isStudent ? selectedConversation?.teacher?.id : selectedConversation?.student?.id, !userId ? getListExam : undefined);\n\n const handleToggleScrollToEnd = () => {\n setScrollToEnd((state: boolean) => !state)\n }\n\n const handleAddMessage = async () => {\n if(loadingRef.current) return\n if(messages.some(i => i.id === 0)) return\n loadingRef.current = true;\n if (!selectedConversation?.id || !message?.content?.trim()?.length) return;\n setScrollToEnd(true)\n setMessages((state: MessageResponse[]) => {\n return [...state, {\n id: 0,\n isStudent: isStudent,\n content: message.content,\n examId: message.examId,\n parentId: message.parentId,\n parentContent: message.parentContent,\n exam: message.examId ? {\n id: message.examId,\n startTime: moment().format(\"YYYY-MM-DDTHH:mm:ss\"),\n title: message.examTitle || \"\",\n code: message.examCode || \"\",\n createdAt: moment().format(\"YYYY-MM-DDTHH:mm:ss\")\n } : undefined,\n isRead: false,\n createdAt: moment().format(\"YYYY-MM-DDTHH:mm:ss\")\n }]\n })\n setMessage((state?: MessageRequest) => {\n if(!state) return undefined;\n return ({\n ...state,\n content : \"\",\n parentId: undefined,\n parentContent: \"\",\n examId: messageFilter.examId,\n examTitle: messageFilter.examId ? message.examTitle : \"\"\n })\n });\n setMessageStatus(MessageStatus.Sending)\n try {\n \n await apiAddMessage(selectedConversation.id, {\n ...message,\n examId: !!userId ? examId : message.examId\n });\n } catch (error) {\n console.log({ error });\n setMessageStatus(MessageStatus.SentError)\n setMessages((state: MessageResponse[]) => {\n return [...state.filter(i => i.id !== 0)]\n })\n toast.error(error.response?.data)\n }\n loadingRef.current = false;\n };\n\n const handleAddExamMessage = (examId: number, title: string, examCode: string) => {\n setMessage(\n !!message\n ? {\n ...message,\n examId,\n examCode,\n examTitle: title,\n parentId: undefined,\n parentContent: \"\",\n }\n : {\n examId,\n examCode,\n content: \"\",\n examTitle: title,\n parentId: undefined,\n parentContent: \"\",\n }\n );\n };\n\n const handleReplyMessage = (\n parentId: number,\n content: string,\n examId?: number\n ) => {\n setMessage({\n content: \"\",\n examId,\n parentId,\n parentContent: content,\n examTitle: message?.examTitle,\n });\n };\n\n const handleClearReply = () => {\n message &&\n setMessage({\n ...message,\n parentId: undefined,\n examId: messageFilter.examId ? messageFilter.examId : undefined,\n parentContent: \"\",\n examTitle: messageFilter.examId ? message.examTitle : \"\",\n });\n };\n\n const handleChangeInput = (text: string) => {\n setMessage({\n ...message,\n content: text,\n });\n };\n\n const handleFilterExam = (val: any) => {\n const examTitle = val?.label?.split(\" \")?.slice(0, -1).join(\" \");\n setMessage({\n examId: val?.value,\n content: \"\",\n examTitle: examTitle,\n parentId: undefined,\n parentContent: \"\",\n });\n \n handleChangeExamId(val);\n };\n\n const messageList: IChatItemProps[] = useMemo(() => {\n if (!selectedConversation) return [];\n \n let examCode: string | undefined = undefined;\n const results = messages.map((i: MessageResponse, index: number) => {\n let isFirst = index === 0;\n let isLast = index === messages.length - 1;\n if (\n index > 0 &&\n ((messages[index - 1].isStudent !== i.isStudent && !i.isSystemLog) ||\n i.isSystemLog || (messages[index - 1].examId !== i.examId))\n )\n isFirst = true;\n if (\n index < messages.length - 1 &&\n ((messages[index + 1].isStudent !== i.isStudent && i.examId !== messages[index + 1].examId) || i.examId !== messages[index + 1].examId ||\n messages[index + 1].isSystemLog)\n )\n isLast = true;\n const name = isStudent ? \"You\" : selectedConversation.student.displayName;\n let content = i?.content;\n let showExamHeader = false;\n if (examCode != i.exam?.code && !messageFilter.examId && !userId) {\n if (i.exam?.code) showExamHeader = true;\n examCode = i.exam?.code;\n }\n switch (i.type) {\n case MessageSourceType.Exam:\n switch (i.action) {\n case MessageAction.Took:\n content = `${name} took the exam ${i.exam?.title}`;\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return {\n id: i.id,\n isMe: isStudent === i.isStudent,\n avatar: isStudent\n ? selectedConversation.teacher.avatar\n : selectedConversation.student.avatar,\n name: selectedConversation.student.displayName,\n isRead: i.isRead,\n createdAt: i.createdAt,\n content,\n isFirst,\n isLast,\n isSystemLog: i.isSystemLog,\n examCode: !messageFilter.examId && !userId ? i.exam?.code : undefined,\n examId: i.exam?.id,\n examTitle: i.exam?.title,\n type: i.exam?.code ? ChatItemType.Exam : undefined,\n showExamHeader,\n actionLink:\n i.exam?.code && (isStudent ? `/student/check/live-result?examCode=${i.exam?.code}` : `/teacher/exam-status/main?examCode=${i.exam?.code}`),\n parentId: i.parentId,\n parentContent: i.parentContent,\n status: i.id ? MessageStatus.Default : messageStatus\n };\n });\n return results\n }, [\n JSON.stringify(messages),\n JSON.stringify(message),\n isStudent,\n JSON.stringify(selectedConversation),\n messageFilter.examId,\n isStudent,\n userId,\n messageStatus\n ]);\n\n const handleNewMessageSent = (data: MessageResponse) => {\n if (\n (!messageFilter.examId && !examId) ||\n (messageFilter.examId && data.examId === messageFilter.examId) ||\n (examId && examId === data.examId)\n ) {\n setScrollToEnd(true)\n setMessages((state: MessageResponse[]) => {\n if(state.some(i => i.id === 0)) return [...state.filter(i => i.id !== 0), data];\n else return [...state, data]\n });\n }\n onUpdateLastMessage?.(data);\n };\n\n const handleMessageMarkRead = (data: number[]) => {\n setMessages((state: MessageResponse[]) => [...state.map(i => ({\n ...i,\n isRead: data.includes(i.id || 0) ? true : i.isRead \n }))])\n }\n\n const handleLoadMoreMessages = () => {\n if(handleLoadMore()){\n getMessageConversation()\n }\n }\n\n\n const cleanupPusher = () => {\n pusher.current?.unbind(\"new-message-event\", handleNewMessageSent);\n pusher.current?.unbind(\"message-read-event\", handleMessageMarkRead);\n channelName.current &&\n pusher.current &&\n pusher.current.unsubscribe(channelName.current);\n };\n\n useEffect(() => {\n if (\n PUSHER_CONFIG.cluster &&\n PUSHER_CONFIG.key &&\n !!selectedConversation?.id\n ) {\n const token = getAccessToken();\n pusher.current = new Pusher(PUSHER_CONFIG.key, {\n cluster: PUSHER_CONFIG.cluster,\n authEndpoint: `${BASE_URL}/api/auth/pusher`,\n auth: {\n params: {},\n headers: {\n Authorization: `Bearer ${token}`,\n },\n },\n });\n channelName.current = `presence-conversation-channel-${selectedConversation?.id}`;\n channel.current = pusher.current.subscribe(channelName.current);\n pusher.current.bind(\"new-message-event\", handleNewMessageSent);\n pusher.current.bind(\"message-read-event\", handleMessageMarkRead);\n }\n return cleanupPusher;\n }, [selectedConversation?.id, messageFilter.examId, examId]);\n\n useEffect(() => {\n const getConversation = async () => {\n resetMessages()\n setScrollToEnd(true)\n if (conversation?.id !== undefined) {\n setSelectedConversation(conversation);\n return;\n }\n if (!userId) return;\n dispatch(setLoading(true));\n try {\n let res = await apiGetConversationByUserId(userId);\n if (!res.data.data) {\n res = await createConversation(userId);\n }\n setSelectedConversation(res.data.data);\n } catch (error) {\n console.log({\n error,\n });\n }\n dispatch(setLoading(false));\n };\n getConversation();\n }, [conversation?.id, userId]);\n\n const handleMarkRead = useCallback(async () => {\n if (!selectedConversation?.id) return;\n try {\n await apiMarkReadMessage(selectedConversation.id, -1);\n } catch (error) {\n console.log({error});\n }\n }, [selectedConversation?.id])\n\n const getMessageConversation = async () => {\n if(!roles.length) return\n if (selectedConversation?.id === undefined) return;\n try {\n if (selectedConversation.id === 0) {\n const userId = isStudent ? selectedConversation.teacher.id : selectedConversation.student.id\n const res = await createConversation(userId);\n await onCreateConversationSuccess?.(res.data.data?.id);\n } else {\n if(firstLoadRef.current){\n await handleMarkRead();\n firstLoadRef.current= false;\n }\n await getMessageList(selectedConversation.id, examId);\n onGetMessagesSuccess?.();\n }\n } catch (error) {\n toast.error(\"Fail to fetch data!\")\n }\n };\n\n const handleConversationChange = () => {\n resetMessages()\n setScrollToEnd(true)\n }\n\n useEffect(() => {\n getMessageConversation();\n }, [JSON.stringify(selectedConversation), JSON.stringify(roles), JSON.stringify(messageFilter), examId]);\n\n const userName = (isStudent\n ? selectedConversation?.teacher?.displayName\n : selectedConversation?.student?.displayName) || \"\";\n const userAvatar = (isStudent\n ? selectedConversation?.teacher?.avatar\n : selectedConversation?.student?.avatar) || \"\";\n\n\n return {\n chatHeaderProps: {\n name: userName,\n avatar: userAvatar,\n options: exams,\n selectedOption: messageFilter.examId,\n onChangeOption: handleFilterExam,\n },\n chatListProps: {\n messages: messageList,\n onAddExamMessage: handleAddExamMessage,\n onReply: handleReplyMessage,\n onReTrySendMessage: handleAddMessage\n },\n inputProps: {\n text: message?.content || \"\",\n parentText: message?.parentContent,\n examTitle: message?.examTitle,\n onChangeInput: handleChangeInput,\n onSubmit: handleAddMessage,\n onClearReply: !messageFilter.examId || message?.parentContent ? handleClearReply : undefined,\n },\n isScrollToEnd,\n isLoadingMessages,\n exams,\n messageList,\n selectedConversation,\n messageStatus,\n messageFilter,\n handleToggleScrollToEnd,\n handleLoadMoreMessages,\n getMessageList,\n handleFilterExam,\n setMessage,\n resetMessages: handleConversationChange,\n getMessageConversation,\n handleMarkRead\n };\n};\n\nexport default useChatContainer;\n","import { api } from \"../../../configs/api\"\nimport { BASE_URL } from \"../../../utils/constants\"\nimport { ConversationFilter } from \"../configs/types\"\n\nconst STUDENT_STATUS_URL = `${BASE_URL}/api/user`\n\nexport const getStudentConversationListApi = (query: ConversationFilter) => \n api.get(`${STUDENT_STATUS_URL}/GetStudentConversations`, {params: query})\n","import { ChangeEvent, useEffect, useState } from \"react\"\nimport { ConversationFilter, ConversationResponse, MessageAction, MessageResponse, MessageSourceType } from \"../configs/types\"\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { CONVERSATION_DEFAULT_FILTER } from \"../configs/constants\";\nimport { getListConversation } from \"../apiClient/conversationService\";\nimport { setAlert, setLoading } from \"../../../redux/commons/action\";\nimport { getStudentConversationListApi } from \"../apiClient/studentStatusService\";\nimport _ from \"lodash\";\n\nlet isFirstLoad = true\nconst useConversationList = () => {\n const dispatch = useDispatch()\n\n const user = useSelector((state: any) => state?.common?.user)\n const roles = user?.roles || []\n const isStudent = roles.includes(\"Student\")\n const [selectedConversation, setSelectedConversation]= useState<ConversationResponse>();\n const [conversations, setConversations] = useState<ConversationResponse[]>([])\n const [conversationFilter, setConversationFilter] = useState<ConversationFilter>(CONVERSATION_DEFAULT_FILTER);\n\n const handleChangeSelectedConversation = (val: ConversationResponse) => {\n setSelectedConversation(val)\n }\n\n const handleNewMessageConversation = (val: ConversationResponse) => {\n setConversations((state: ConversationResponse[]) => {\n const index = state.findIndex(i => i.id === val.id)\n if(index > -1 && JSON.stringify(val) !== JSON.stringify(state[index])){\n return [val, ...state.slice(0, index), ...state.slice(index + 1)]\n }\n else return [val, ...state]\n })\n setSelectedConversation((state: ConversationResponse | undefined) => {\n if(!state) return val\n return state\n })\n }\n\n const handleMessageReadConversation = (id: number, totalUnread: number) => {\n setConversations((state: ConversationResponse[]) => {\n const index = state.findIndex(i => i.id === id)\n \n if(index === -1 || totalUnread === state[index].totalUnReadMessage) return state\n return [...state.slice(0, index), {\n ...state[index],\n totalUnReadMessage: totalUnread\n }, ...state.slice(index + 1)]\n })\n setSelectedConversation((state: ConversationResponse | undefined) => {\n if(!!state) return ({\n ...state,\n totalUnReadMessage: totalUnread\n })\n return state\n })\n }\n\n const handleChangeTextSearch = (e: ChangeEvent<HTMLInputElement>) => {\n setConversationFilter((state: ConversationFilter) => ({\n ...state,\n textSearch: e.target.value\n }));\n };\n\n const handleChangeFilter = (filter: ConversationFilter) => {\n setConversationFilter((state: ConversationFilter) => ({\n ...state,\n ...filter\n }))\n }\n\n const formatConversationLastMessageContent = (conversation: ConversationResponse) => {\n if(!conversation?.lastMessage) return \"\"\n let content = conversation.lastMessage.content\n\n switch (conversation.lastMessage.type) {\n case MessageSourceType.Exam:\n switch (conversation.lastMessage.action) {\n case MessageAction.Took:\n content = `${isStudent ? \"You\" : conversation.student.displayName} took the exam ${conversation.lastMessage.exam?.title}`\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return content\n }\n\n const getConversationList = async () => {\n if(!roles.length) return\n isFirstLoad && dispatch(setLoading(true));\n try {\n const apiGetConversations = isStudent ? getListConversation: getStudentConversationListApi\n const res = await apiGetConversations(conversationFilter)\n setConversations(res.data.items || [])\n \n !selectedConversation && setSelectedConversation(res.data.items?.[0])\n } catch (error) {\n setSelectedConversation(undefined)\n dispatch(setAlert({\n type: \"danger\",\n message: \"Fail to fetch data!\"\n }))\n }\n isFirstLoad && dispatch(setLoading(false));\n if(isFirstLoad) isFirstLoad = false;\n }\n\n const handleUpdateTotalUnreadMessage = () => {\n if(!selectedConversation?.id) return\n setConversations((state: ConversationResponse[]) => {\n const updateIndex = state.findIndex(i => i.id === selectedConversation.id)\n if(updateIndex < 0) return state\n return [\n ...state.slice(0, updateIndex),\n {\n ...state[updateIndex],\n totalUnReadMessage: 0\n },\n ...state.slice(updateIndex + 1)\n ] \n })\n }\n\n const handleUpdateLastMessage = (lastMessage: MessageResponse) => {\n setConversations((state: ConversationResponse[]) => {\n const updateIndex = state.findIndex(i => i.id === lastMessage.conversationId)\n if(updateIndex < 0) return state\n console.log({\n lastMessage\n });\n \n return [\n {\n ...state[updateIndex],\n lastMessage\n },\n ...state.slice(0, updateIndex),\n ...state.slice(updateIndex + 1)\n ] \n })\n }\n\n const handleCreateConversationSuccess = async (id: number) => {\n if(!selectedConversation) return\n setSelectedConversation({\n ...selectedConversation,\n id,\n })\n const index = conversations.findIndex(i => i.student.id === selectedConversation?.student.id && i.teacher.id === selectedConversation?.teacher.id)\n if(index > -1) {\n setConversations([\n ...conversations.slice(0, index), {\n ...selectedConversation,\n id,\n },\n ...conversations.slice(index + 1)\n ])\n }\n }\n\n \n useEffect(() => {\n getConversationList()\n }, [JSON.stringify(conversationFilter), roles.length])\n \n useEffect(() => {\n window.document.title = \"Q&A\"\n }, [])\n\n return {\n isStudent,\n conversationFilter,\n selectedConversation,\n conversations,\n handleUpdateTotalUnreadMessage,\n handleChangeFilter,\n handleChangeSelectedConversation,\n handleChangeTextSearch,\n setSelectedConversation,\n handleUpdateLastMessage,\n getConversationList,\n formatConversationLastMessageContent,\n handleNewMessageConversation,\n handleCreateConversationSuccess,\n handleMessageReadConversation\n }\n}\n\nexport default useConversationList","import Pusher, { Channel } from \"pusher-js\"\nimport { useSelector } from \"react-redux\"\nimport { BASE_URL, PUSHER_CONFIG } from \"../../../utils/constants\"\nimport { useEffect, useRef } from \"react\"\nimport getAccessToken from \"../../../utils/getAccessToken\"\nimport { ConversationResponse } from \"../configs/types\"\nconst usePusherConversation = (onNewMessageConversation?: (data: ConversationResponse) => void, onReadMessageConversation?: (id: number, total: number) => void) => {\n const pusher = useRef<Pusher>()\n const channel = useRef<Channel>()\n const channelName = useRef<string>()\n\n const userId = useSelector((state: any) => state?.common?.user?.id)\n\n const handleNewMessageConversationCreated = (data: ConversationResponse) => {\n onNewMessageConversation?.(data)\n }\n\n const handleReadMessageConversation = (data: ConversationResponse) => {\n onReadMessageConversation?.(data.id, data.totalUnReadMessage)\n }\n\n const cleanupPusher = () => {\n channel.current && channel.current.unbind(\"message-conversation-event\", handleNewMessageConversationCreated);\n channel.current && channel.current.unbind(\"message-conversation-read-event\", handleReadMessageConversation)\n channelName.current &&\n pusher.current &&\n pusher.current.unsubscribe(channelName.current);\n };\n\n useEffect(() => {\n if (\n PUSHER_CONFIG.cluster &&\n PUSHER_CONFIG.key &&\n !!userId\n ) {\n const token = getAccessToken()\n pusher.current = new Pusher(PUSHER_CONFIG.key, {\n cluster: PUSHER_CONFIG.cluster,\n authEndpoint: `${BASE_URL}/api/auth/pusher`,\n auth: {\n params: {},\n headers: {\n Authorization: `Bearer ${token}`\n }\n }\n })\n channelName.current = `presence-conversation-channel-userId-${userId}`\n \n channel.current = pusher.current.subscribe(channelName.current)\n channel.current.bind(\n \"message-conversation-event\",\n handleNewMessageConversationCreated\n )\n channel.current.bind(\n \"message-conversation-read-event\",\n handleReadMessageConversation\n )\n }\n return cleanupPusher\n }, [userId])\n return {}\n}\n\nexport default usePusherConversation\n","import React from \"react\"\nimport CreatableSelect from 'react-select/creatable';\n\nconst CustomCreatable = ({\n defaultValue,\n options,\n isDisabled,\n scrollBottom,\n value,\n isMulti,\n ...rest\n}: any) => {\n const initialValues = Array.isArray(value) ? options.filter((i: any)=> value.includes(i.value)) : isMulti ? options.filter((i: any) => i.value == value) : options.find((i: any) => i.value == value)\n \n return (\n <CreatableSelect\n isClearable\n isDisabled={isDisabled}\n options={options}\n value={initialValues}\n menuPlacement={scrollBottom ? \"top\" : \"auto\"}\n isMulti={isMulti}\n {...rest}\n\n />\n )\n}\n\nexport default CustomCreatable\n","import React from \"react\"\nimport AsyncSelect from \"react-select\"\n\nconst CustomAsyncSelect = ({\n isDefault,\n defaultValue,\n options,\n isDisabled,\n scrollBottom,\n value,\n isMulti,\n ...rest\n}: any) => {\n const initialValues = Array.isArray(value) ? options.filter((i: any)=> value.includes(i.value)) : isMulti ? options.filter((i: any) => i.value == value) : options.find((i: any) => i.value == value)\n \n return (\n <AsyncSelect\n isDisabled={isDisabled}\n options={options}\n value={!isDefault ? initialValues : undefined}\n defaultValue={isDefault ? initialValues : undefined}\n menuPlacement={scrollBottom ? \"top\" : \"auto\"}\n isMulti={isMulti}\n {...rest}\n\n />\n )\n}\n\nexport default CustomAsyncSelect\n","import { Exam } from \"./types\";\n\nexport const DURATION_OPTIONS = Array.from({ length: 120 }, (_, i) => i + 1);\nexport const SCORE_OPTIONS = Array.from({ length: 10 }, (_, i) => i + 1);\nexport const QUESTION_OPTIONS = Array.from({ length: 40 }, (_, i) => i + 1);\nexport const ANSWER_OPTIONS = Array.from({ length: 9 }, (_, i) => i + 2);\nexport const DEFAULT_SCORE = 2\nexport const DEFAULT_ANSWER_COUNT = 5\n\nexport const DEFAULT_EXAM: Exam = {\n questions: [\n {\n article: 1,\n correctAnswers: [1],\n numberOfAnswers: DEFAULT_ANSWER_COUNT,\n score: DEFAULT_SCORE,\n questionOrder: 1\n }\n ],\n title: \"\",\n duration: 1\n}","import React, { FC } from 'react'\nimport { FormGroup, Input, Label } from \"reactstrap\"\nimport CustomSelect from \"../../../components/Selects/CustomSelect\"\n// import { useTranslation } from 'react-i18next'\nimport styles from \"../styles/styles.module.scss\"\nimport { DEFAULT_SCORE, SCORE_OPTIONS } from '../configs/constants'\n\nexport interface QuestionViewProps{\n index: number\n question: any\n answerCount: number\n isDisabled?: boolean\n onChangeCorrectAnswers: (value: any, index: number) => void\n onChangeScoreAnswer: (value: number, index: number) => void\n}\nconst QuestionView: FC<QuestionViewProps> = ({\n index,\n question,\n answerCount,\n isDisabled,\n onChangeCorrectAnswers,\n onChangeScoreAnswer\n}) => {\n // const { t } = useTranslation()\n \n const scoreOptions = SCORE_OPTIONS.map(i => ({\n label: DEFAULT_SCORE === i ? `${i}점 (기본값)` : `${i}점`,\n value: i\n }))\n\n return <div className=\"d-flex justify-content-between\">\n <div className=\"d-flex flex-grow-1\">\n <div className={`${styles[\"question-title\"]} me-2`}>\n 문제 {question.questionOrder + 1}번\n </div>\n <div className=\"d-flex flex-grow-1\">\n {\n Array.from({ length: answerCount }, (_, i) => i + 1).map(i => (\n <FormGroup className=\"d-flex flex-column px-4\">\n <Label htmlFor={`answer-${i}`} className={`${styles[\"question-label\"]}`}>{i}번</Label>\n <Input\n id={`answer-${i}`}\n type={\"radio\"}\n checked={question.correctAnswers.includes(i)}\n onClick={() => onChangeCorrectAnswers(i, index)}\n disabled={isDisabled}\n />\n </FormGroup>\n ))\n }\n </div>\n </div>\n <div className=\"d-flex align-items-center\">\n <FormGroup className=\"mx-3\" style={{\n width: \"140px\"\n }}>\n <CustomSelect\n value={question.score}\n options={scoreOptions}\n onChange={(value: any) => onChangeScoreAnswer(value.value, index)}\n isDisabled={isDisabled}\n />\n </FormGroup>\n </div>\n </div>\n}\n\nexport default QuestionView","import React, { FC } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport { PiDotsNineLight } from \"react-icons/pi\"\nimport { Col, FormGroup, Label, Row } from \"reactstrap\"\nimport CustomSelect from \"../../../components/Selects/CustomSelect\"\nimport styles from \"../styles/styles.module.scss\"\nimport QuestionView from \"./QuestionView\"\nimport { ANSWER_OPTIONS, QUESTION_OPTIONS } from \"../configs/constants\"\n\nexport interface ArticleGroupViewProps {\n categoryOptions: any[]\n article: number\n questionCount: number\n categoryId?: number\n answerCount: number\n questions: any\n isMultiple?: boolean\n isActive?: boolean\n isDisabled?: boolean\n onChangeQuestionCount: (article: number, questionCount: number, answerCount: number) => void\n onChangeCategory: (article: number, categoryId: number) => void\n onChangeAnswerCount: (article: number, newAnswerCount: number, answerCount: number) => void\n onChangeCorrectAnswers: (article: number, index: number, answer: number) => void\n onChangeScoreAnswer: (article: number, index: number, score: number) => void\n}\nconst ArticleGroupView: FC<ArticleGroupViewProps> = ({\n categoryOptions,\n article,\n questions,\n answerCount,\n questionCount,\n categoryId,\n isActive,\n isDisabled,\n onChangeQuestionCount,\n onChangeCategory,\n onChangeAnswerCount,\n onChangeCorrectAnswers,\n onChangeScoreAnswer\n}) => {\n const { t } = useTranslation()\n\n const handleChangeQuestionCount = (value: any) => {\n onChangeQuestionCount(article, value?.value, answerCount)\n }\n\n const handleChangeCategory = (value: any) => {\n onChangeCategory(article, value?.value)\n }\n \n const handleChangeAnswerCount = (value: any) => {\n onChangeAnswerCount(article, value?.value, answerCount)\n }\n\n const handleChangeCorrectAnswers = (value: any, index: number) => {\n onChangeCorrectAnswers(article, index, value)\n }\n\n const handleChangeScoreAnswer = (value: number, index: number) => {\n onChangeScoreAnswer(article, index, value)\n }\n\n const questionOptions = QUESTION_OPTIONS.map(i => ({\n label: `${i}개`,\n value: i\n }))\n\n const answerOptions = ANSWER_OPTIONS.map(i => ({\n label: `${i}번`,\n value: i\n }))\n return (\n <div className={`d-flex ${styles[\"question\"]} ${isActive ? styles[\"question--active\"] : \"\"}`}>\n <div className=\"py-1\">\n <PiDotsNineLight size={18}/>\n </div>\n <div className=\"px-4\">\n <Row>\n <Col xs={12}>\n <p className={`mb-0 ${styles[\"question-article\"]}`}>문항</p>\n <p className={`text-center ${styles[\"question-article\"]}`}>{article}</p>\n </Col>\n </Row>\n </div>\n <div className=\"flex-grow-1\">\n <Row>\n <Col xs={3}>\n <FormGroup>\n <Label htmlFor=\"question_count\" className={`${styles[\"question-label\"]}`}>\n {t(\"question_count\")}\n </Label>\n <CustomSelect\n inputId=\"question_count\"\n value={questionCount}\n options={questionOptions}\n onChange={handleChangeQuestionCount}\n isDisabled={isDisabled}\n />\n </FormGroup>\n </Col>\n <Col xs={3}>\n <FormGroup>\n <Label htmlFor=\"category\" className={`${styles[\"question-label\"]}`}>{t(\"category\")}</Label>\n <CustomSelect\n inputId=\"category\"\n value={categoryId}\n options={categoryOptions}\n onChange={handleChangeCategory}\n isDisabled={isDisabled}\n />\n </FormGroup>\n </Col>\n <Col xs={3}>\n <FormGroup>\n <Label htmlFor=\"answer_count\" className={`${styles[\"question-label\"]}`}>\n {t(\"answer_count\")}\n </Label>\n <CustomSelect\n inputId=\"answer_count\"\n value={answerCount}\n options={answerOptions}\n onChange={handleChangeAnswerCount}\n isDisabled={isDisabled}\n />\n </FormGroup>\n </Col>\n <Col xs={3}>\n </Col>\n </Row>\n <div>\n {\n questions.map((q: any, index: number) => (\n <QuestionView\n key={index}\n question={q}\n answerCount={answerCount}\n index={index}\n onChangeCorrectAnswers={handleChangeCorrectAnswers}\n onChangeScoreAnswer={handleChangeScoreAnswer}\n isDisabled={isDisabled}\n />\n ))\n }\n </div>\n </div>\n </div>\n )\n}\n\nexport default ArticleGroupView\n","import { DEFAULT_ANSWER_COUNT, DEFAULT_SCORE, DURATION_OPTIONS } from \"../configs/constants\"\nimport { ArticleGroup, Exam, Question } from \"../configs/types\"\nimport { ChangeEvent, useMemo } from \"react\"\nimport { useTranslation } from \"react-i18next\"\nimport _ from \"lodash\"\n\ninterface Props {\n exam: Exam\n onChangeExam: (value: Exam) => void\n}\n\nconst useExamDetailView = (props: Props) => {\n const { exam, onChangeExam } = props\n\n const { t } = useTranslation()\n const handleChangeQuestionCount = (\n article: number,\n questionCount: number,\n answerCount: number\n ) => {\n if (!exam) return\n const examQuestions = exam.questions\n const questions = examQuestions.filter(i => i.article === +article)\n const prevQuestions = examQuestions.filter(i => i.article < +article)\n const nextQuestions = examQuestions.filter(i => i.article > +article)\n const lastOrder = questions[questions.length - 1].questionOrder\n if (questions.length === questionCount) return\n if (questions.length < questionCount) {\n const additionalQuestions: Question[] = Array.from({\n length: questionCount - questions.length\n }).map((_, index) => ({\n article: +article,\n correctAnswers: [1],\n numberOfAnswers: answerCount,\n categoryId: questions[0]?.categoryId,\n score: DEFAULT_SCORE,\n questionOrder: lastOrder + index + 1\n }))\n const newQuestions = [\n ...prevQuestions,\n ...questions,\n ...additionalQuestions,\n ...nextQuestions.map(i => ({\n ...i,\n questionOrder: i.questionOrder + questionCount - questions.length\n }))\n ]\n\n onChangeExam({\n ...exam,\n questions: [...newQuestions]\n })\n } else {\n const remainQuestions = questions.slice(0, questionCount)\n const newQuestions = [\n ...prevQuestions,\n ...remainQuestions,\n ...nextQuestions.map(i => ({\n ...i,\n questionOrder: i.questionOrder - questions.length + questionCount\n }))\n ]\n\n onChangeExam({\n ...exam,\n questions: [...newQuestions]\n })\n }\n }\n\n const handleChangeCategory = (article: number, categoryId: number) => {\n if (!exam) return\n const examQuestions = exam.questions\n const questions = examQuestions.filter(i => i.article === +article)\n const otherQuestions = examQuestions.filter(i => i.article !== +article)\n onChangeExam({\n ...exam,\n questions: [\n ...otherQuestions,\n ...questions.map(q => ({\n ...q,\n categoryId\n }))\n ]\n })\n }\n\n const handleChangeAnswerCount = (\n article: number,\n newAnswerCount: number,\n answerCount: number\n ) => {\n if (!exam) return\n if (newAnswerCount === answerCount) return\n const examQuestions = exam.questions\n const questions = examQuestions.filter(i => i.article === +article)\n const otherQuestions = examQuestions.filter(i => i.article !== +article)\n if (answerCount < newAnswerCount) {\n onChangeExam({\n ...exam,\n questions: [\n ...otherQuestions,\n ...questions.map(q => ({\n ...q,\n numberOfAnswers: newAnswerCount\n }))\n ]\n })\n } else {\n onChangeExam({\n ...exam,\n questions: [\n ...otherQuestions,\n ...questions.map(q => ({\n ...q,\n numberOfAnswers: newAnswerCount,\n correctAnswers: q.correctAnswers.filter(\n i => i <= newAnswerCount\n )\n }))\n ]\n })\n }\n }\n\n const handleChangeCorrectAnswers = (\n article: number,\n index: number,\n answer: number\n ) => {\n if (!exam) return\n const examQuestions = exam.questions\n const questions = examQuestions.filter(i => i.article === +article)\n const otherQuestions = examQuestions.filter(i => i.article !== +article)\n const selectedQuestion = questions[index]\n onChangeExam({\n ...exam,\n questions: [\n ...otherQuestions,\n ...questions.slice(0, index),\n {\n ...selectedQuestion,\n correctAnswers: [answer]\n },\n ...questions.slice(index + 1)\n ]\n })\n }\n\n const handleChangeScoreAnswer = (\n article: number,\n index: number,\n score: number\n ) => {\n if (!exam) return\n const examQuestions = exam.questions\n const questions = examQuestions.filter(i => i.article === +article)\n const otherQuestions = examQuestions.filter(i => i.article !== +article)\n const selectedQuestion = questions[index]\n if (score === selectedQuestion.score) return\n onChangeExam({\n ...exam,\n questions: [\n ...otherQuestions,\n ...questions.slice(0, index),\n {\n ...selectedQuestion,\n score\n },\n ...questions.slice(index + 1)\n ]\n })\n }\n\n const handleChangeDuration = (value: any) => {\n if (!exam) return\n onChangeExam({\n ...exam,\n duration: value?.value\n })\n }\n\n const handleChangeTitle = (e: ChangeEvent<HTMLInputElement>) => {\n if (!exam) return\n onChangeExam({\n ...exam,\n title: e.target.value\n })\n }\n\n const handleAddArticle = () => {\n if (!exam) return\n const maxArticle = _.maxBy(exam.questions, \"article\")?.article || 0\n const maxOrder = _.maxBy(exam.questions, \"questionOrder\")?.questionOrder || 0\n onChangeExam({\n ...exam,\n questions: [\n ...exam.questions,\n {\n article: maxArticle + 1,\n correctAnswers: [1],\n numberOfAnswers: DEFAULT_ANSWER_COUNT,\n score: DEFAULT_SCORE,\n questionOrder: maxOrder + 1\n }\n ]\n })\n }\n\n const examGroupByArticle: ArticleGroup[] = useMemo(() => {\n if (!exam) return []\n const articles = []\n const groupedArticle = _.groupBy(exam.questions, \"article\")\n for (const key in groupedArticle) {\n if (Object.prototype.hasOwnProperty.call(groupedArticle, key)) {\n const questions: Question[] = groupedArticle[key]\n articles.push({\n article: +key,\n categoryId: questions.find(i => !!i.categoryId)?.categoryId,\n answerCount:\n _.maxBy(questions, \"numberOfAnswers\")\n ?.numberOfAnswers || DEFAULT_ANSWER_COUNT,\n questionCount: questions.length,\n questions\n })\n }\n }\n return _.sortBy(articles, \"article\")\n }, [JSON.stringify(exam)])\n \n const durationOptions = useMemo(() => {\n const options = DURATION_OPTIONS.map((i) => (\n {\n label: `${i}분`,\n value: i\n }\n ));\n if(!!exam.duration && exam.duration > DURATION_OPTIONS[DURATION_OPTIONS.length - 1]) return [...options, {\n label: `${exam.duration}분`,\n value: exam.duration\n }]\n return options\n }, [exam.duration])\n \n return {\n t,\n durationOptions,\n examGroupByArticle,\n handleAddArticle,\n handleChangeScoreAnswer,\n handleChangeTitle,\n handleChangeDuration,\n handleChangeCorrectAnswers,\n handleChangeAnswerCount,\n handleChangeQuestionCount,\n handleChangeCategory\n }\n}\n\nexport default useExamDetailView\n","import React from 'react';\nimport { FC } from \"react\"\nimport { Button, Col, FormGroup, Input, Label, Row } from \"reactstrap\"\nimport { ExamDetailViewProps } from '../configs/interfaces';\nimport CustomSelect from '../../../components/Selects/CustomSelect';\nimport ArticleGroupView from '../components/ArticleGroupView';\nimport { FaPlusCircle } from 'react-icons/fa';\nimport styles from \"../styles/styles.module.scss\"\nimport useExamDetailView from '../hooks/useExamDetailView';\nimport { ArticleGroup } from '../configs/types';\n\nconst ExamDetailView: FC<ExamDetailViewProps> = ({\n className = \"\",\n categoryOptions,\n exam,\n isUsingMui = true,\n isDisabled,\n onChangeExam\n}) => {\n const {\n t,\n durationOptions,\n examGroupByArticle,\n handleAddArticle,\n handleChangeScoreAnswer,\n handleChangeTitle,\n handleChangeDuration,\n handleChangeCorrectAnswers,\n handleChangeAnswerCount,\n handleChangeQuestionCount,\n handleChangeCategory\n } = useExamDetailView({\n exam,\n onChangeExam\n })\n \n return <Row className={`${className}`}>\n <Col xs={5}>\n <FormGroup>\n <Label className={`${styles[\"question-label\"]}`} htmlFor=\"title\">{t(\"title\")}</Label>\n <Input disabled={isDisabled} className={`w-100 rounded-2 ${styles[\"question-input\"]}`} value={exam.title} id=\"title\" placeholder={t(\"enter_title\")} onChange={handleChangeTitle}/>\n </FormGroup>\n </Col>\n <Col xs={3}>\n <FormGroup>\n <Label className={`${styles[\"question-label\"]}`} htmlFor=\"duration\">{t(\"duration\")}</Label>\n <CustomSelect\n inputId=\"duration\"\n value={exam.duration}\n options={durationOptions}\n onChange={handleChangeDuration}\n isDisabled={isDisabled}\n />\n </FormGroup>\n </Col>\n <Col xs={4}></Col>\n {\n examGroupByArticle.map((i: ArticleGroup, index: number) => (\n <Col xs={12} key={i.article} className={`${index === 0 && !isUsingMui ? \"mt-3\" : \"\"} ${!isUsingMui ? \"mb-4\" : \"\"}`}>\n <ArticleGroupView\n {...i}\n categoryOptions={categoryOptions}\n isActive={index === examGroupByArticle.length - 1}\n onChangeQuestionCount={handleChangeQuestionCount}\n onChangeCategory={handleChangeCategory}\n onChangeAnswerCount={handleChangeAnswerCount}\n onChangeCorrectAnswers={handleChangeCorrectAnswers}\n onChangeScoreAnswer={handleChangeScoreAnswer}\n isDisabled={isDisabled}\n />\n </Col>\n ))\n }\n <Col xs={12}>\n <Button disabled={isDisabled} className={`w-100 d-flex justify-content-center align-items-center ${styles[\"question-btn\"]}`} color=\"primary\" outline onClick={handleAddArticle}>\n <FaPlusCircle className=\"me-2\"/>\n 문항 추가하기\n </Button>\n </Col>\n </Row>\n}\n\nexport default ExamDetailView","import { createBrowserHistory } from \"history\"\nconst historyCore = createBrowserHistory()\n\nimport { setLoading, setAlert, setUser, setLanguage } from \"./redux/commons/action\"\nimport { BASE_URL, ACCESS_TOKEN, PUSHER_CONFIG, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE } from \"./utils/constants\"\nimport utcToLocalTime from \"./utils/utcToLocalTime\"\nimport Login from \"./containers/Login/views/Login\"\nimport store from \"./store\"\n\nimport NotFound from \"./components/Commons/NotFound\"\nimport Loading from \"./components/Loading/Loading\"\nimport LayoutContext from \"./layouts/LayoutContext\"\nimport { api } from \"./configs/api\"\nimport { ConfirmDialog } from \"./components/Dialogs/ConfirmDialog\"\nimport CommonDialog from \"./components/Dialogs/CommonDialog\"\nimport CommonAlert from \"./components/Alerts/CommonAlert\"\nimport formatTime from \"./utils/formatTime\"\nimport diffFromNow from \"./utils/diffFromNow\"\nimport CustomPagination from \"./components/Paginations/CustomPagination\"\nimport useGoogleSignOut from \"./utils/useGoogleSignOut\"\nimport { ExamEvent } from \"./utils/types\"\nimport i18n from \"./i18n\"\nimport TheLanguageDropdown from \"./layouts/TheLanguageDropdown\"\nimport { useTranslation, I18nextProvider } from \"react-i18next\"\nimport minutesToTimeSpan from \"./utils/minutesToTimeSpan\"\nimport toISOString from \"./utils/toISOString\"\nimport canAccessRoute from \"./utils/canAccessRoute\"\nimport CustomSelect from \"./components/Selects/CustomSelect\"\nimport getAccessToken from \"./utils/getAccessToken\"\nimport ChatContainer, { IChatContainerProps } from \"./components/Chats/ChatContainer\"\nimport { ChatItemType, IChatItemProps } from \"./components/Chats/ChatItem\"\nimport { IChatHeaderProps } from \"./components/Chats/ChatHeader\"\nimport { IInputChatProps } from \"./components/Chats/InputChat\"\nimport useChatContainer from \"./components/Chats/hooks/useChatContainer\"\nimport useConversationList from \"./components/Chats/hooks/useConversationList\"\nimport { ConversationResponse, ExamResponse } from \"./components/Chats/configs/types\"\nimport usePusherConversation from \"./components/Chats/hooks/usePusherConversation\"\nimport { ToastContainer, toast } from \"react-toastify\"\nimport { Role } from \"./containers/Login/configs/constants\"\nimport useLanguage from \"./utils/useLanguage\"\nimport { LANGUAGES } from \"./configs/constants\"\nimport CustomCreatable from \"./components/Selects/CustomCreatable\"\nimport moment from \"moment\"\nimport CustomAsyncSelect from \"./components/Selects/CustomAsyncSelect\"\nimport ExamDetailView from \"./containers/Exams/views/ExamDetailView\"\nimport { ExamDetailViewProps } from \"./containers/Exams/configs/interfaces\"\nimport { Exam, Question, ArticleGroup } from \"./containers/Exams/configs/types\"\n\nexport {\n diffFromNow,\n formatTime,\n utcToLocalTime,\n setLoading,\n BASE_URL,\n ACCESS_TOKEN,\n Login,\n store,\n historyCore,\n setAlert,\n setUser,\n Loading,\n NotFound,\n LayoutContext,\n api,\n ConfirmDialog,\n CommonDialog,\n CommonAlert,\n CustomPagination,\n useGoogleSignOut,\n PUSHER_CONFIG,\n ExamEvent,\n EXAM_CHANNEL,\n EXAM_STUDENT_CHANNEL,\n // language\n setLanguage,\n i18n,\n TheLanguageDropdown,\n useTranslation,\n I18nextProvider,\n DATE_MIN_VALUE,\n DATE_TIME_MIN_VALUE,\n minutesToTimeSpan,\n toISOString,\n canAccessRoute,\n CustomSelect,\n CustomAsyncSelect,\n getAccessToken,\n ChatContainer,\n IChatContainerProps,\n IChatItemProps,\n IChatHeaderProps,\n IInputChatProps,\n ChatItemType,\n useChatContainer,\n useConversationList,\n ConversationResponse,\n ExamResponse,\n usePusherConversation,\n ToastContainer,\n toast,\n Role,\n useLanguage,\n LANGUAGES,\n CustomCreatable,\n moment,\n ExamDetailView,\n ExamDetailViewProps,\n Exam,\n Question,\n ArticleGroup\n}\n"],"names":["setLoading","createAction","setAlert","setUser","setLanguage","reset","isLocalHost","Boolean","window","location","hostname","match","GOOGLE_CLIENT_ID","ACCESS_TOKEN","DATE_MIN_VALUE","DATE_TIME_MIN_VALUE","BASE_URL","PUSHER_CONFIG","cluster","key","EXAM_CHANNEL","EXAM_STUDENT_CHANNEL","getAccessToken","localStorage","getItem","err","encodeParams","params","Object","keys","filter","map","Array","isArray","i","encodeURIComponent","join","time","FORMAT","moment","utc","local","format","_unused","api","axios","create","baseURL","timeout","headers","paramsSerializer","apiUpload","forEach","interceptors","request","use","config","token","Authorization","setItem","error","Promise","reject","response","console","log","_error$response","status","href","_error$response2","removeItem","apiLoginGoogle","body","role","post","AuthenticationMessage","Role","useGoogleSignOut","props","dispatch","useDispatch","onLogoutSuccess","onFailure","handleLogoutSuccess","handleLogoutFailure","_useGoogleLogout","useGoogleLogout","clientId","signOut","loaded","handleSignOut","ERROR_MESSAGE","schema","yup","email","required","password","rememberMe","BlockLogin","_ref","defaultInfo","onNavigate","_ref$role","Student","_useGoogleSignOut","onSuccessGoogle","res","accessToken","_temp2","_res$profileObj","profileObj","imageUrl","name","tokenObj","id_token","googleId","infoLogin","fullName","_temp","_catch","resolve","then","res1","isFirstLogin","data","tokenJWT","JSON","stringify","_error$response$data","message","undefined","type","NotAllowedToRegister","alert","_error$response2$data","_error$response3","_temp3","e","onFailureGoogle","React","Formik","initialValues","validationSchema","onSubmit","formikProps","handleSubmit","Row","className","styles","Col","Form","src","GoogleLogin","buttonText","onSuccess","cookiePolicy","isSignedIn","captcha","useLogin","_useState","useState","openLogin","setOpenLogin","_useState2","infoUser","setInfoUser","toggle","useCallback","_useState3","isShowPassword","setIsShowPassword","useEffect","start","gapi","client","init","scope","load","Login","_useLogin","lg","md","xs","this","global","initialState","isLoading","user","commonReducer","createReducer","builder","addCase","state","action","payload","language","_state","_action","rootReducer","combineReducers","common","store","configureStore","reducer","middleware","getDefaultMiddleware","serializableCheck","concat","logger","TITLE","NotFound","document","title","loadingStyle","minWidth","minHeight","position","top","left","zIndex","backgroundColor","display","justifyContent","alignItems","Loading","useSelector","style","AUTH_URL","getInfo","get","LayoutContext","children","_state$common","roles","resetAuth","checkRoleUser","includes","loadInfo","info","Fragment","ConfirmDialog","open","text","_ref$cancelText","cancelText","_ref$okText","okText","isDelete","_ref$title","onConfirm","confirmText","confirmTextValue","setConfirmTextValue","handleConfirm","handleChangeConfirmText","target","value","handlePaste","preventDefault","isValid","trim","Modal","isOpen","centered","ModalHeader","ModalBody","Input","onChange","placeholder","onPaste","invalid","valid","ModalFooter","Button","color","onClick","disabled","CommonDialog","_ref$size","size","onClose","backdrop","CommonAlert","useRef","onDismiss","current","clearTimeout","_alert$message","length","setTimeout","_alert$message2","Alert","ORIGINAL_FORMAT","unitOfTime","targetTime","now","diff","CustomPagination","currentPage","totalPage","onChangePage","Pagination","PaginationItem","PaginationLink","previous","active","page","next","ExamEvent","i18n","initReactI18next","lng","fallbackLng","interpolation","escapeValue","resources","ko","translation","lang_ko","en","lang_en","DEFAULT_LANGUAGE_INDEX","LANGUAGES","code","shortName","nativeName","image","momentLangCode","useLanguage","defaultLanguage","navigator","_useTranslation","useTranslation","dropdownOpen","setDropdownOpen","setItemLanguage","prevState","changeLanguageApp","lang","find","changeLanguage","locale","currentLanguage","useMemo","currentLang","TheLanguageDropdown","_useLanguage","Dropdown","DropdownToggle","textTransform","IoChevronDown","fontSize","marginLeft","marginTop","DropdownMenu","index","DropdownItem","width","marginRight","h","Math","floor","m","toString","padStart","toISOString","canAccess","userRoles","componentRoles","intersects","DropdownIndicator","components","FaCaretDown","CustomOption","Option","fontWeight","label","customStyles","control","baseStyles","_extends","borderColor","isFocused","input","_","singleValue","CustomSelect","isDefault","defaultValue","options","isDisabled","scrollBottom","isMulti","rest","_objectWithoutPropertiesLoose","_excluded","t","Select","menuPlacement","IndicatorSeparator","MessageSortBy","OrderBy","StudentSortBy","StudentOrderBy","MessageAction","MessageSourceType","MessageStatus","ChatRightItem","id","content","createdAt","isRead","examCode","isSystemLog","parentId","_ref$showExamHeader","showExamHeader","_ref$isFirst","isFirst","isLast","actionLink","examId","examTitle","parentContent","selectedReplyMessageId","selectedReplyItemRef","onAddExamMessage","onReTrySendMessage","onGotoParentMessage","isShowTime","setShowTime","isShowInfo","setShowInfo","handleShowInfo","handleReTrySendMessage","SentError","ref","Link","to","utcToLocalTime","Collapse","Default","ChatLeftItem","avatar","onReply","onToggleReply","handleReply","ChatItemType","ChatItem","isMe","ChatList","messages","_ref$messages","listItemRef","setSelectedReplyMessageId","handleToggleReply","handleSelectParentMessage","scrollIntoView","behavior","InputChat","parentText","inputRef","onChangeInput","onClearReply","handleInputChange","event","handleKeyPressEnter","handleClearReply","IoIosCloseCircle","InputGroup","innerRef","onKeyUp","IoMdSend","ChatHeader","selectedOption","onChangeOption","wrapperRef","actionRef","handleChangeOption","val","handleClickOutside","contains","addEventListener","removeEventListener","selectOptions","startTime","alt","isClearable","ChatContainer","chatHeaderProps","chatListProps","inputProps","_ref$scrollOffset","scrollOffset","_ref$isLoading","isScrollToEnd","onRead","onReachTop","onReachBottom","onEndScrollToEnd","listRef","scrollRef","focusRef","addEventTimeout","_inputRef$current","focus","handleAddExamMessage","_inputRef$current2","handleChangeExamOption","_inputRef$current3","handleScroll","scrollTop","scrollHeight","clientHeight","handleFocus","_listRef$current","_chatListProps$messag","_listItemRef$current","_listItemRef$current$","lastElementChild","_listRef$current2","_listRef$current3","_listRef$current4","_inputRef$current4","_inputRef$current5","Spinner","CONVERSATION_URL","getListConversation","query","createConversation","studentId","targetUserId","apiAddMessage","conversationId","getMessagesByConversation","apiMarkReadMessage","messageId","put","apiGetConversationByUserId","userId","ExamStatus","CONVERSATION_DEFAULT_FILTER","pageSize","textSearch","MESSAGE_DEFAULT_FILTER","sortColumnDirection","DESC","sortColumnName","CreatedAt","EXAM_URL","getListExamApi","useExamList","isStudent","exams","setExams","getListExam","statuses","Completed","teacherId","_res$data","items","useMessageList","getListExamOptions","setMessages","messageFilter","setMessageFilter","getMessageList","_res$data$items2","_getListExamOptions","beforeDate","_res$data$items","reverse","handleLoadMore","lastItem","newFilter","handleMarkReadMessage","_temp4","resetMessages","handleChangeExamId","useChatContainer","conversation","onUpdateLastMessage","onCreateConversationSuccess","onGetMessagesSuccess","pusher","channel","channelName","loadingRef","firstLoadRef","_state$common$user","selectedConversation","setSelectedConversation","setMessage","messageStatus","setMessageStatus","_useState4","setScrollToEnd","_useExamList","_useMessageList","_selectedConversation","teacher","_selectedConversation2","student","isLoadingMessages","handleToggleScrollToEnd","handleAddMessage","some","_message$content","_message$content$trim","exam","Sending","toast","handleReplyMessage","handleChangeInput","handleFilterExam","_val$label","_val$label$split","split","slice","messageList","results","displayName","_i$exam","_i$exam2","_i$exam3","Exam","Took","_i$exam4","_i$exam5","_i$exam6","_i$exam7","_i$exam8","_i$exam9","_i$exam10","_i$exam11","handleNewMessageSent","handleMessageMarkRead","handleLoadMoreMessages","getMessageConversation","cleanupPusher","_pusher$current","unbind","_pusher$current2","unsubscribe","Pusher","authEndpoint","auth","subscribe","bind","getConversation","_temp5","_createConversation","_temp6","handleMarkRead","_temp7","_temp10","_res$data$data","_temp9","_temp8","handleConversationChange","userName","_selectedConversation3","_selectedConversation4","userAvatar","_selectedConversation5","_selectedConversation6","STUDENT_STATUS_URL","getStudentConversationListApi","isFirstLoad","useConversationList","conversations","setConversations","conversationFilter","setConversationFilter","handleChangeSelectedConversation","handleNewMessageConversation","findIndex","handleMessageReadConversation","totalUnread","totalUnReadMessage","handleChangeTextSearch","handleChangeFilter","formatConversationLastMessageContent","lastMessage","_conversation$lastMes","getConversationList","apiGetConversations","handleUpdateTotalUnreadMessage","updateIndex","handleUpdateLastMessage","handleCreateConversationSuccess","usePusherConversation","onNewMessageConversation","onReadMessageConversation","handleNewMessageConversationCreated","handleReadMessageConversation","CustomCreatable","CreatableSelect","CustomAsyncSelect","AsyncSelect","DURATION_OPTIONS","from","SCORE_OPTIONS","QUESTION_OPTIONS","ANSWER_OPTIONS","DEFAULT_SCORE","DEFAULT_ANSWER_COUNT","QuestionView","question","answerCount","onChangeCorrectAnswers","onChangeScoreAnswer","scoreOptions","questionOrder","FormGroup","Label","htmlFor","checked","correctAnswers","score","ArticleGroupView","categoryOptions","article","questions","questionCount","categoryId","isActive","onChangeQuestionCount","onChangeCategory","onChangeAnswerCount","handleChangeQuestionCount","handleChangeCategory","handleChangeAnswerCount","handleChangeCorrectAnswers","handleChangeScoreAnswer","questionOptions","answerOptions","PiDotsNineLight","inputId","q","useExamDetailView","onChangeExam","examQuestions","prevQuestions","nextQuestions","lastOrder","additionalQuestions","_questions$","numberOfAnswers","newQuestions","remainQuestions","otherQuestions","newAnswerCount","answer","selectedQuestion","handleChangeDuration","duration","handleChangeTitle","handleAddArticle","maxArticle","_$maxBy","maxBy","maxOrder","_$maxBy2","examGroupByArticle","articles","groupedArticle","groupBy","prototype","hasOwnProperty","call","_questions$find","_$maxBy3","push","sortBy","durationOptions","ExamDetailView","_ref$className","_ref$isUsingMui","isUsingMui","_useExamDetailView","outline","FaPlusCircle","historyCore","createBrowserHistory"],"mappings":"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"}