diff --git a/xblocks_contrib/discussion/discussion.py b/xblocks_contrib/discussion/discussion.py index 88db1fe2..83ada4c0 100644 --- a/xblocks_contrib/discussion/discussion.py +++ b/xblocks_contrib/discussion/discussion.py @@ -116,6 +116,22 @@ def is_visible(self): # return provider.provider_type == Provider.LEGACY return True + @staticmethod + def _discussion_js_resource_path(): + """ + Returns the URL for the local resource. + + Note: when running with the full Django pipeline, the file will be accessed + as a static asset which will use a CDN in production. + + For more details, see platform's xblock_local_resource_url() define in: + https://github.com/openedx/openedx-platform/blob/master/openedx/core/lib/xblock_utils/__init__.py + """ + if settings.PIPELINE.get('PIPELINE_ENABLED', False) or not getattr(settings, 'REQUIRE_DEBUG', False): + return 'discussion/public/js/discussion_bundle.js' + else: + return 'public/js/discussion_bundle.js' + @property def django_user(self): """ @@ -127,52 +143,6 @@ def django_user(self): return None return user_service._django_user # pylint: disable=protected-access - def get_all_js_files(self): - """ - Returns list of all JS files in the correct dependency order. - """ - return [ - # Vendor files (load first as dependencies) - 'static/js/vendor/Markdown.Converter.js', - 'static/js/vendor/Markdown.Sanitizer.js', - 'static/js/vendor/Markdown.Editor.js', - 'static/js/vendor/jquery.ajaxfileupload.js', - 'static/js/vendor/jquery.timeago.js', - 'static/js/vendor/jquery.timeago.locale.js', - 'static/js/vendor/jquery.truncate.js', - 'static/js/vendor/split.js', - # MathJax utilities - 'static/js/mathjax_accessible.js', - 'static/js/mathjax_delay_renderer.js', - # Core utilities and models - 'static/js/common/utils.js', - 'static/js/common/models/discussion_course_settings.js', - 'static/js/common/models/discussion_user.js', - # Core discussion functionality - # content.js must come before discussion.js because discussion.js uses Thread - 'static/js/common/content.js', - 'static/js/common/discussion.js', - 'static/js/common/mathjax_include.js', - # Custom WMD editor - 'static/js/customwmd.js', - # Views (depend on core discussion and models) - 'static/js/common/views/discussion_content_view.js', - 'static/js/common/views/discussion_inline_view.js', - 'static/js/common/views/discussion_thread_edit_view.js', - 'static/js/common/views/discussion_thread_list_view.js', - 'static/js/common/views/discussion_thread_profile_view.js', - 'static/js/common/views/discussion_thread_show_view.js', - 'static/js/common/views/discussion_thread_view.js', - 'static/js/common/views/discussion_topic_menu_view.js', - 'static/js/common/views/new_post_view.js', - 'static/js/common/views/response_comment_edit_view.js', - 'static/js/common/views/response_comment_show_view.js', - 'static/js/common/views/response_comment_view.js', - 'static/js/common/views/thread_response_edit_view.js', - 'static/js/common/views/thread_response_show_view.js', - 'static/js/common/views/thread_response_view.js', - ] - def add_resource_urls(self, fragment): """ Adds URLs for JS and CSS resources that this XBlock depends on to `fragment`. @@ -185,9 +155,9 @@ def add_resource_urls(self, fragment): ) fragment.add_css(loader.load_unicode(css_file_path)) - # Load all JS files individually in the correct order - for js_file in self.get_all_js_files(): - fragment.add_javascript(loader.load_unicode(js_file)) + bundle_path = self._discussion_js_resource_path() + bundle_url = self.runtime.local_resource_url(self, bundle_path) + fragment.add_resource_url(bundle_url, 'application/javascript') def has_permission(self, permission): # pylint: disable=unused-argument """ diff --git a/xblocks_contrib/discussion/package-lock.json b/xblocks_contrib/discussion/package-lock.json new file mode 100644 index 00000000..81ba4bfa --- /dev/null +++ b/xblocks_contrib/discussion/package-lock.json @@ -0,0 +1,2459 @@ +{ + "name": "discussion", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "devDependencies": { + "append-prepend-loader": "^1.0.0", + "imports-loader": "^5.0.0", + "webpack": "^5.90.0", + "webpack-cli": "^5.1.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "dev": true, + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/append-prepend-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-prepend-loader/-/append-prepend-loader-1.0.0.tgz", + "integrity": "sha512-TpqFKoWUJZgo69yFD+EZ+NBhEVAVT6LK5vgMbBEyHd65a33v/ECNq7H8THzL4eobBZaaJ21bVg5ruJeYxTSsYw==", + "dev": true, + "peerDependencies": { + "webpack": "*" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ] + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imports-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-5.0.0.tgz", + "integrity": "sha512-tXgL8xxZFjOjQLLiE7my00UUQfktg4G8fdpXcZphL0bJWbk9eCxKKFaCwmFRcwyRJQl95GXBL1DoE1rCS/tcPw==", + "dev": true, + "dependencies": { + "source-map-js": "^1.0.2", + "strip-comments": "^2.0.1" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", + "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.105.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz", + "integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.19.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + } + }, + "dependencies": { + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "requires": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "@types/node": { + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "dev": true, + "requires": { + "undici-types": "~7.16.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "requires": {} + }, + "@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true + }, + "acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "append-prepend-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-prepend-loader/-/append-prepend-loader-1.0.0.tgz", + "integrity": "sha512-TpqFKoWUJZgo69yFD+EZ+NBhEVAVT6LK5vgMbBEyHd65a33v/ECNq7H8THzL4eobBZaaJ21bVg5ruJeYxTSsYw==", + "dev": true, + "requires": {} + }, + "baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true + }, + "browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "requires": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001769", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz", + "integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + } + }, + "envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "dev": true + }, + "es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true + }, + "escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imports-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-5.0.0.tgz", + "integrity": "sha512-tXgL8xxZFjOjQLLiE7my00UUQfktg4G8fdpXcZphL0bJWbk9eCxKKFaCwmFRcwyRJQl95GXBL1DoE1rCS/tcPw==", + "dev": true, + "requires": { + "source-map-js": "^1.0.2", + "strip-comments": "^2.0.1" + } + }, + "interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true + }, + "is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "requires": { + "hasown": "^2.0.2" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "requires": { + "resolve": "^1.20.0" + } + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "requires": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true + }, + "terser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", + "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + } + }, + "undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "requires": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + } + }, + "watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.105.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz", + "integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.15.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.19.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.16", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.3" + } + }, + "webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + } + } +} diff --git a/xblocks_contrib/discussion/package.json b/xblocks_contrib/discussion/package.json new file mode 100644 index 00000000..61c94ae8 --- /dev/null +++ b/xblocks_contrib/discussion/package.json @@ -0,0 +1,13 @@ +{ + "private": true, + "scripts": { + "build": "webpack --config webpack.prod.config.js", + "build-dev": "webpack --config webpack.dev.config.js" + }, + "devDependencies": { + "append-prepend-loader": "^1.0.0", + "imports-loader": "^5.0.0", + "webpack": "^5.90.0", + "webpack-cli": "^5.1.4" + } +} diff --git a/xblocks_contrib/discussion/public/js/discussion_bundle.js b/xblocks_contrib/discussion/public/js/discussion_bundle.js new file mode 100644 index 00000000..6431494c --- /dev/null +++ b/xblocks_contrib/discussion/public/js/discussion_bundle.js @@ -0,0 +1,2 @@ +/*! For license information please see discussion_bundle.js.LICENSE.txt */ +(()=>{var __webpack_modules__={290(e,t){(function(){var e;e=t,function(){function t(e){return e}function n(e){return!1}function i(){}function o(){}i.prototype={chain:function(e,n){var i=this[e];if(!i)throw new Error("unknown hook "+e);this[e]=i===t?n:function(e){return n(i(e))}},set:function(e,t){if(!this[e])throw new Error("unknown hook "+e);this[e]=t},addNoop:function(e){this[e]=t},addFalse:function(e){this[e]=n}},e.HookCollection=i,o.prototype={set:function(e,t){this["s_"+e]=t},get:function(e){return this["s_"+e]}},e.Converter=function(){var e,t,n,r,s=this.hooks=new i;function a(e){return(e=(e=(e=(e=e.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,d)).replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,d)).replace(/\n[ ]{0,3}((<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,d)).replace(/\n\n[ ]{0,3}(-]|-[^>])(?:[^-]|-[^-])*)--)>[ \t]*(?=\n{2,}))/g,d)).replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,d)}function d(e,t){var i=t;return i=(i=i.replace(/^\n+/,"")).replace(/\n+$/g,""),"\n\n~K"+(n.push(i)-1)+"K\n\n"}function l(e,t){var i="
\n";return e=function(e,t){for(var i=(e=(e=e.replace(/^\n+/g,"")).replace(/\n+$/g,"")).split(/\n{2,}/g),o=[],r=/~K(\d+)K/,s=i.length,a=0;a"),d+="

",o.push(d))}if(!t)for(s=o.length,a=0;a[ \t]?.+\n(.+\n)*\n*)+)/gm,function(e,t){var i=t;return i=(i=(i=l(i=(i=(i=i.replace(/^[ \t]*>[ \t]?/gm,"~0")).replace(/~0/g,"")).replace(/^[ \t]+$/gm,""))).replace(/(^|\n)/g,"$1 ")).replace(/(\s*
[^\r]+?<\/pre>)/gm,function(e,t){var n=t;return(n=n.replace(/^ {2}/gm,"~0")).replace(/~0/g,"")}),function(e){return e=e.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(n.push(e)-1)+"K\n\n"}("
\n"+i+"\n
")})}(e=function(e){return e=(e=(e+="~0").replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(e,t,n){var i=n;return"\n\n"+("
"+v(y(w(t))).replace(/^\n+/g,"").replace(/\n+$/g,"")+"\n
")+"\n\n"+i})).replace(/~0/,"")}(e=m(e=(e=(e=(e=function(e){return e=(e=(e=e.replace(/^(.+)[ \t]*\n=+[ \t]*\n+/gm,function(e,t){return"

"+c(t)+"

\n\n"})).replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(e,t){return"

"+c(t)+"

\n\n"})).replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(e,t,n){var i=t.length;return""+c(n)+"\n\n"})}(e)).replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,i)).replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm,i)).replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,i))))),t),e}function c(e){return(e=function(e){return e=(e=e.replace(/([\W_]|^)(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\2([\W_]|$)/g,"$1$3$4")).replace(/([\W_]|^)(\*|_)(?=\S)([^\r\*_]*?\S)\2([\W_]|$)/g,"$1$3$4")}(e=_(e=(e=function(e){return e=(e=e.replace(/(^|\s)(https?|ftp)(:\/\/[-A-Z0-9+&@#\/%?=~_|\[\]\(\)!:,\.;]*[-A-Z0-9+&@#\/%=~_|\[\]])($|\W)/gi,"$1<$2$3>$4")).replace(/<((https?|ftp):[^'">\s]+)>/gi,function(e,t){return''+s.plainLinkText(t)+""})}(e=function(e){return e=(e=(e=e.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,u)).replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,u)).replace(/(\[([^\[\]]+)\])()()()()()/g,u)}(e=function(e){return e=(e=e.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,h)).replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,h)}(e=function(e){return e=(e=e.replace(/\\(\\)/g,$)).replace(/\\([`*_{}\[\]()>#+-.!])/g,$)}(e=function(e){return e=e.replace(/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|-]|-[^>])(?:[^-]|-[^-])*)--)>)/gi,function(e){var t=e.replace(/(.)<\/?code>(?=.)/g,"$1`");return b(t,"!"==e.charAt(1)?"\\`*_/":"\\`*_")})}(e=function(e){return e=e.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(e,t,n,i,o){return t+""+y(i.replace(/^([ \t]*)/g,"").replace(/[ \t]*$/g,"")).replace(/:\/\//g,"~P")+""})}(e))))))).replace(/~P/g,"://")))).replace(/ +\n/g,"
\n")}function u(n,i,o,r,s,a,d,l){null==l&&(l="");var c=i,u=o.replace(/:\/\//g,"~P"),h=r.toLowerCase(),m=s,f=l;if(""==m)if(""==h&&(h=u.toLowerCase().replace(/ ?\n/g," ")),m="#"+h,null!=e.get(h))m=e.get(h),null!=t.get(h)&&(f=t.get(h));else{if(!(c.search(/\(\s*\)$/m)>-1))return c;m=""}var g='"+u+""}function p(e){return e.replace(/>/g,">").replace(/"}function m(e){e+="~0";var t=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return r?e=e.replace(t,function(e,t,n){var i=t,o=n.search(/[*+-]/g)>-1?"ul":"ol",r=g(i,o);return"<"+o+">"+(r=r.replace(/\s+$/,""))+"\n"}):(t=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g,e=e.replace(t,function(e,t,n,i){var o=t,r=n,s=i.search(/[*+-]/g)>-1?"ul":"ol",a=g(r,s);return o+"<"+s+">\n"+a+"\n"})),e.replace(/~0/,"")}s.addNoop("plainLinkText"),s.addNoop("preConversion"),s.addNoop("postConversion"),this.makeHtml=function(i){if(e)throw new Error("Recursive call to converter.makeHtml");return e=new o,t=new o,n=[],r=0,i=(i=(i=function(e){return e=e.replace(/~E(\d+)E/g,function(e,t){var n=parseInt(t);return String.fromCharCode(n)})}(i=l(i=function(n){return n=n.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*?(?=\s|$)[ \t]*\n?[ \t]*((\n*)["(](.+?)[")][ \t]*)?(?:\n+)/gm,function(n,i,o,r,s,a){return i=i.toLowerCase(),e.set(i,_(o)),s?r:(a&&t.set(i,a.replace(/"/g,""")),"")})}(i=a(i=(i=v(i="\n\n"+(i=(i=(i=(i=(i=s.preConversion(i)).replace(/~/g,"~T")).replace(/\$/g,"~D")).replace(/\r\n/g,"\n")).replace(/\r/g,"\n"))+"\n\n")).replace(/^[ \t]+$/gm,"")))))).replace(/~D/g,"$$")).replace(/~T/g,"~"),i=s.postConversion(i),n=t=e=null,i};var f={ol:"\\d+[.]",ul:"[*+-]"};function g(e,t){r++,e=e.replace(/\n{2,}$/,"\n"),e+="~0";var n=f[t],i=new RegExp("(^[ \\t]*)("+n+")[ \\t]+([^\\r]+?(\\n+))(?=(~0|\\1("+n+")[ \\t]+))","gm"),o=!1;return e=(e=e.replace(i,function(e,t,n,i){var r=i,s=/\n\n$/.test(r),a=s||r.search(/\n{2,}/)>-1;return r=a||o?l(w(r),!0):c(r=(r=m(w(r))).replace(/\n$/,"")),o=s,"
  • "+r+"
  • \n"})).replace(/~0/g,""),r--,e}function y(e){return b(e=(e=(e=e.replace(/&/g,"&")).replace(//g,">"),"*_{}[]\\",!1)}function _(e){return(e=e.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&")).replace(/<(?![a-z\/?\$!])/gi,"<")}function w(e){return(e=e.replace(/^(\t|[ ]{1,4})/gm,"~0")).replace(/~0/g,"")}function v(e){if(!/\t/.test(e))return e;var t,n=[" "," "," "," "],i=0;return e.replace(/[\n\t]/g,function(e,o){return"\n"===e?(i=o+1,e):(t=(o-i)%4,i=o+1,n[t])})}function b(e,t,n){var i="(["+t.replace(/([\[\]\\])/g,"\\$1")+"])";n&&(i="\\\\"+i);var o=new RegExp(i,"g");return e.replace(o,$)}function $(e,t){return"~E"+t.charCodeAt(0)+"E"}}}()}).call(window),window.Markdown=t},786(e,t,n){(function(){!function(){var e,i;function o(e){return e.replace(/<[^>]*>?/gi,d)}e=t,i=n(290).Converter,e.getSanitizingConverter=function(){var e=new i;return e.hooks.chain("postConversion",o),e.hooks.chain("postConversion",l),e};var r=/^(<\/?(b|blockquote|code|del|dd|dl|dt|em|h1|h2|h3|i|kbd|li|ol|p|pre|s|sup|sub|strong|strike|ul)>|<(br|hr)\s?\/?>)$/i,s=/^(]+")?\s?>|<\/a>)$/i,a=/^(]*")?(\stitle="[^"<>]*")?\s?\/?>)$/i;function d(e){return e.match(r)||e.match(s)||e.match(a)?e:""}function l(e){if(""==e)return"";var t,n,i=/<\/?\w+[^>]*(\s|$|>)/g,o=e.toLowerCase().match(i),r=(o||[]).length;if(0==r)return e;for(var s,a=[],d=[],l=!1,c=0;c

  • ".search("<"+t+">")>-1)){if(n=o[c],s=-1,!/^<\//.test(n))for(var u=c+1;u"){s=u;break}-1==s?l=d[c]=!0:a[s]=!0}return l?(c=0,e=e.replace(i,function(e){var t=d[c]?"":e;return c++,t}),e):e}}()}).call(window),window.Markdown.getSanitizingConverter=t.getSanitizingConverter},398(){(function(){var e;e=e||function(e){var t,n=String.prototype.split,i=/()??/.exec("")[1]===e;return t=function(t,o,r){if("[object RegExp]"!==Object.prototype.toString.call(o))return n.call(t,o,r);var s,a,d,l,c=[],u=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.extended?"x":"")+(o.sticky?"y":""),p=0;for(o=new RegExp(o.source,u+"g"),t+="",i||(s=new RegExp("^"+o.source+"$(?!\\s)",u)),r=r===e?-1>>>0:r>>>0;(a=o.exec(t))&&!((d=a.index+a[0].length)>p&&(c.push(t.slice(p,a.index)),!i&&a.length>1&&a[0].replace(s,function(){for(var t=1;t1&&a.index=r));)o.lastIndex===a.index&&o.lastIndex++;return p===t.length?!l&&o.test("")||c.push(""):c.push(t.slice(p)),c.length>r?c.slice(0,r):c},String.prototype.split=function(e,n){return t(this,e,n)},t}(),window._split=e}).call(window)},514(){(function(){(function(){"use strict";var e={}.hasOwnProperty;function t(t,n){for(var i in n)e.call(n,i)&&(t[i]=n[i]);function o(){this.constructor=t}return o.prototype=n.prototype,t.prototype=new o,t.__super__=n.prototype,t}var n=[].indexOf||function(e){for(var t=0,n=this.length;t=0||DiscussionUtil.isPrivilegedUser(t.id)&&e.length>0)},e.prototype.incrementVote=function(e){var t;return(t=_.clone(this.get("votes"))).up_count+=e,this.set("votes",t)},e.prototype.vote=function(){return this.incrementVote(1)},e.prototype.unvote=function(){return this.incrementVote(-1)},e}(),this.Thread=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return t(n,e),n.prototype.urlMappers={retrieve:function(){return DiscussionUtil.urlFor("retrieve_single_thread",this.get("commentable_id"),this.id)},reply:function(){return DiscussionUtil.urlFor("create_comment",this.id)},unvote:function(){return DiscussionUtil.urlFor("undo_vote_for_"+this.get("type"),this.id)},upvote:function(){return DiscussionUtil.urlFor("upvote_"+this.get("type"),this.id)},downvote:function(){return DiscussionUtil.urlFor("downvote_"+this.get("type"),this.id)},close:function(){return DiscussionUtil.urlFor("openclose_thread",this.id)},update:function(){return DiscussionUtil.urlFor("update_thread",this.id)},_delete:function(){return DiscussionUtil.urlFor("delete_thread",this.id)},follow:function(){return DiscussionUtil.urlFor("follow_thread",this.id)},unfollow:function(){return DiscussionUtil.urlFor("unfollow_thread",this.id)},flagAbuse:function(){return DiscussionUtil.urlFor("flagAbuse_"+this.get("type"),this.id)},unFlagAbuse:function(){return DiscussionUtil.urlFor("unFlagAbuse_"+this.get("type"),this.id)},pinThread:function(){return DiscussionUtil.urlFor("pin_thread",this.id)},unPinThread:function(){return DiscussionUtil.urlFor("un_pin_thread",this.id)}},n.prototype.initialize=function(){return this.set("thread",this),n.__super__.initialize.call(this)},n.prototype.comment=function(){return this.set("comments_count",parseInt(this.get("comments_count"))+1)},n.prototype.follow=function(){return this.set("subscribed",!0)},n.prototype.unfollow=function(){return this.set("subscribed",!1)},n.prototype.display_body=function(){return this.has("highlighted_body")?String(this.get("highlighted_body")).replace(//g,"").replace(/<\/highlight>/g,""):this.get("body")},n.prototype.display_title=function(){return this.has("highlighted_title")?String(this.get("highlighted_title")).replace(//g,"").replace(/<\/highlight>/g,""):this.get("title")},n.prototype.toJSON=function(){var e;return e=_.clone(this.attributes),_.extend(e,{title:this.display_title(),body:this.display_body()})},n.prototype.created_at_date=function(){return new Date(this.get("created_at"))},n.prototype.created_at_time=function(){return new Date(this.get("created_at")).getTime()},n.prototype.hasResponses=function(){return this.get("comments_count")>0},n}(this.Content),this.Comment=function(e){function n(){var e=this;return this.canBeEndorsed=function(){return n.prototype.canBeEndorsed.apply(e,arguments)},n.__super__.constructor.apply(this,arguments)}return t(n,e),n.prototype.urlMappers={reply:function(){return DiscussionUtil.urlFor("create_sub_comment",this.id)},unvote:function(){return DiscussionUtil.urlFor("undo_vote_for_"+this.get("type"),this.id)},upvote:function(){return DiscussionUtil.urlFor("upvote_"+this.get("type"),this.id)},downvote:function(){return DiscussionUtil.urlFor("downvote_"+this.get("type"),this.id)},endorse:function(){return DiscussionUtil.urlFor("endorse_comment",this.id)},update:function(){return DiscussionUtil.urlFor("update_comment",this.id)},_delete:function(){return DiscussionUtil.urlFor("delete_comment",this.id)},flagAbuse:function(){return DiscussionUtil.urlFor("flagAbuse_"+this.get("type"),this.id)},unFlagAbuse:function(){return DiscussionUtil.urlFor("unFlagAbuse_"+this.get("type"),this.id)}},n.prototype.getCommentsCount=function(){var e;return e=0,this.get("comments").each(function(t){return e+=t.getCommentsCount()+1}),e},n.prototype.canBeEndorsed=function(){var e;return(e=window.user.get("id"))&&(DiscussionUtil.isPrivilegedUser(e)||"question"===this.get("thread").get("thread_type")&&this.get("thread").get("user_id")===e)},n}(this.Content),this.Comments=function(){function e(){return e.__super__.constructor.apply(this,arguments)}return t(e,Backbone.Collection),e.prototype.model=Comment,e.prototype.initialize=function(){var e=this;return this.bind("add",function(t){t.collection=e})},e.prototype.find=function(e){return _.first(this.where({id:e}))},e}())}).call(window)}).call(window)},779(){(function(){(function(){"use strict";var e={}.hasOwnProperty;"undefined"!=typeof Backbone&&null!==Backbone&&(this.Discussion=function(){function t(){return t.__super__.constructor.apply(this,arguments)}return function(t,n){for(var i in n)e.call(n,i)&&(t[i]=n[i]);function o(){this.constructor=t}o.prototype=n.prototype,t.prototype=new o,t.__super__=n.prototype}(t,Backbone.Collection),t.prototype.model=Thread,t.prototype.initialize=function(e,t){var n=this;return t||(t={}),this.pages=t.pages||1,this.current_page=1,this.sort_preference=t.sort,this.is_commentable_divided=t.is_commentable_divided,this.bind("add",function(e){e.discussion=n}),this.setSortComparator(this.sort_preference),this.on("thread:remove",function(e){n.remove(e)})},t.prototype.find=function(e){return _.first(this.where({id:e}))},t.prototype.hasMorePages=function(){return this.current_pagei?-1:i>n?1:e.created_at_time()>t.created_at_time()?-1:1},t.prototype.pinnedThreadsSortComparatorWithDate=function(e,t){var n,i,o;return i=new Date(e.get("last_activity_at")).getTime(),e.get("pinned")?(o=new Date,n=new Date(o.getTime()+864e5+i)):n=i,t?n:-n},t}())}).call(window)}).call(window)},189(){(function(){var e;"undefined"==typeof MathJax&&(window.MathJax={menuSettings:{CHTMLpreview:!1}},(e=document.createElement("script")).onload=function(){"use strict";var e,t=window.MathJax;t.Hub.Config({tex2jax:{inlineMath:[["\\(","\\)"],["[mathjaxinline]","[/mathjaxinline]"]],displayMath:[["\\[","\\]"],["[mathjax]","[/mathjax]"]]}}),t.Hub.processSectionDelay=0,t.Hub.signal.Interest(function(t){"End Math"===t[0]&&e()}),e=function(){$(".MathJax_Display").each(function(){this.setAttribute("tabindex","0"),this.setAttribute("aria-live","off"),this.removeAttribute("role"),this.removeAttribute("aria-readonly")})}},window.MathJax={menuSettings:{collapsible:!0,autocollapse:!1,explorer:!0}},e.src="https://cdn.jsdelivr.net/npm/mathjax@2.7.5/MathJax.js?config=TeX-MML-AM_HTMLorMML",document.body.appendChild(e))}).call(window)},376(){(function(){(function(){"use strict";var e={}.hasOwnProperty;"undefined"!=typeof Backbone&&null!==Backbone&&(this.DiscussionCourseSettings=function(){function t(){return t.__super__.constructor.apply(this,arguments)}return function(t,n){for(var i in n)e.call(n,i)&&(t[i]=n[i]);function o(){this.constructor=t}o.prototype=n.prototype,t.prototype=new o,t.__super__=n.prototype}(t,Backbone.Model),t}())}).call(this)}).call(window)},840(){(function(){(function(){"use strict";var e={}.hasOwnProperty;"undefined"!=typeof Backbone&&null!==Backbone&&(this.DiscussionUser=function(){function t(){return t.__super__.constructor.apply(this,arguments)}return function(t,n){for(var i in n)e.call(n,i)&&(t[i]=n[i]);function o(){this.constructor=t}o.prototype=n.prototype,t.prototype=new o,t.__super__=n.prototype}(t,Backbone.Model),t.prototype.following=function(e){return _.include(this.get("subscribed_thread_ids"),e.id)},t.prototype.voted=function(e){return _.include(this.get("upvoted_ids"),e.id)},t.prototype.vote=function(e){return this.get("upvoted_ids").push(e.id),e.vote()},t.prototype.unvote=function(e){return this.set("upvoted_ids",_.without(this.get("upvoted_ids"),e.id)),e.unvote()},t}())}).call(this)}).call(window)},970(){(function(){(function(){"use strict";this.DiscussionUtil=function(){function e(){}e.wmdEditors={},e.leftKey=37,e.rightKey=39,e.getTemplate=function(e){return $("script#"+e).html()},e.setUser=function(e){this.user=e},e.getUser=function(){return this.user},e.loadRoles=function(e){this.roleIds=e},e.isStaff=function(e){var t;return _.isUndefined(e)&&(e=this.user?this.user.id:void 0),_.isUndefined(this.roleIds)&&(this.roleIds={}),t=_.union(this.roleIds.Moderator,this.roleIds.Administrator),_.include(t,parseInt(e))},e.isTA=function(e){var t;return _.isUndefined(e)&&(e=this.user?this.user.id:void 0),t=_.union(this.roleIds["Community TA"]),_.include(t,parseInt(e))},e.isGroupTA=function(e){var t,n=e;return _.isUndefined(e)&&(n=this.user?this.user.id:void 0),t=_.union(this.roleIds["Group Moderator"]),_.include(t,parseInt(n,10))},e.isPrivilegedUser=function(e){return this.isStaff(e)||this.isTA(e)},e.bulkUpdateContentInfo=function(e){var t,n,i;for(t in i=[],e)e.hasOwnProperty(t)&&(n=e[t],i.push(Content.getContent(t).updateInfo(n)));return i},e.generateDiscussionLink=function(e,t,n){return $("").addClass("discussion-link").attr("href","#").addClass(e).text(t).click(function(){return n(this)})},e.urlFor=function(e,t,n,i){return{follow_discussion:"/courses/"+$$course_id+"/discussion/"+t+"/follow",unfollow_discussion:"/courses/"+$$course_id+"/discussion/"+t+"/unfollow",create_thread:"/courses/"+$$course_id+"/discussion/"+t+"/threads/create",update_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/update",create_comment:"/courses/"+$$course_id+"/discussion/threads/"+t+"/reply",delete_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/delete",flagAbuse_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/flagAbuse",unFlagAbuse_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/unFlagAbuse",flagAbuse_comment:"/courses/"+$$course_id+"/discussion/comments/"+t+"/flagAbuse",unFlagAbuse_comment:"/courses/"+$$course_id+"/discussion/comments/"+t+"/unFlagAbuse",upvote_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/upvote",downvote_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/downvote",pin_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/pin",un_pin_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/unpin",undo_vote_for_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/unvote",follow_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/follow",unfollow_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/unfollow",update_comment:"/courses/"+$$course_id+"/discussion/comments/"+t+"/update",endorse_comment:"/courses/"+$$course_id+"/discussion/comments/"+t+"/endorse",create_sub_comment:"/courses/"+$$course_id+"/discussion/comments/"+t+"/reply",delete_comment:"/courses/"+$$course_id+"/discussion/comments/"+t+"/delete",upvote_comment:"/courses/"+$$course_id+"/discussion/comments/"+t+"/upvote",downvote_comment:"/courses/"+$$course_id+"/discussion/comments/"+t+"/downvote",undo_vote_for_comment:"/courses/"+$$course_id+"/discussion/comments/"+t+"/unvote",upload:"/courses/"+$$course_id+"/discussion/upload",users:"/courses/"+$$course_id+"/discussion/users",search:"/courses/"+$$course_id+"/discussion/forum/search",retrieve_discussion:"/courses/"+$$course_id+"/discussion/forum/"+t+"/inline",retrieve_single_thread:"/courses/"+$$course_id+"/discussion/forum/"+t+"/threads/"+n,openclose_thread:"/courses/"+$$course_id+"/discussion/threads/"+t+"/close",user_profile:"/courses/"+$$course_id+"/discussion/forum/users/"+t,followed_threads:"/courses/"+$$course_id+"/discussion/forum/users/"+t+"/followed",threads:"/courses/"+$$course_id+"/discussion/forum",enable_notifications:"/notification_prefs/enable/",disable_notifications:"/notification_prefs/disable/",notifications_status:"/notification_prefs/status/"}[e]},e.ignoreEnterKey=function(e){if(13===e.which)return e.preventDefault()},e.activateOnSpace=function(e,t){if(32===e.which)return e.preventDefault(),t(e)},e.makeFocusTrap=function(e){return e.keydown(function(e){if(9===e.which)return e.preventDefault()})},e.showLoadingIndicator=function(e,t){var n=edx.HtmlUtils.joinHtml(edx.HtmlUtils.HTML("
    "),edx.HtmlUtils.HTML(""),gettext("Loading content"),edx.HtmlUtils.HTML("
    ")),i=$(n.toString());e.after(i),this.$_loading=i,t&&(this.makeFocusTrap(this.$_loading),this.$_loading.focus())},e.hideLoadingIndicator=function(){return this.$_loading.remove()},e.discussionAlert=function(e,t){var n,i,o=$("#alert-popup").html()||"";0===$("#discussion-alert").length&&(n=$(edx.HtmlUtils.template(o)({}).toString()),this.makeFocusTrap(n.find("button")),(i=$("
    ").css("display","none")).leanModal({closeButton:"#discussion-alert .dismiss",overlay:1,top:200}),$("body").append(n).append(i)),$("#discussion-alert header h2").text(e),$("#discussion-alert p").text(t),$("#discussion-alert-trigger").click(),$("#discussion-alert button").focus()},e.safeAjax=function(e){var t,n,i=this;return(t=e.$elem)&&t.prop("disabled")?((n=$.Deferred()).reject(),n.promise()):(e.url=URI(e.url).addSearch({ajax:1}),e.error||(e.error=function(){i.discussionAlert(gettext("Error"),gettext("Your request could not be processed. Refresh the page and try again."))}),t&&t.prop("disabled",!0),e.$loading&&(e.loadingCallback?e.loadingCallback.apply(e.$loading):i.showLoadingIndicator(e.$loading,e.takeFocus)),$.ajax(e).always(function(){if(t&&t.prop("disabled",!1),e.$loading)return e.loadedCallback?e.loadedCallback.apply(e.$loading):i.hideLoadingIndicator()}))},e.updateWithUndo=function(e,t,n,i,o){var r,s=this;return i&&(n.error=function(){return s.discussionAlert(gettext("Error"),i)}),r=_.pick(e.attributes,_.keys(t)),e.set(t),"function"==typeof o&&o(),this.safeAjax(n).fail(function(){return e.set(r)})},e.bindLocalEvents=function(e,t){var n,i,o,r,s,a;for(i in a=[],t)t.hasOwnProperty(i)&&(o=t[i],n=(s=i.split(" "))[0],r=s[1],a.push(e(r).unbind(n)[n](o)));return a},e.formErrorHandler=function(e){return function(t){var n,i,o,r;if(n=function(e,t){return edx.HtmlUtils.joinHtml(edx.HtmlUtils.HTML("
  • "),edx.HtmlUtils.template($("#new-post-alert-template").html())({message:e,alertId:t}),edx.HtmlUtils.HTML("
  • "))},e.empty().show(),400===t.status){if((i=JSON.parse(t.responseText)).errors)for(o=0;o"),edx.HtmlUtils.ensureHtml(e))).find("code").each(function(e,t){return a[e]=$(t).html(),$(t).text(e)}),l=(l=s.html()).replace(/\\\$/g,i);;)if(n.test(l))l=l.replace(n,function(e,t,n,i){return d+=t+r("$"+n+"$","inline"),i});else{if(!t.test(l)){d+=l;break}l=l.replace(t,function(e,t,n,i){return d+=t+r("$$"+n+"$$","display"),i})}return l=(l=(l=(l=(l=(l=d).replace(new RegExp(i,"g"),"\\$")).replace(/\\\\\\\\/g,o)).replace(/\\begin\{([a-z]*\*?)\}([\s\S]*?)\\end\{\1\}/gim,function(e,t,n){return r("\\begin{"+t+"}"+n+"\\end{"+t+"}")})).replace(new RegExp(o,"g"),"\\\\\\\\")).replace(new RegExp("{javascript:(.+?)}","g"),"{}"),(s=edx.HtmlUtils.setHtml($("
    "),edx.HtmlUtils.HTML(l))).find("code").each(function(e,t){edx.HtmlUtils.setHtml($(t),edx.HtmlUtils.HTML(r(a[e],"code")))}),edx.HtmlUtils.HTML(s.html())},e.unescapeHighlightTag=function(e){return edx.HtmlUtils.HTML(e.toString().replace(/\<\;highlight\>\;/g,"").replace(/\<\;\/highlight\>\;/g,""))},e.stripHighlight=function(e){return e.replace(/\&(amp\;)?lt\;highlight\&(amp\;)?gt\;/g,"").replace(/\&(amp\;)?lt\;\/highlight\&(amp\;)?gt\;/g,"")},e.stripLatexHighlight=function(e){return this.processEachMathAndCode(e,this.stripHighlight)},e.markdownWithHighlight=function(e){var t;e=e.replace(/^\>\;/gm,">"),t=Markdown.getMathCompatibleConverter();var n=edx.HtmlUtils.HTML(t.makeHtml(e));return this.unescapeHighlightTag(this.stripLatexHighlight(n))},e.abbreviateString=function(e,t){if(e.length"),o,edx.HtmlUtils.HTML("
    ")).toString())).find("img:not(:first)")).length>0&&edx.HtmlUtils.append(n,edx.HtmlUtils.interpolateHtml(edx.HtmlUtils.HTML("

    {text}

    "),{text:gettext("Some images in this post have been omitted")}));var r=edx.HtmlUtils.interpolateHtml(edx.HtmlUtils.HTML("{text}"),{text:gettext("image omitted")});return i.after(edx.HtmlUtils.ensureHtml(r).toString()).remove(),n.html()},e.getPaginationParams=function(e,t,n){var i,o,r;return o=Math.max(e-2,1),i=Math.min(e+2,t),r=function(e){return{number:e,url:n(e)}},{page:e,lowPages:_.range(o,e).map(r),highPages:_.range(e+1,i+1).map(r),previous:e>1?r(e-1):null,next:e2,rightdots:i1?r(1):null,last:i0,a&&d&&(s=i.index(t),r=o===this.leftKey?s-1:s+1,r=Math.max(Math.min(r,i.length-1),0),n=$(i[r]),this.moveSelectionToNextItem(t,n))},e.moveSelectionToNextItem=function(e,t){e.attr("aria-selected","false"),e.attr("tabindex","-1"),t.attr("aria-selected","true"),t.attr("tabindex","0"),t.focus()},e}.call(this)}).call(window)}).call(window)},760(){(function(){(function(){"use strict";var e={}.hasOwnProperty,t=function(t,n){for(var i in n)e.call(n,i)&&(t[i]=n[i]);function o(){this.constructor=t}return o.prototype=n.prototype,t.prototype=new o,t.__super__=n.prototype,t};"undefined"!=typeof Backbone&&null!==Backbone&&(this.DiscussionContentView=function(e){function n(){var e=this;return this.setWmdContent=function(){return n.prototype.setWmdContent.apply(e,arguments)},this.getWmdContent=function(){return n.prototype.getWmdContent.apply(e,arguments)},this.getWmdEditor=function(){return n.prototype.getWmdEditor.apply(e,arguments)},this.makeWmdEditor=function(){return n.prototype.makeWmdEditor.apply(e,arguments)},n.__super__.constructor.apply(this,arguments)}return t(n,e),n.prototype.events={"click .discussion-flag-abuse":"toggleFlagAbuse","keydown .discussion-flag-abuse":function(e){return DiscussionUtil.activateOnSpace(e,this.toggleFlagAbuse)}},n.prototype.attrRenderer={ability:function(e){var t,n,i,o;for(t in o=[],i=this.abilityRenderer)i.hasOwnProperty(t)&&(n=i[t],e[t]?o.push(n.enable.apply(this)):o.push(n.disable.apply(this)));return o}},n.prototype.abilityRenderer={editable:{enable:function(){return this.$(".action-edit").closest(".actions-item").removeClass("is-hidden")},disable:function(){return this.$(".action-edit").closest(".actions-item").addClass("is-hidden")}},can_delete:{enable:function(){return this.$(".action-delete").closest(".actions-item").removeClass("is-hidden")},disable:function(){return this.$(".action-delete").closest(".actions-item").addClass("is-hidden")}},can_openclose:{enable:function(){var e=this;return _.each([".action-close",".action-pin"],function(t){return e.$(t).closest(".actions-item").removeClass("is-hidden")})},disable:function(){var e=this;return _.each([".action-close",".action-pin"],function(t){return e.$(t).closest(".actions-item").addClass("is-hidden")})}},can_report:{enable:function(){return this.$(".action-report").closest(".actions-item").removeClass("is-hidden")},disable:function(){return this.$(".action-report").closest(".actions-item").addClass("is-hidden")}},can_vote:{enable:function(){this.$(".action-vote").closest(".actions-item").removeClass("is-disabled")},disable:function(){this.$(".action-vote").closest(".actions-item").addClass("is-disabled")}}},n.prototype.renderPartialAttrs=function(){var e,t,n,i;for(e in i=[],n=this.model.changedAttributes())n.hasOwnProperty(e)&&(t=n[e],this.attrRenderer[e]?i.push(this.attrRenderer[e].apply(this,[t])):i.push(void 0));return i},n.prototype.renderAttrs=function(){var e,t,n,i;for(e in i=[],n=this.model.attributes)n.hasOwnProperty(e)&&(t=n[e],this.attrRenderer[e]?i.push(this.attrRenderer[e].apply(this,[t])):i.push(void 0));return i},n.prototype.makeWmdEditor=function(e){return this.$el.find(".wmd-panel").length?null:DiscussionUtil.makeWmdEditor(this.$el,$.proxy(this.$,this),e)},n.prototype.getWmdEditor=function(e){return DiscussionUtil.getWmdEditor(this.$el,$.proxy(this.$,this),e)},n.prototype.getWmdContent=function(e){return DiscussionUtil.getWmdContent(this.$el,$.proxy(this.$,this),e)},n.prototype.setWmdContent=function(e,t){return DiscussionUtil.setWmdContent(this.$el,$.proxy(this.$,this),e,t)},n.prototype.initialize=function(){var e=this;return this.model.bind("change",this.renderPartialAttrs,this),this.listenTo(this.model,"change:endorsed",function(){e.model instanceof Comment&&e.trigger("comment:endorse")})},n}(Backbone.View),this.DiscussionContentShowView=function(e){function n(){var e=this;return this.toggleClose=function(){return n.prototype.toggleClose.apply(e,arguments)},this.toggleReport=function(){return n.prototype.toggleReport.apply(e,arguments)},this.togglePin=function(){return n.prototype.togglePin.apply(e,arguments)},this.toggleVote=function(){return n.prototype.toggleVote.apply(e,arguments)},this.toggleEndorse=function(){return n.prototype.toggleEndorse.apply(e,arguments)},this.toggleFollow=function(){return n.prototype.toggleFollow.apply(e,arguments)},this.handleSecondaryActionBlur=function(){return n.prototype.handleSecondaryActionBlur.apply(e,arguments)},this.handleSecondaryActionEscape=function(){return n.prototype.handleSecondaryActionEscape.apply(e,arguments)},this.toggleSecondaryActions=function(){return n.prototype.toggleSecondaryActions.apply(e,arguments)},this.updateButtonState=function(){return n.prototype.updateButtonState.apply(e,arguments)},n.__super__.constructor.apply(this,arguments)}return t(n,e),n.prototype.events=_.reduce([[".action-follow","toggleFollow"],[".action-answer","toggleEndorse"],[".action-endorse","toggleEndorse"],[".action-vote","toggleVote"],[".action-more","toggleSecondaryActions"],[".action-pin","togglePin"],[".action-edit","edit"],[".action-delete","_delete"],[".action-report","toggleReport"],[".action-close","toggleClose"]],function(e,t){var n,i;return i=t[0],n=t[1],e["click "+i]=function(e){return this[n](e)},e["keydown "+i]=function(e){return DiscussionUtil.activateOnSpace(e,this[n])},e},{}),n.prototype.updateButtonState=function(e,t){var n;return(n=this.$(e)).toggleClass("is-checked",t),n.attr("aria-checked",t)},n.prototype.attrRenderer=$.extend({},DiscussionContentView.prototype.attrRenderer,{subscribed:function(e){return this.updateButtonState(".action-follow",e)},endorsed:function(e){var t,n;return n="question"===this.model.get("thread").get("thread_type")?".action-answer":".action-endorse",this.updateButtonState(n,e),(t=this.$(n)).closest(".actions-item").toggleClass("is-hidden",!this.model.canBeEndorsed()),t.toggleClass("is-checked",e)},votes:function(e){var t,n,i,o,r;i=".action-vote",this.updateButtonState(i,window.user.voted(this.model)),t=this.$el.find(i),n=e.up_count,r=ngettext("there is currently {numVotes} vote","there are currently {numVotes} votes",n),t.find(".js-sr-vote-count").empty().text(edx.StringUtils.interpolate(r,{numVotes:n})),o=edx.StringUtils.interpolate(ngettext("{numVotes} Vote","{numVotes} Votes",n),{numVotes:n}),t.find(".vote-count").empty().text(o),this.$el.find(".display-vote .vote-count").empty().text(o)},pinned:function(e){return this.updateButtonState(".action-pin",e),this.$(".post-label-pinned").toggleClass("is-hidden",!e)},abuse_flaggers:function(){var e;return e=this.model.isFlagged(),this.updateButtonState(".action-report",e),this.$(".post-label-reported").toggleClass("is-hidden",!e)},closed:function(e){return this.updateButtonState(".action-close",e),this.$(".post-label-closed").toggleClass("is-hidden",!e),this.$(".display-vote").toggle(e)}}),n.prototype.toggleSecondaryActions=function(e){return e.preventDefault(),e.stopPropagation(),this.secondaryActionsExpanded=!this.secondaryActionsExpanded,this.$(".action-more").toggleClass("is-expanded",this.secondaryActionsExpanded),this.$(".actions-dropdown").toggleClass("is-expanded",this.secondaryActionsExpanded).attr("aria-expanded",this.secondaryActionsExpanded),this.secondaryActionsExpanded?("keydown"===e.type&&this.$(".action-list-item:first").focus(),$("body").on("click",this.toggleSecondaryActions),$("body").on("keydown",this.handleSecondaryActionEscape),this.$(".action-list-item").on("blur",this.handleSecondaryActionBlur)):($("body").off("click",this.toggleSecondaryActions),$("body").off("keydown",this.handleSecondaryActionEscape),this.$(".action-list-item").off("blur",this.handleSecondaryActionBlur))},n.prototype.handleSecondaryActionEscape=function(e){27===e.keyCode&&(this.toggleSecondaryActions(e),this.$(".action-more").focus())},n.prototype.handleSecondaryActionBlur=function(e){var t=this;return setTimeout(function(){t.secondaryActionsExpanded&&0===t.$(".actions-dropdown :focus").length&&t.toggleSecondaryActions(e)},10)},n.prototype.toggleFollow=function(e){var t,n,i;return e.preventDefault(),t=!this.model.get("subscribed"),i=this.model.urlFor(t?"follow":"unfollow"),n=t?gettext("You could not be subscribed to this post. Refresh the page and try again."):gettext("You could not be unsubscribed from this post. Refresh the page and try again."),DiscussionUtil.updateWithUndo(this.model,{subscribed:t},{url:i,type:"POST",$elem:$(e.currentTarget)},n)},n.prototype.toggleEndorse=function(e){var t,n,i,o,r=this;return e.preventDefault(),t=!this.model.get("endorsed"),o=this.model.urlFor("endorse"),i={endorsed:t,endorsement:t?{username:DiscussionUtil.getUser().get("username"),user_id:DiscussionUtil.getUser().id,time:(new Date).toISOString()}:null},n="question"===this.model.get("thread").get("thread_type")?t?gettext("This response could not be marked as an answer. Refresh the page and try again."):gettext("This response could not be unmarked as an answer. Refresh the page and try again."):t?gettext("This response could not be marked as endorsed. Refresh the page and try again."):gettext("This response could not be unendorsed. Refresh the page and try again."),DiscussionUtil.updateWithUndo(this.model,i,{url:o,type:"POST",data:{endorsed:t},$elem:$(e.currentTarget)},n,function(){return r.trigger("comment:endorse")}).always(this.trigger("comment:endorse"))},n.prototype.toggleVote=function(e){var t,n,i,o,r=this;if(e.preventDefault(),o=DiscussionUtil.getUser(),t=!o.voted(this.model),i=this.model.urlFor(t?"upvote":"unvote"),n={upvoted_ids:(t?_.union:_.difference)(o.get("upvoted_ids"),[this.model.id])},!$(e.target.closest(".actions-item")).hasClass("is-disabled"))return DiscussionUtil.updateWithUndo(o,n,{url:i,type:"POST",$elem:$(e.currentTarget)},gettext("This vote could not be processed. Refresh the page and try again.")).done(function(){return t?r.model.vote():r.model.unvote()})},n.prototype.togglePin=function(e){var t,n,i;return e.preventDefault(),t=!this.model.get("pinned"),i=this.model.urlFor(t?"pinThread":"unPinThread"),n=t?gettext("This post could not be pinned. Refresh the page and try again."):gettext("This post could not be unpinned. Refresh the page and try again."),DiscussionUtil.updateWithUndo(this.model,{pinned:t},{url:i,type:"POST",$elem:$(e.currentTarget)},n)},n.prototype.toggleReport=function(e){var t,n,i,o;return e.preventDefault(),this.model.isFlagged()?(t=!1,n=gettext("This post could not be flagged for abuse. Refresh the page and try again.")):(t=!0,n=gettext("This post could not be unflagged for abuse. Refresh the page and try again.")),o=this.model.urlFor(t?"flagAbuse":"unFlagAbuse"),i={abuse_flaggers:(t?_.union:_.difference)(this.model.get("abuse_flaggers"),[DiscussionUtil.getUser().id])},DiscussionUtil.updateWithUndo(this.model,i,{url:o,type:"POST",$elem:$(e.currentTarget)},n)},n.prototype.toggleClose=function(e){var t,n,i;return e.preventDefault(),n=(t=!this.model.get("closed"))?gettext("This post could not be closed. Refresh the page and try again."):gettext("This post could not be reopened. Refresh the page and try again."),i={closed:t},DiscussionUtil.updateWithUndo(this.model,i,{url:this.model.urlFor("close"),type:"POST",data:i,$elem:$(e.currentTarget)},n)},n.prototype.getAuthorDisplay=function(){return _.template($("#post-user-display-template").html())({username:this.model.get("username")||null,user_url:this.model.get("user_url"),is_community_ta:this.model.get("community_ta_authored"),is_staff:this.model.get("staff_authored")})},n.prototype.getEndorserDisplay=function(){var e;return(e=this.model.get("endorsement"))&&e.username?_.template($("#post-user-display-template").html())({username:e.username,user_url:DiscussionUtil.urlFor("user_profile",e.user_id),is_community_ta:DiscussionUtil.isTA(e.user_id)||DiscussionUtil.isGroupTA(e.user_id),is_staff:DiscussionUtil.isStaff(e.user_id)}):null},n}.call(this,this.DiscussionContentView))}).call(window)}).call(window)},368(){(function(){(function(){"use strict";this.DiscussionInlineView=Backbone.View.extend({events:{"click .discussion-show":"toggleDiscussion","keydown .discussion-show":function(e){return DiscussionUtil.activateOnSpace(e,this.toggleDiscussion)},"click .new-post-btn":"toggleNewPost","click .all-posts-btn":"navigateToAllPosts",keydown:"handleKeydown","keydown .new-post-btn":function(e){return DiscussionUtil.activateOnSpace(e,this.toggleNewPost)}},page_re:/\?discussion_page=(\d+)/,initialize:function(e){var t;this.$el=e.el,this.readOnly=e.readOnly,this.toggleDiscussionBtn=this.$(".discussion-show"),this.listenTo(this.model,"change",this.render),this.escKey=27,void 0!==e.startHeader?this.startHeader=e.startHeader:this.startHeader=4,t=this.page_re.exec(window.location.href),this.page=t?parseInt(t[1],10):1,this.defaultSortKey="activity",this.defaultSortOrder="desc",this.toggleDiscussion()},loadDiscussions:function(e,t){var n=this.$el.data("discussion-id"),i=DiscussionUtil.urlFor("retrieve_discussion",n)+"?page="+this.page+"&sort_key="+this.defaultSortKey+"&sort_order="+this.defaultSortOrder,o=this;DiscussionUtil.safeAjax({$elem:this.$el,$loading:this.$el,takeFocus:!1,url:i,type:"GET",dataType:"json",success:function(e,t){o.renderDiscussion(o.$el,e,t,n)},error:t})},renderDiscussion:function(e,t,n,i){var o,r=new DiscussionUser(t.user_info);e.focus(),window.user=r,DiscussionUtil.setUser(r),Content.loadContentInfos(t.annotated_content_info),DiscussionUtil.loadRoles(t.roles),this.courseSettings=new DiscussionCourseSettings(t.course_settings),this.is_commentable_divided=t.is_commentable_divided,this.discussion=new Discussion(void 0,{pages:t.num_pages}),this.discussion.reset(t.discussion_data,{silent:!1}),o=edx.HtmlUtils.template($("#inline-discussion-template").html())({threads:t.discussion_data,read_only:this.readOnly,discussionId:i}),this.$("section.discussion").length?(edx.HtmlUtils.setHtml(this.$el,o),this.$("section.discussion").replaceWith(edx.HtmlUtils.ensureHtml(o).toString())):edx.HtmlUtils.append(this.$el,o),this.threadListView=new DiscussionThreadListView({el:this.$(".inline-threads"),collection:this.discussion,courseSettings:this.courseSettings}),this.threadListView.render(),this.threadListView.on("thread:selected",_.bind(this.navigateToThread,this)),DiscussionUtil.bulkUpdateContentInfo(window.$$annotated_content_info),this.newPostForm=this.$el.find(".new-post-article"),this.newPostView=new NewPostView({el:this.newPostForm,collection:this.discussion,course_settings:this.courseSettings,topicId:i,startHeader:this.startHeader,is_commentable_divided:t.is_commentable_divided,user_group_id:t.user_group_id}),this.newPostView.render(),this.listenTo(this.newPostView,"newPost:createPost",this.onNewPostCreated),this.listenTo(this.newPostView,"newPost:cancel",this.hideNewPost),this.discussion.on("add",this.addThread),this.retrieved=!0,this.showed=!0,this.isWaitingOnNewPost&&this.newPostForm.removeClass("is-hidden").focus(),this.$(".inline-thread").addClass("is-hidden")},navigateToThread:function(e){var t=this.discussion.get(e);this.threadView=new DiscussionThreadView({el:this.$(".forum-content"),model:t,mode:"inline",startHeader:this.startHeader,courseSettings:this.courseSettings,is_commentable_divided:this.is_commentable_divided}),this.threadView.render(),this.listenTo(this.threadView.showView,"thread:_delete",this.navigateToAllPosts),this.$(".forum-nav-thread[data-id='"+e+"']").removeClass("never-read"),this.threadListView.$el.addClass("is-hidden"),this.$(".inline-thread").removeClass("is-hidden")},navigateToAllPosts:function(){this.$(".inline-thread").addClass("is-hidden"),this.threadView&&(this.threadView.$el.empty().off(),this.threadView.stopListening(),this.threadView=null),this.threadListView.$el.removeClass("is-hidden"),this.threadListView.$(".is-active").focus()},hideDiscussion:function(){this.$("section.discussion").addClass("is-hidden"),this.toggleDiscussionBtn.removeClass("shown"),this.toggleDiscussionBtn.find(".button-text").text(gettext("Show Discussion")),this.showed=!1},toggleDiscussion:function(){var e=this;this.showed?this.hideDiscussion():(this.toggleDiscussionBtn.addClass("shown"),this.toggleDiscussionBtn.find(".button-text").text(gettext("Hide Discussion")),this.retrieved?(this.$("section.discussion").removeClass("is-hidden"),this.showed=!0):this.loadDiscussions(this.$el,function(t){403===t.status&&t.responseText?(DiscussionUtil.discussionAlert(gettext("Warning"),t.responseText),e.$el.text(t.responseText),e.showed=!0):(e.hideDiscussion(),DiscussionUtil.discussionAlert(gettext("Error"),gettext("This discussion could not be loaded. Refresh the page and try again.")))}))},toggleNewPost:function(e){if(e.preventDefault(),!this.newPostForm)return this.toggleDiscussion(),void(this.isWaitingOnNewPost=!0);this.showed&&(this.$("section.discussion").find(".inline-discussion-thread-container").addClass("is-hidden"),this.$("section.discussion").find(".add_post_btn_container").addClass("is-hidden"),this.newPostForm.removeClass("is-hidden")),this.newPostView.$el.removeClass("is-hidden"),this.toggleDiscussionBtn.addClass("shown"),this.toggleDiscussionBtn.find(".button-text").text(gettext("Hide Discussion")),this.showed=!0},onNewPostCreated:function(){this.navigateToAllPosts(),this.hideNewPost()},hideNewPost:function(){this.$("section.discussion").find(".inline-discussion-thread-container").removeClass("is-hidden"),this.$("section.discussion").find(".add_post_btn_container").removeClass("is-hidden").focus(),this.newPostForm.addClass("is-hidden")},handleKeydown:function(e){e.keyCode===this.escKey&&this.$("section.discussion").find(".cancel").trigger("click")}})}).call(window)}).call(window)},156(){(function(){(function(){"use strict";Backbone&&(this.DiscussionThreadEditView=Backbone.View.extend({tagName:"form",events:{submit:"updateHandler","click .post-cancel":"cancelHandler","keypress input:not(.wmd-input)":function(e){return DiscussionUtil.ignoreEnterKey(e)}},attributes:{class:"discussion-post edit-post-form"},initialize:function(e){return this.container=e.container||$(".thread-content-wrapper"),this.mode=e.mode||"inline",this.startHeader=e.startHeader,this.course_settings=e.course_settings,this.threadType=this.model.get("thread_type"),this.topicId=this.model.get("commentable_id"),this.context=e.context||"course",_.bindAll(this,"updateHandler","cancelHandler"),this},render:function(){var e,t=_.uniqueId("form-"),n=edx.HtmlUtils.template($("#thread-type-template").html()),i=$(n({form_id:t}).toString()),o=edx.HtmlUtils.template($("#thread-edit-template").html());return e=$.extend({mode:this.mode,startHeader:this.startHeader},this.model.attributes),edx.HtmlUtils.setHtml(this.$el,o(e)),this.container.append(this.$el),this.$submitBtn=this.$(".post-update"),this.addField(i),this.$("#"+t+"-post-type-"+this.threadType).attr("checked",!0),this.isTabMode()&&(this.topicView=new DiscussionTopicMenuView({topicId:this.topicId,course_settings:this.course_settings}),this.addField(this.topicView.render())),DiscussionUtil.makeWmdEditor(this.$el,$.proxy(this.$,this),"edit-post-body"),this},addField:function(e){return this.$(".forum-edit-post-form-wrapper").append(e),this},isTabMode:function(){return"tab"===this.mode},save:function(){var e=this.$(".edit-post-title").val(),t=this.$(".input-radio:checked").val(),n=this.$(".edit-post-body textarea").val(),i={title:e,thread_type:t,body:n};return this.topicView&&(i.commentable_id=this.topicView.getCurrentTopicId()),DiscussionUtil.safeAjax({$elem:this.$submitBtn,$loading:this.$submitBtn,url:DiscussionUtil.urlFor("update_thread",this.model.id),type:"POST",dataType:"json",data:i,error:DiscussionUtil.formErrorHandler(this.$(".post-errors")),success:function(){this.$(".edit-post-title").val("").attr("prev-text",""),this.$(".edit-post-body textarea").val("").attr("prev-text",""),this.$(".wmd-preview p").html(""),this.topicView&&(i.courseware_title=this.topicView.getFullTopicName()),this.model.set(i).unset("abbreviatedBody"),this.trigger("thread:updated"),this.threadType!==t&&(this.model.set("thread_type",t),this.model.trigger("thread:thread_type_updated"),this.trigger("comment:endorse"))}.bind(this)})},updateHandler:function(e){return e.preventDefault(),this.trigger("thread:update",e),this.save(),this},cancelHandler:function(e){return e.preventDefault(),this.trigger("thread:cancel_edit",e),this.remove(),this}}))}).call(window)}).call(window)},556(){(function(){(function(){"use strict";var e={}.hasOwnProperty;"undefined"!=typeof Backbone&&null!==Backbone&&(this.DiscussionThreadListView=function(t){function n(){var e=this;return this.updateEmailNotifications=function(){return n.prototype.updateEmailNotifications.apply(e,arguments)},this.retrieveFollowed=function(){return n.prototype.retrieveFollowed.apply(e,arguments)},this.chooseGroup=function(){return n.prototype.chooseGroup.apply(e,arguments)},this.chooseFilter=function(){return n.prototype.chooseFilter.apply(e,arguments)},this.threadRemoved=function(){return n.prototype.threadRemoved.apply(e,arguments)},this.threadSelected=function(){return n.prototype.threadSelected.apply(e,arguments)},this.renderThread=function(){return n.prototype.renderThread.apply(e,arguments)},this.loadMorePages=function(){return n.prototype.loadMorePages.apply(e,arguments)},this.showMetadataAccordingToSort=function(){return n.prototype.showMetadataAccordingToSort.apply(e,arguments)},this.renderThreads=function(){return n.prototype.renderThreads.apply(e,arguments)},this.addAndSelectThread=function(){return n.prototype.addAndSelectThread.apply(e,arguments)},this.reloadDisplayedCollection=function(){return n.prototype.reloadDisplayedCollection.apply(e,arguments)},this.clearSearchAlerts=function(){return n.prototype.clearSearchAlerts.apply(e,arguments)},this.removeSearchAlert=function(){return n.prototype.removeSearchAlert.apply(e,arguments)},this.addSearchAlert=function(){return n.prototype.addSearchAlert.apply(e,arguments)},this.performSearch=function(){return n.prototype.performSearch.apply(e,arguments)},n.__super__.constructor.apply(this,arguments)}return function(t,n){for(var i in n)e.call(n,i)&&(t[i]=n[i]);function o(){this.constructor=t}o.prototype=n.prototype,t.prototype=new o,t.__super__=n.prototype}(n,t),n.prototype.events={"keypress .forum-nav-browse-filter-input":function(e){return DiscussionUtil.ignoreEnterKey(e)},"change .forum-nav-sort-control":"sortThreads","click .forum-nav-thread-link":"threadSelected","click .forum-nav-load-more-link":"loadMorePages","change .forum-nav-filter-main-control":"chooseFilter","change .forum-nav-filter-cohort-control":"chooseGroup"},n.prototype.initialize=function(e){var t=this;this.courseSettings=e.courseSettings,this.supportsActiveThread=e.supportsActiveThread,this.hideReadState=e.hideReadState||!1,this.displayedCollection=new Discussion(this.collection.models,{pages:this.collection.pages}),this.collection.on("change",this.reloadDisplayedCollection),this.discussionIds=this.$el.data("discussion-id")||"",this.collection.on("reset",function(e){return t.displayedCollection.current_page=e.current_page,t.displayedCollection.pages=e.pages,t.displayedCollection.reset(e.models)}),this.collection.on("add",this.addAndSelectThread),this.collection.on("thread:remove",this.threadRemoved),this.sidebar_padding=10,this.boardName=null,this.current_search="",this.mode=e.mode||"commentables",this.showThreadPreview=!0,this.searchAlertCollection=new Backbone.Collection([],{model:Backbone.Model}),this.searchAlertCollection.on("add",function(e){var n;return n=edx.HtmlUtils.template($("#search-alert-template").html())({messageHtml:e.attributes.message,cid:e.cid,css_class:e.attributes.css_class}),edx.HtmlUtils.append(t.$(".search-alerts"),n),t.$("#search-alert-"+e.cid+" .dismiss").bind("click",e,function(e){return t.removeSearchAlert(e.data.cid)})}),this.searchAlertCollection.on("remove",function(e){return t.$("#search-alert-"+e.cid).remove()}),this.searchAlertCollection.on("reset",function(){return t.$(".search-alerts").empty()}),this.template=edx.HtmlUtils.template($("#thread-list-template").html()),this.threadListItemTemplate=edx.HtmlUtils.template($("#thread-list-item-template").html())},n.prototype.addSearchAlert=function(e,t){var n=new Backbone.Model({message:e,css_class:t||""});return this.searchAlertCollection.add(n),n},n.prototype.removeSearchAlert=function(e){return this.searchAlertCollection.remove(e)},n.prototype.clearSearchAlerts=function(){return this.searchAlertCollection.reset()},n.prototype.reloadDisplayedCollection=function(e){var t,n,i,o;this.clearSearchAlerts(),o=e.get("id"),n=this.renderThread(e),t=0!==(i=this.$(".forum-nav-thread[data-id="+o+"]")).has(".forum-nav-thread-link.is-active").length,i.replaceWith(n),this.showMetadataAccordingToSort(),this.supportsActiveThread&&t&&this.setActiveThread(o)},n.prototype.addAndSelectThread=function(e){var t=e.get("commentable_id"),n=this;return this.retrieveDiscussion(t,function(){return n.trigger("thread:created",e.get("id"))})},n.prototype.ignoreClick=function(e){return e.stopPropagation()},n.prototype.render=function(){var e=this;return this.timer=0,this.$el.empty(),edx.HtmlUtils.append(this.$el,this.template({isDiscussionDivisionEnabled:this.courseSettings.get("is_discussion_division_enabled"),isPrivilegedUser:DiscussionUtil.isPrivilegedUser()})),this.hideReadState&&this.$(".forum-nav-filter-main").addClass("is-hidden"),this.$(".forum-nav-sort-control option").removeProp("selected"),this.$(".forum-nav-sort-control option[value="+this.collection.sort_preference+"]").prop("selected",!0),this.displayedCollection.on("reset",this.renderThreads),this.displayedCollection.on("thread:remove",this.renderThreads),this.displayedCollection.on("change:commentable_id",function(){"commentables"===e.mode&&e.retrieveDiscussions(e.discussionIds.split(","))}),this.renderThreads(),this},n.prototype.renderThreads=function(){var e,t,n,i;for(this.$(".forum-nav-thread-list").empty(),n=0,i=this.displayedCollection.models.length;n1;return t||n},n.prototype.renderThread=function(e){var t=e.get("comments_count"),n=e.get("unread_comments_count"),i=!e.get("read")&&n===t,o=this.containsMarkup(e.get("body"))?"":e.get("body"),r=_.extend({neverRead:i,threadUrl:e.urlFor("retrieve"),threadPreview:o,showThreadPreview:this.showThreadPreview,hideReadState:this.hideReadState},e.toJSON()),s=$(this.threadListItemTemplate(r).toString()),a=s.find(".thread-preview-body").text();return a=(new DOMParser).parseFromString(a,"text/html").documentElement.textContent,s.find(".thread-preview-body").text(a),s},n.prototype.threadSelected=function(e){var t;return t=$(e.target).closest(".forum-nav-thread").attr("data-id"),this.supportsActiveThread&&this.setActiveThread(t),this.trigger("thread:selected",t),!1},n.prototype.threadRemoved=function(e){this.trigger("thread:removed",e)},n.prototype.setActiveThread=function(e){var t;this.$(".forum-nav-thread-link").find(".sr").remove(),this.$(".forum-nav-thread[data-id!='"+e+"'] .forum-nav-thread-link").removeClass("is-active"),t=edx.HtmlUtils.joinHtml(edx.HtmlUtils.HTML(''),edx.HtmlUtils.ensureHtml(gettext("Current conversation")),edx.HtmlUtils.HTML("")).toString(),this.$(".forum-nav-thread[data-id='"+e+"'] .forum-nav-thread-link").addClass("is-active").find(".forum-nav-thread-wrapper-1").prepend(t)},n.prototype.selectTopic=function(e){var t,n;return(n=e.closest(".forum-nav-browse-menu-item")).hasClass("forum-nav-browse-menu-all")?(this.discussionIds="",this.$(".forum-nav-filter-cohort").show(),this.retrieveAllThreads()):n.hasClass("forum-nav-browse-menu-following")?(this.retrieveFollowed(),this.$(".forum-nav-filter-cohort").hide()):(t=n.find(".forum-nav-browse-menu-item").andSelf().filter("[data-discussion-id]").map(function(e,t){return $(t).data("discussion-id")}).get(),this.retrieveDiscussions(t),this.$(".forum-nav-filter-cohort").toggle(!0===n.data("divided")))},n.prototype.chooseFilter=function(){return this.filter=$(".forum-nav-filter-main-control :selected").val(),this.clearSearchAlerts(),this.retrieveFirstPage()},n.prototype.chooseGroup=function(){return this.group_id=this.$(".forum-nav-filter-cohort-control :selected").val(),this.retrieveFirstPage()},n.prototype.retrieveDiscussion=function(e,t){var n=DiscussionUtil.urlFor("retrieve_discussion",e),i=this;return DiscussionUtil.safeAjax({url:n,type:"GET",success:function(e){i.collection.current_page=e.page,i.collection.pages=e.num_pages,i.collection.reset(e.discussion_data),Content.loadContentInfos(e.annotated_content_info),i.displayedCollection.reset(i.collection.models),t&&t()}})},n.prototype.retrieveDiscussions=function(e){return this.discussionIds=e.join(","),this.mode="commentables",this.retrieveFirstPage()},n.prototype.retrieveAllThreads=function(){return this.mode="all",this.retrieveFirstPage()},n.prototype.retrieveFirstPage=function(e){return this.collection.current_page=0,this.$(".forum-nav-thread-list").empty(),this.collection.models=[],this.loadMorePages(e)},n.prototype.sortThreads=function(e){return this.displayedCollection.setSortComparator(this.$(".forum-nav-sort-control").val()),this.retrieveFirstPage(e)},n.prototype.performSearch=function(e){this.trigger("search:initiated"),this.searchFor(e.val(),e)},n.prototype.searchFor=function(e,t){var n=DiscussionUtil.urlFor("search"),i=this;return this.clearSearchAlerts(),this.clearFilters(),this.mode="search",this.current_search=e,DiscussionUtil.safeAjax({$elem:t,data:{text:e},url:n,type:"GET",dataType:"json",$loading:$,loadingCallback:function(){var e=i.$(".forum-nav-thread-list");e.empty(),edx.HtmlUtils.append(e,edx.HtmlUtils.joinHtml(edx.HtmlUtils.HTML("
  • "),i.getLoadingContent(gettext("Loading posts list")),edx.HtmlUtils.HTML("
  • ")))},loadedCallback:function(){return i.$(".forum-nav-thread-list .forum-nav-load-more").remove()},success:function(t,n){var o,r;return"success"===n&&(i.collection.reset(t.discussion_data),i.clearSearchAlerts(),Content.loadContentInfos(t.annotated_content_info),i.collection.current_page=t.page,i.collection.pages=t.num_pages,_.isNull(t.corrected_text)?0===t.discussion_data.length&&(i.addSearchAlert(gettext("No posts matched your query.")),i.displayedCollection.models=[]):(r=_.escape(gettext("No results found for {original_query}. Showing results for {suggested_query}.")),o=edx.HtmlUtils.interpolateHtml(r,{original_query:edx.HtmlUtils.joinHtml(edx.HtmlUtils.HTML(""),e,edx.HtmlUtils.HTML("")),suggested_query:edx.HtmlUtils.joinHtml(edx.HtmlUtils.HTML(""),t.corrected_text,edx.HtmlUtils.HTML(""))}),i.addSearchAlert(o)),0!==i.collection.models.length&&i.displayedCollection.reset(i.collection.models),e)?i.searchForUser(e):t}})},n.prototype.searchForUser=function(e){var t=this;return DiscussionUtil.safeAjax({data:{username:e},url:DiscussionUtil.urlFor("users"),type:"GET",dataType:"json",error:function(){},success:function(e){var n,i;e.users.length>0&&(i=edx.HtmlUtils.joinHtml(edx.HtmlUtils.interpolateHtml(edx.HtmlUtils.HTML('
    '),{url:DiscussionUtil.urlFor("user_profile",e.users[0].id)}),e.users[0].username,edx.HtmlUtils.HTML("")),n=edx.HtmlUtils.interpolateHtml(gettext("Show posts by {username}."),{username:i}),t.addSearchAlert(n,"search-by-user"))}})},n.prototype.clearFilters=function(){return this.$(".forum-nav-filter-main-control").val("all"),this.$(".forum-nav-filter-cohort-control").val("all")},n.prototype.retrieveFollowed=function(){return this.mode="followed",this.retrieveFirstPage()},n.prototype.updateEmailNotifications=function(){var e,t,n;e=$("input.email-setting"),n=(t=e.prop("checked"))?"enable_notifications":"disable_notifications",DiscussionUtil.safeAjax({url:DiscussionUtil.urlFor(n),type:"POST",error:function(){e.prop("checked",!t)}})},n}.call(this,Backbone.View))}).call(window)}).call(window)},669(){(function(){(function(){"use strict";var e={}.hasOwnProperty;"undefined"!=typeof Backbone&&null!==Backbone&&(this.DiscussionThreadProfileView=function(){function t(){return t.__super__.constructor.apply(this,arguments)}return function(t,n){for(var i in n)e.call(n,i)&&(t[i]=n[i]);function o(){this.constructor=t}o.prototype=n.prototype,t.prototype=new o,t.__super__=n.prototype}(t,Backbone.View),t.prototype.render=function(){var e;return this.convertMath(),this.abbreviateBody(),e=$.extend(this.model.toJSON(),{permalink:this.model.urlFor("retrieve")}),this.model.get("anonymous")||(e=$.extend(e,{user:{username:this.model.username,user_url:this.model.user_url}})),edx.HtmlUtils.setHtml(this.$el,edx.HtmlUtils.template($("#profile-thread-template").html())(e)),this.$("span.timeago").timeago(),DiscussionUtil.typesetMathJax(this.$(".post-body")),this},t.prototype.convertMath=function(){var e=DiscussionUtil.markdownWithHighlight(this.model.get("body"));this.model.set("markdownBody",e)},t.prototype.abbreviateBody=function(){var e;e=DiscussionUtil.abbreviateHTML(this.model.get("markdownBody"),140),this.model.set("abbreviatedBody",e)},t}())}).call(window)}).call(window)},935(){(function(){(function(){"use strict";var e={}.hasOwnProperty;"undefined"!=typeof Backbone&&null!==Backbone&&(this.DiscussionThreadShowView=function(){function t(){return t.__super__.constructor.apply(this,arguments)}return function(t,n){for(var i in n)e.call(n,i)&&(t[i]=n[i]);function o(){this.constructor=t}o.prototype=n.prototype,t.prototype=new o,t.__super__=n.prototype}(t,DiscussionContentShowView),t.prototype.initialize=function(e){var n;if(t.__super__.initialize.call(this),this.mode=e.mode||"inline",this.startHeader=e.startHeader,this.is_commentable_divided=e.is_commentable_divided,"tab"!==(n=this.mode)&&"inline"!==n)throw new Error("invalid mode: "+this.mode)},t.prototype.renderTemplate=function(){var e=$.extend({mode:this.mode,startHeader:this.startHeader,flagged:this.model.isFlagged(),is_commentable_divided:this.is_commentable_divided,author_display:this.getAuthorDisplay(),cid:this.model.cid,readOnly:$(".discussion-module").data("read-only")},this.model.attributes);return edx.HtmlUtils.template($("#thread-show-template").html())(e)},t.prototype.render=function(){return edx.HtmlUtils.setHtml(this.$el,this.renderTemplate()),this.delegateEvents(),this.renderAttrs(),this.$("span.timeago").timeago(),this.convertMath(),this},t.prototype.convertMath=function(){DiscussionUtil.convertMath(this.$(".post-body")),DiscussionUtil.typesetMathJax(this.$(".post-body"))},t.prototype.edit=function(e){return this.trigger("thread:edit",e)},t.prototype._delete=function(e){return this.trigger("thread:_delete",e)},t}())}).call(window)}).call(window)},411(){(function(){(function(){"use strict";var e={}.hasOwnProperty;"undefined"!=typeof Backbone&&null!==Backbone&&(this.DiscussionThreadView=function(){function t(){var e=this;return this._delete=function(){return t.prototype._delete.apply(e,arguments)},this.closeEditView=function(){return t.prototype.closeEditView.apply(e,arguments)},this.edit=function(){return t.prototype.edit.apply(e,arguments)},this.endorseThread=function(){return t.prototype.endorseThread.apply(e,arguments)},this.addComment=function(){return t.prototype.addComment.apply(e,arguments)},this.renderAddResponseButton=function(){return t.prototype.renderAddResponseButton.apply(e,arguments)},this.renderResponseToList=function(){return t.prototype.renderResponseToList.apply(e,arguments)},this.renderResponseCountAndPagination=function(){return t.prototype.renderResponseCountAndPagination.apply(e,arguments)},t.__super__.constructor.apply(this,arguments)}return function(t,n){for(var i in n)e.call(n,i)&&(t[i]=n[i]);function o(){this.constructor=t}o.prototype=n.prototype,t.prototype=new o,t.__super__=n.prototype}(t,DiscussionContentView),t.prototype.events={"click .discussion-submit-post":"submitComment","click .add-response-btn":"scrollToAddResponse","keydown .wmd-button":function(e){return DiscussionUtil.handleKeypressInToolbar(e)}},t.prototype.$=function(e){return this.$el.find(e)},t.prototype.isQuestion=function(){return"question"===this.model.get("thread_type")},t.prototype.initialize=function(e){var n,i=this;if(t.__super__.initialize.call(this),this.mode=e.mode||"inline",this.context=e.context||"course",this.options=_.extend({},e),this.startHeader=e.startHeader,"tab"!==(n=this.mode)&&"inline"!==n)throw new Error("invalid mode: "+this.mode);this.readOnly=$(".discussion-module").data("read-only"),this.model.collection.on("reset",function(e){var t;t=i.model.get("id"),e.get(t)&&(i.model=e.get(t))}),this.is_commentable_divided=e.is_commentable_divided,this.createShowView(),this.responses=new Comments,this.loadedResponses=!1,this.isQuestion()&&(this.markedAnswers=new Comments)},t.prototype.rerender=function(){return this.showView&&this.showView.undelegateEvents(),this.undelegateEvents(),this.$el.empty(),this.initialize({mode:this.mode,model:this.model,el:this.el,courseSettings:this.options.courseSettings,topicId:this.topicId}),this.render()},t.prototype.renderTemplate=function(){var e,t;return this.template=_.template($("#thread-template").html()),(e=$("#discussion-container")).length||(e=$(".discussion-module")),t=_.extend(this.model.toJSON(),{readOnly:this.readOnly,startHeader:this.startHeader+1,can_create_comment:e.data("user-create-comment")}),this.template(t)},t.prototype.render=function(){var e=this,t=$(this.renderTemplate());this.$el.empty(),this.$el.append(t),this.delegateEvents(),this.renderShowView(),this.renderAttrs(),this.$("span.timeago").timeago(),this.makeWmdEditor("reply-body"),this.renderAddResponseButton(),this.responses.on("add",function(t){return e.renderResponseToList(t,".js-response-list",{})}),this.isQuestion()&&this.markedAnswers.on("add",function(t){return e.renderResponseToList(t,".js-marked-answer-list",{collapseComments:!0})}),this.loadInitialResponses()},t.prototype.attrRenderer=$.extend({},DiscussionContentView.prototype.attrRenderer,{closed:function(e){return this.$(".discussion-reply-new").toggle(!e),this.$(".comment-form").closest("li").toggle(!e),this.$(".action-vote").toggle(!e),this.$(".display-vote").toggle(e),this.renderAddResponseButton()}}),t.prototype.cleanup=function(){if(this.responsesRequest&&this.responsesRequest.abort)return this.responsesRequest.abort()},t.prototype.loadResponses=function(e,t,n){var i=this;this.responsesRequest=DiscussionUtil.safeAjax({url:DiscussionUtil.urlFor("retrieve_single_thread",this.model.get("commentable_id"),this.model.id),data:{resp_skip:this.responses.size(),resp_limit:e||void 0},$elem:t,$loading:t,takeFocus:!1,complete:function(){i.responsesRequest=null},success:function(e){Content.loadContentInfos(e.annotated_content_info),i.isQuestion()&&i.markedAnswers.add(e.content.endorsed_responses),i.responses.add(i.isQuestion()?e.content.non_endorsed_responses:e.content.children),i.renderResponseCountAndPagination(i.isQuestion()?e.content.non_endorsed_resp_total:e.content.resp_total),i.trigger("thread:responses:rendered"),i.loadedResponses=!0},error:function(e,t){"abort"!==t&&(404===e.status?DiscussionUtil.discussionAlert(gettext("Error"),gettext("The post you selected has been deleted.")):n?DiscussionUtil.discussionAlert(gettext("Error"),gettext("Responses could not be loaded. Refresh the page and try again.")):DiscussionUtil.discussionAlert(gettext("Error"),gettext("Additional responses could not be loaded. Refresh the page and try again.")))}})},t.prototype.loadInitialResponses=function(){return this.loadResponses(25,this.$el.find(".js-response-list"),!0)},t.prototype.renderResponseCountAndPagination=function(e){var t,n,i,o,r,s,a,d=this;if(this.isQuestion()&&0!==this.markedAnswers.length?(i=ngettext("{numResponses} other response","{numResponses} other responses",e),0===e&&this.$el.find(".response-count").hide()):i=ngettext("{numResponses} response","{numResponses} responses",e),this.$el.find(".response-count").text(edx.StringUtils.interpolate(i,{numResponses:e},!0)),(r=this.$el.find(".response-pagination")).empty(),e>0){if(a=0===(s=e-this.responses.size())?gettext("Showing all responses"):edx.StringUtils.interpolate(ngettext("Showing first response","Showing first {numResponses} responses",this.responses.size()),{numResponses:this.responses.size()},!0),r.append($("").addClass("response-display-count").text(a)),s>0)return s<100?(o=null,t=gettext("Load all responses")):(o=100,t=edx.StringUtils.interpolate(gettext("Load next {numResponses} responses"),{numResponses:o},!0)),(n=$("