├── .dockerignore ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .github ├── CONTRIBUTING.md ├── SECURITY.md ├── scripts │ ├── functions.sh │ ├── merge.sh │ ├── mirror.sh │ ├── print_behat_tags_json.sh │ ├── release.sh │ └── update_behat_plugin.sh └── workflows │ ├── acceptance.yml │ ├── coverage.yml │ ├── merge.yml │ ├── mirror.yml │ ├── release.yml │ ├── testing.yml │ ├── update_behat_plugin.yml │ └── update_behat_snapshots.yml ├── .gitignore ├── .npmrc ├── .nvmrc ├── .travis.yml ├── .vscode ├── extensions.json ├── launch.json ├── moodle.code-snippets └── settings.json ├── COPYING.txt ├── Dockerfile ├── GoogleService-Info.plist ├── README.md ├── UPGRADE.md ├── angular.json ├── browserslist ├── config.xml ├── cordova-plugin-moodleapp ├── .gitignore ├── package-lock.json ├── package.json ├── plugin.xml ├── scripts │ ├── build.js │ ├── copy-javascript.js │ └── templates │ │ └── cordova-plugin.js ├── src │ ├── android │ │ ├── Diagnostic.java │ │ ├── InstallReferrer.java │ │ ├── PinchToZoom.java │ │ └── SecureStorage.java │ ├── ios │ │ ├── Diagnostic.h │ │ ├── Diagnostic.m │ │ ├── Diagnostic_Microphone.h │ │ ├── Diagnostic_Microphone.m │ │ ├── SecureStorage.h │ │ └── SecureStorage.m │ └── ts │ │ ├── index.ts │ │ └── plugins │ │ ├── Diagnostic.ts │ │ ├── InstallReferrer.ts │ │ └── SecureStorage.ts ├── tsconfig.json └── types │ └── index.d.ts ├── google-services.json ├── gulp ├── task-build-behat-plugin.js ├── task-build-env.js ├── task-build-icons-json.js ├── task-build-lang.js ├── task-freeze-dependencies.js └── task-override-lang.js ├── gulpfile.js ├── hooks └── build ├── ionic.config.json ├── jest.config.js ├── licenses.json ├── local_moodleappbehat ├── classes │ ├── output │ │ └── mobile.php │ └── privacy │ │ └── provider.php ├── db │ └── mobile.php ├── fixtures │ └── dummy.pdf ├── js │ └── mobile │ │ └── index.js ├── lang │ └── en │ │ └── local_moodleappbehat.php ├── templates │ └── mobile.mustache ├── tests │ └── behat │ │ ├── behat_app.php │ │ ├── behat_app_helper.php │ │ ├── coverage │ │ └── .gitkeep │ │ └── snapshots │ │ └── failures │ │ └── .gitkeep └── version.php ├── moodle.config.example.json ├── moodle.config.json ├── nginx.conf ├── package-lock.json ├── package.json ├── patches ├── @angular+compiler+17.3.12.patch ├── @angular+router+17.3.12.patch ├── @ionic+core+8.5.0.patch ├── @sqlite.org+sqlite-wasm+3.45.0-build1.patch ├── check-es-compat+3.2.1.patch └── mp3-mediarecorder+4.0.5.patch ├── resources ├── android │ ├── android-splash.xml │ ├── icon-foreground.png │ ├── icon │ │ ├── drawable-hdpi-smallicon.png │ │ ├── drawable-ldpi-smallicon.png │ │ ├── drawable-mdpi-smallicon.png │ │ └── drawable-xhdpi-smallicon.png │ └── xml │ │ └── network_security_config.xml ├── icon.png ├── splash.png └── values │ └── colors.xml ├── scripts ├── build-behat-plugin.js ├── build.sh ├── copy-assets.js ├── cordova-hooks │ └── before_plugin_add.sh ├── create_langindex.sh ├── create_langindex_functions.sh ├── functions.sh ├── lang_functions.sh ├── langindex.json ├── serve.sh ├── update_lang_functions.sh └── update_langpacks.sh ├── src ├── addons │ ├── addons.module.ts │ ├── badges │ │ ├── badges.module.ts │ │ ├── classes │ │ │ └── user-badges-source.ts │ │ ├── lang.json │ │ ├── pages │ │ │ ├── badge-class │ │ │ │ ├── badge-class.html │ │ │ │ └── badge-class.ts │ │ │ ├── issued-badge │ │ │ │ ├── issued-badge.html │ │ │ │ ├── issued-badge.scss │ │ │ │ └── issued-badge.ts │ │ │ └── user-badges │ │ │ │ ├── user-badges.html │ │ │ │ └── user-badges.ts │ │ └── services │ │ │ ├── badges-helper.ts │ │ │ ├── badges.ts │ │ │ └── handlers │ │ │ ├── badge-link.ts │ │ │ ├── badgeclass-link.ts │ │ │ ├── mybadges-link.ts │ │ │ ├── push-click.ts │ │ │ ├── tag-area.ts │ │ │ └── user.ts │ ├── block │ │ ├── activitymodules │ │ │ ├── activitymodules.module.ts │ │ │ ├── components │ │ │ │ └── activitymodules │ │ │ │ │ ├── activitymodules.scss │ │ │ │ │ ├── activitymodules.ts │ │ │ │ │ └── addon-block-activitymodules.html │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_activitymodules.feature │ │ ├── activityresults │ │ │ ├── activityresults.module.ts │ │ │ ├── components │ │ │ │ └── activityresults │ │ │ │ │ ├── activityresults.scss │ │ │ │ │ └── activityresults.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_activityresults.feature │ │ ├── badges │ │ │ ├── badges.module.ts │ │ │ ├── components │ │ │ │ └── badges │ │ │ │ │ ├── badges.scss │ │ │ │ │ └── badges.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_badges.feature │ │ ├── block.module.ts │ │ ├── blogmenu │ │ │ ├── blogmenu.module.ts │ │ │ ├── components │ │ │ │ └── blogmenu │ │ │ │ │ ├── blogmenu.scss │ │ │ │ │ └── blogmenu.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_blogmenu.feature │ │ ├── blogrecent │ │ │ ├── blogrecent.module.ts │ │ │ ├── components │ │ │ │ └── blogrecent │ │ │ │ │ ├── blogrecent.scss │ │ │ │ │ └── blogrecent.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_blogrecent.feature │ │ ├── blogtags │ │ │ ├── blogtags.module.ts │ │ │ ├── components │ │ │ │ └── blogtags │ │ │ │ │ ├── blogtags.scss │ │ │ │ │ └── blogtags.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_blogtags.feature │ │ ├── calendarmonth │ │ │ ├── calendarmonth.module.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_calendar_month.feature │ │ ├── calendarupcoming │ │ │ ├── calendarupcoming.module.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_calendar_upcoming.feature │ │ ├── comments │ │ │ ├── comments.module.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_comments.feature │ │ ├── completionstatus │ │ │ ├── completionstatus.module.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_completionstatus.feature │ │ ├── courselist │ │ │ ├── courselist.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_courselist.feature │ │ ├── globalsearch │ │ │ ├── globalsearch.module.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_globalsearch.feature │ │ ├── glossaryrandom │ │ │ ├── glossaryrandom.module.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_glossaryrandom.feature │ │ ├── html │ │ │ ├── html.module.ts │ │ │ └── services │ │ │ │ ├── block-handler.ts │ │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_html.feature │ │ ├── learningplans │ │ │ ├── lang.json │ │ │ ├── learningplans.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_learningplans.feature │ │ ├── myoverview │ │ │ ├── components │ │ │ │ └── myoverview │ │ │ │ │ ├── addon-block-myoverview.html │ │ │ │ │ ├── myoverview.scss │ │ │ │ │ └── myoverview.ts │ │ │ ├── lang.json │ │ │ ├── myoverview.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_myoverview.feature │ │ ├── newsitems │ │ │ ├── components │ │ │ │ └── newsitems │ │ │ │ │ ├── newsitems.scss │ │ │ │ │ └── newsitems.ts │ │ │ ├── lang.json │ │ │ ├── newsitems.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_newsitems.feature │ │ ├── onlineusers │ │ │ ├── components │ │ │ │ └── onlineusers │ │ │ │ │ ├── onlineusers.scss │ │ │ │ │ └── onlineusers.ts │ │ │ ├── lang.json │ │ │ ├── onlineusers.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_onlineusers.feature │ │ ├── privatefiles │ │ │ ├── lang.json │ │ │ ├── privatefiles.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_privatefiles.feature │ │ ├── recentactivity │ │ │ ├── components │ │ │ │ └── recentactivity │ │ │ │ │ ├── recentactivity.scss │ │ │ │ │ └── recentactivity.ts │ │ │ ├── lang.json │ │ │ ├── recentactivity.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_recentactivity.feature │ │ ├── recentlyaccessedcourses │ │ │ ├── components │ │ │ │ └── recentlyaccessedcourses │ │ │ │ │ ├── addon-block-recentlyaccessedcourses.html │ │ │ │ │ └── recentlyaccessedcourses.ts │ │ │ ├── lang.json │ │ │ ├── recentlyaccessedcourses.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_recentlyaccessedcourses.feature │ │ ├── recentlyaccesseditems │ │ │ ├── components │ │ │ │ └── recentlyaccesseditems │ │ │ │ │ ├── addon-block-recentlyaccesseditems.html │ │ │ │ │ ├── recentlyaccesseditems.scss │ │ │ │ │ └── recentlyaccesseditems.ts │ │ │ ├── lang.json │ │ │ ├── recentlyaccesseditems.module.ts │ │ │ ├── services │ │ │ │ ├── block-handler.ts │ │ │ │ └── recentlyaccesseditems.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_recentlyaccesseditems.feature │ │ ├── rssclient │ │ │ ├── components │ │ │ │ └── rssclient │ │ │ │ │ ├── rssclient.scss │ │ │ │ │ └── rssclient.ts │ │ │ ├── lang.json │ │ │ ├── rssclient.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_rssclient.feature │ │ ├── searchforums │ │ │ ├── lang.json │ │ │ ├── searchforums.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_searchforums.feature │ │ ├── selfcompletion │ │ │ ├── lang.json │ │ │ ├── selfcompletion.module.ts │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_selfcompletion.feature │ │ ├── sitemainmenu │ │ │ ├── components │ │ │ │ └── sitemainmenu │ │ │ │ │ ├── addon-block-sitemainmenu.html │ │ │ │ │ └── sitemainmenu.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ ├── sitemainmenu.module.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_sitemainmenu.feature │ │ ├── starredcourses │ │ │ ├── components │ │ │ │ └── starredcourses │ │ │ │ │ ├── addon-block-starredcourses.html │ │ │ │ │ └── starredcourses.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ ├── block-handler.ts │ │ │ │ └── starredcourses.ts │ │ │ ├── starredcourses.module.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_starredourses.feature │ │ ├── tags │ │ │ ├── components │ │ │ │ └── tags │ │ │ │ │ ├── tags.scss │ │ │ │ │ └── tags.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── block-handler.ts │ │ │ ├── tags.module.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── block_tags.feature │ │ └── timeline │ │ │ ├── classes │ │ │ └── section.ts │ │ │ ├── components │ │ │ ├── events │ │ │ │ ├── addon-block-timeline-events.html │ │ │ │ ├── events.scss │ │ │ │ └── events.ts │ │ │ └── timeline │ │ │ │ ├── addon-block-timeline.html │ │ │ │ ├── timeline.scss │ │ │ │ └── timeline.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ ├── block-handler.ts │ │ │ └── timeline.ts │ │ │ ├── tests │ │ │ └── behat │ │ │ │ └── basic_usage.feature │ │ │ └── timeline.module.ts │ ├── blog │ │ ├── blog-lazy.module.ts │ │ ├── blog.module.ts │ │ ├── components │ │ │ └── entry-options-menu │ │ │ │ ├── entry-options-menu.html │ │ │ │ └── entry-options-menu.ts │ │ ├── constants.ts │ │ ├── lang.json │ │ ├── pages │ │ │ ├── edit-entry │ │ │ │ ├── edit-entry.html │ │ │ │ └── edit-entry.ts │ │ │ └── index │ │ │ │ ├── index.html │ │ │ │ ├── index.scss │ │ │ │ └── index.ts │ │ ├── services │ │ │ ├── blog-offline.ts │ │ │ ├── blog-sync.ts │ │ │ ├── blog.ts │ │ │ ├── database │ │ │ │ └── blog.ts │ │ │ └── handlers │ │ │ │ ├── course-option.ts │ │ │ │ ├── edit-entry-link.ts │ │ │ │ ├── index-link.ts │ │ │ │ ├── mainmenu.ts │ │ │ │ ├── sync-cron.ts │ │ │ │ ├── tag-area.ts │ │ │ │ └── user.ts │ │ └── tests │ │ │ └── behat │ │ │ ├── edit-entry.feature │ │ │ ├── entries.feature │ │ │ └── fixtures │ │ │ ├── stub6.txt │ │ │ └── stub7.txt │ ├── calendar │ │ ├── calendar-common.scss │ │ ├── calendar-lazy.module.ts │ │ ├── calendar.module.ts │ │ ├── classes │ │ │ └── events-source.ts │ │ ├── components │ │ │ ├── calendar │ │ │ │ ├── addon-calendar-calendar.html │ │ │ │ ├── calendar.scss │ │ │ │ └── calendar.ts │ │ │ ├── filter │ │ │ │ ├── filter.html │ │ │ │ ├── filter.scss │ │ │ │ └── filter.ts │ │ │ └── upcoming-events │ │ │ │ ├── addon-calendar-upcoming-events.html │ │ │ │ └── upcoming-events.ts │ │ ├── constants.ts │ │ ├── lang.json │ │ ├── pages │ │ │ ├── day │ │ │ │ ├── day.html │ │ │ │ ├── day.scss │ │ │ │ └── day.ts │ │ │ ├── edit-event │ │ │ │ ├── edit-event.html │ │ │ │ ├── edit-event.scss │ │ │ │ └── edit-event.ts │ │ │ ├── event │ │ │ │ ├── event.html │ │ │ │ ├── event.scss │ │ │ │ └── event.ts │ │ │ ├── index │ │ │ │ ├── index.html │ │ │ │ └── index.ts │ │ │ └── settings │ │ │ │ ├── settings.html │ │ │ │ └── settings.ts │ │ ├── services │ │ │ ├── calendar-helper.ts │ │ │ ├── calendar-offline.ts │ │ │ ├── calendar-sync.ts │ │ │ ├── calendar.ts │ │ │ ├── database │ │ │ │ ├── calendar-offline.ts │ │ │ │ └── calendar.ts │ │ │ └── handlers │ │ │ │ ├── mainmenu.ts │ │ │ │ ├── sync-cron.ts │ │ │ │ └── view-link.ts │ │ └── tests │ │ │ └── behat │ │ │ └── create_events.feature │ ├── competency │ │ ├── classes │ │ │ ├── competency-course-competencies-source.ts │ │ │ ├── competency-plan-competencies-source.ts │ │ │ └── competency-plans-source.ts │ │ ├── competency.module.ts │ │ ├── constants.ts │ │ ├── lang.json │ │ ├── pages │ │ │ ├── competencies │ │ │ │ ├── competencies.html │ │ │ │ └── competencies.ts │ │ │ ├── competency │ │ │ │ ├── competency.html │ │ │ │ └── competency.ts │ │ │ ├── competencysummary │ │ │ │ ├── competencysummary.html │ │ │ │ └── competencysummary.ts │ │ │ ├── coursecompetencies │ │ │ │ ├── coursecompetencies.html │ │ │ │ └── coursecompetencies.ts │ │ │ ├── plan │ │ │ │ ├── plan.html │ │ │ │ └── plan.ts │ │ │ └── planlist │ │ │ │ ├── planlist.html │ │ │ │ └── planlist.ts │ │ ├── services │ │ │ ├── competency-helper.ts │ │ │ ├── competency.ts │ │ │ └── handlers │ │ │ │ ├── competency-link.ts │ │ │ │ ├── course-option.ts │ │ │ │ ├── plan-link.ts │ │ │ │ ├── plans-link.ts │ │ │ │ ├── push-click.ts │ │ │ │ ├── user-competency-link.ts │ │ │ │ └── user.ts │ │ └── tests │ │ │ └── behat │ │ │ └── navigation.feature │ ├── coursecompletion │ │ ├── coursecompletion.module.ts │ │ ├── lang.json │ │ ├── pages │ │ │ └── report │ │ │ │ ├── report.html │ │ │ │ └── report.ts │ │ ├── services │ │ │ ├── coursecompletion.ts │ │ │ └── handlers │ │ │ │ ├── completionstatus-link.ts │ │ │ │ ├── course-option.ts │ │ │ │ └── user.ts │ │ └── tests │ │ │ └── behat │ │ │ ├── navigation.feature │ │ │ └── selfcompletion.feature │ ├── enrol │ │ ├── enrol.module.ts │ │ ├── fee │ │ │ ├── fee.module.ts │ │ │ └── services │ │ │ │ └── enrol-handler.ts │ │ ├── guest │ │ │ ├── guest.module.ts │ │ │ ├── lang.json │ │ │ └── services │ │ │ │ ├── enrol-handler.ts │ │ │ │ └── guest.ts │ │ ├── paypal │ │ │ ├── paypal.module.ts │ │ │ └── services │ │ │ │ └── enrol-handler.ts │ │ └── self │ │ │ ├── lang.json │ │ │ ├── self.module.ts │ │ │ └── services │ │ │ ├── enrol-handler.ts │ │ │ └── self.ts │ ├── filter │ │ ├── activitynames │ │ │ ├── activitynames.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── activitynames.ts │ │ ├── algebra │ │ │ ├── algebra.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── algebra.ts │ │ ├── censor │ │ │ ├── censor.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── censor.ts │ │ ├── data │ │ │ ├── data.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── data.ts │ │ ├── displayh5p │ │ │ ├── displayh5p.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── displayh5p.ts │ │ ├── emailprotect │ │ │ ├── emailprotect.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── emailprotect.ts │ │ ├── emoticon │ │ │ ├── emoticon.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── emoticon.ts │ │ ├── filter.module.ts │ │ ├── glossary │ │ │ ├── glossary.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── glossary.ts │ │ ├── mathjaxloader │ │ │ ├── mathjaxloader.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── mathjaxloader.ts │ │ ├── mediaplugin │ │ │ ├── classes │ │ │ │ └── videojs-ogvjs.ts │ │ │ ├── mediaplugin.module.ts │ │ │ ├── services │ │ │ │ ├── handlers │ │ │ │ │ └── mediaplugin.ts │ │ │ │ └── videojs.ts │ │ │ └── utils │ │ │ │ └── videojs.ts │ │ ├── multilang │ │ │ ├── multilang.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── multilang.ts │ │ ├── multilang2 │ │ │ ├── multilang2.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── multilang2.ts │ │ ├── tex │ │ │ ├── services │ │ │ │ └── handlers │ │ │ │ │ └── tex.ts │ │ │ └── tex.module.ts │ │ ├── tidy │ │ │ ├── services │ │ │ │ └── handlers │ │ │ │ │ └── tidy.ts │ │ │ └── tidy.module.ts │ │ └── urltolink │ │ │ ├── services │ │ │ └── handlers │ │ │ │ └── urltolink.ts │ │ │ └── urltolink.module.ts │ ├── messageoutput │ │ ├── airnotifier │ │ │ ├── airnotifier.module.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── devices │ │ │ │ │ ├── devices.html │ │ │ │ │ └── devices.ts │ │ │ └── services │ │ │ │ ├── airnotifier.ts │ │ │ │ └── handlers │ │ │ │ └── messageoutput.ts │ │ ├── messageoutput.module.ts │ │ └── services │ │ │ └── messageoutput-delegate.ts │ ├── messages │ │ ├── components │ │ │ └── conversation-info │ │ │ │ ├── conversation-info.html │ │ │ │ └── conversation-info.ts │ │ ├── constants.ts │ │ ├── guards │ │ │ └── index.ts │ │ ├── lang.json │ │ ├── messages-common.scss │ │ ├── messages-lazy.module.ts │ │ ├── messages.module.ts │ │ ├── pages │ │ │ ├── contacts-35 │ │ │ │ ├── contacts.html │ │ │ │ └── contacts.ts │ │ │ ├── contacts │ │ │ │ ├── contacts.html │ │ │ │ └── contacts.ts │ │ │ ├── discussion │ │ │ │ ├── discussion.html │ │ │ │ ├── discussion.scss │ │ │ │ └── discussion.ts │ │ │ ├── discussions-35 │ │ │ │ ├── discussions.html │ │ │ │ └── discussions.ts │ │ │ ├── group-conversations │ │ │ │ ├── group-conversations.html │ │ │ │ └── group-conversations.ts │ │ │ ├── search │ │ │ │ ├── search.html │ │ │ │ └── search.ts │ │ │ └── settings │ │ │ │ ├── settings.html │ │ │ │ └── settings.ts │ │ ├── services │ │ │ ├── database │ │ │ │ └── messages.ts │ │ │ ├── handlers │ │ │ │ ├── contact-request-link.ts │ │ │ │ ├── discussion-link.ts │ │ │ │ ├── index-link.ts │ │ │ │ ├── mainmenu.ts │ │ │ │ ├── push-click.ts │ │ │ │ ├── settings.ts │ │ │ │ ├── sync-cron.ts │ │ │ │ └── user-send-message.ts │ │ │ ├── messages-offline.ts │ │ │ ├── messages-sync.ts │ │ │ └── messages.ts │ │ └── tests │ │ │ └── behat │ │ │ ├── basic_usage.feature │ │ │ ├── navigation.feature │ │ │ ├── settings.feature │ │ │ └── snapshots │ │ │ ├── test-basic-usage-of-messages-in-app-view-recent-conversations-and-contacts_22.png │ │ │ └── test-basic-usage-of-messages-in-app-view-recent-conversations-and-contacts_30.png │ ├── mod │ │ ├── assign │ │ │ ├── assign.module.ts │ │ │ ├── classes │ │ │ │ ├── base-feedback-plugin-component.ts │ │ │ │ ├── base-submission-plugin-component.ts │ │ │ │ └── submissions-source.ts │ │ │ ├── components │ │ │ │ ├── edit-feedback-modal │ │ │ │ │ ├── edit-feedback-modal.html │ │ │ │ │ ├── edit-feedback-modal.scss │ │ │ │ │ └── edit-feedback-modal.ts │ │ │ │ ├── edit-feedback-plugin-modal │ │ │ │ │ ├── edit-feedback-plugin-modal.html │ │ │ │ │ └── edit-feedback-plugin-modal.ts │ │ │ │ ├── feedback-plugin │ │ │ │ │ ├── addon-mod-assign-feedback-plugin.html │ │ │ │ │ └── feedback-plugin.ts │ │ │ │ ├── index │ │ │ │ │ ├── addon-mod-assign-index.html │ │ │ │ │ └── index.ts │ │ │ │ ├── submission-plugin │ │ │ │ │ ├── addon-mod-assign-submission-plugin.html │ │ │ │ │ └── submission-plugin.ts │ │ │ │ └── submission │ │ │ │ │ ├── addon-mod-assign-submission.html │ │ │ │ │ ├── submission.scss │ │ │ │ │ └── submission.ts │ │ │ ├── constants.ts │ │ │ ├── feedback │ │ │ │ ├── comments │ │ │ │ │ ├── comments.module.ts │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-assign-feedback-comments.html │ │ │ │ │ │ └── comments.ts │ │ │ │ │ ├── lang.json │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── editpdf │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-assign-feedback-editpdf.html │ │ │ │ │ │ └── editpdf.ts │ │ │ │ │ ├── editpdf.module.ts │ │ │ │ │ ├── lang.json │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── feedback.module.ts │ │ │ │ └── file │ │ │ │ │ ├── component │ │ │ │ │ ├── addon-mod-assign-feedback-file.html │ │ │ │ │ └── file.ts │ │ │ │ │ ├── file.module.ts │ │ │ │ │ ├── lang.json │ │ │ │ │ └── services │ │ │ │ │ └── handler.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── edit │ │ │ │ │ ├── edit.html │ │ │ │ │ ├── edit.scss │ │ │ │ │ └── edit.ts │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ ├── submission-list │ │ │ │ │ ├── submission-list.html │ │ │ │ │ └── submission-list.ts │ │ │ │ └── submission-review │ │ │ │ │ ├── submission-review.html │ │ │ │ │ └── submission-review.ts │ │ │ ├── services │ │ │ │ ├── assign-helper.ts │ │ │ │ ├── assign-offline.ts │ │ │ │ ├── assign-sync.ts │ │ │ │ ├── assign.ts │ │ │ │ ├── database │ │ │ │ │ └── assign.ts │ │ │ │ ├── feedback-delegate.ts │ │ │ │ ├── handlers │ │ │ │ │ ├── default-feedback.ts │ │ │ │ │ ├── default-submission.ts │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ ├── push-click.ts │ │ │ │ │ └── sync-cron.ts │ │ │ │ └── submission-delegate.ts │ │ │ ├── submission │ │ │ │ ├── comments │ │ │ │ │ ├── comments.module.ts │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-assign-submission-comments.html │ │ │ │ │ │ └── comments.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── lang.json │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── file │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-assign-submission-file.html │ │ │ │ │ │ └── file.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── file.module.ts │ │ │ │ │ ├── lang.json │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── onlinetext │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-assign-submission-onlinetext.html │ │ │ │ │ │ └── onlinetext.ts │ │ │ │ │ ├── lang.json │ │ │ │ │ ├── onlinetext.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ └── submission.module.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── basic_usage.feature │ │ │ │ ├── grade_penalties.feature │ │ │ │ ├── marking_workflow-404.feature │ │ │ │ ├── marking_workflow.feature │ │ │ │ ├── navigation.feature │ │ │ │ ├── single_activity.feature │ │ │ │ └── snapshots │ │ │ │ ├── test-basic-usage-of-assignment-activity-in-app-editadd-submission-online-text--add-new-attempt-from-previous-submission--submit-for-grading_8.png │ │ │ │ └── test-single-activity-of-assign-type-in-app-single-activity-assign_9.png │ │ ├── bigbluebuttonbn │ │ │ ├── bigbluebuttonbn.module.ts │ │ │ ├── components │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── bigbluebuttonbn.ts │ │ │ │ └── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ └── module.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── basic_usage.feature │ │ │ │ └── groups.feature │ │ ├── book │ │ │ ├── book.module.ts │ │ │ ├── components │ │ │ │ ├── index │ │ │ │ │ ├── addon-mod-book-index.html │ │ │ │ │ └── index.ts │ │ │ │ └── toc │ │ │ │ │ ├── toc.html │ │ │ │ │ ├── toc.scss │ │ │ │ │ └── toc.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── contents │ │ │ │ │ ├── contents.html │ │ │ │ │ ├── contents.scss │ │ │ │ │ └── contents.ts │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── book.ts │ │ │ │ ├── database │ │ │ │ │ └── book.ts │ │ │ │ └── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ └── tag-area.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── basic_usage.feature │ │ │ │ ├── single_activity.feature │ │ │ │ └── snapshots │ │ │ │ ├── test-basic-usage-of-book-activity-in-app-open-chapters-from-table-of-contents_11.png │ │ │ │ └── test-single-activity-of-book-type-in-app-single-activity-book_11.png │ │ ├── chat │ │ │ ├── chat.module.ts │ │ │ ├── classes │ │ │ │ └── chat-sessions-source.ts │ │ │ ├── components │ │ │ │ ├── index │ │ │ │ │ ├── addon-mod-chat-index.html │ │ │ │ │ └── index.ts │ │ │ │ └── users-modal │ │ │ │ │ ├── users-modal.html │ │ │ │ │ └── users-modal.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── chat │ │ │ │ │ ├── chat.html │ │ │ │ │ ├── chat.scss │ │ │ │ │ └── chat.ts │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ ├── session-messages │ │ │ │ │ ├── session-messages.html │ │ │ │ │ ├── session-messages.scss │ │ │ │ │ └── session-messages.ts │ │ │ │ └── sessions │ │ │ │ │ ├── sessions.html │ │ │ │ │ ├── sessions.scss │ │ │ │ │ └── sessions.ts │ │ │ ├── services │ │ │ │ ├── chat-helper.ts │ │ │ │ ├── chat.ts │ │ │ │ └── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── prefetch-lazy.ts │ │ │ │ │ └── prefetch.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── basic_usage.feature │ │ │ │ └── navigation.feature │ │ ├── choice │ │ │ ├── choice.module.ts │ │ │ ├── components │ │ │ │ └── index │ │ │ │ │ ├── addon-mod-choice-index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── choice-offline.ts │ │ │ │ ├── choice-sync.ts │ │ │ │ ├── choice.ts │ │ │ │ ├── database │ │ │ │ │ └── choice.ts │ │ │ │ └── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ └── sync-cron.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── basic_usage.feature │ │ │ │ ├── choice_availability.feature │ │ │ │ ├── groups.feature │ │ │ │ └── snapshots │ │ │ │ ├── restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-end-deadline-in-the-future_18.png │ │ │ │ ├── restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-end-deadline-in-the-past_18.png │ │ │ │ ├── restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-start-deadline-in-the-future-with-show-preview-options_18.png │ │ │ │ ├── restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-start-deadline-in-the-future_18.png │ │ │ │ ├── restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-start-deadline-in-the-past_18.png │ │ │ │ ├── test-basic-usage-of-choice-activity-in-app-answer-a-choice-multi-or-single-update-answer--view-results--delete-choice_12.png │ │ │ │ └── test-basic-usage-of-choice-activity-in-app-answer-a-choice-multi-or-single-update-answer--view-results_15.png │ │ ├── constants.ts │ │ ├── data │ │ │ ├── classes │ │ │ │ └── base-field-plugin-component.ts │ │ │ ├── components │ │ │ │ ├── action │ │ │ │ │ ├── action.ts │ │ │ │ │ └── addon-mod-data-action.html │ │ │ │ ├── actionsmenu │ │ │ │ │ ├── actionsmenu.html │ │ │ │ │ └── actionsmenu.ts │ │ │ │ ├── field-plugin │ │ │ │ │ ├── addon-mod-data-field-plugin.html │ │ │ │ │ └── field-plugin.ts │ │ │ │ ├── index │ │ │ │ │ ├── addon-mod-data-index.html │ │ │ │ │ └── index.ts │ │ │ │ └── search-modal │ │ │ │ │ ├── search-modal.html │ │ │ │ │ └── search-modal.ts │ │ │ ├── constants.ts │ │ │ ├── data-forms.scss │ │ │ ├── data.module.ts │ │ │ ├── data.scss │ │ │ ├── fields │ │ │ │ ├── checkbox │ │ │ │ │ ├── checkbox.module.ts │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-checkbox.html │ │ │ │ │ │ └── checkbox.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── date │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-date.html │ │ │ │ │ │ └── date.ts │ │ │ │ │ ├── date.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── field.module.ts │ │ │ │ ├── file │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-file.html │ │ │ │ │ │ └── file.ts │ │ │ │ │ ├── file.module.ts │ │ │ │ │ ├── lang.json │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── latlong │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-latlong.html │ │ │ │ │ │ ├── latlong.scss │ │ │ │ │ │ └── latlong.ts │ │ │ │ │ ├── latlong.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── menu │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-menu.html │ │ │ │ │ │ └── menu.ts │ │ │ │ │ ├── menu.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── multimenu │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-multimenu.html │ │ │ │ │ │ └── multimenu.ts │ │ │ │ │ ├── multimenu.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── number │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-number.html │ │ │ │ │ │ └── number.ts │ │ │ │ │ ├── number.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── picture │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-picture.html │ │ │ │ │ │ └── picture.ts │ │ │ │ │ ├── lang.json │ │ │ │ │ ├── picture.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── radiobutton │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-radiobutton.html │ │ │ │ │ │ └── radiobutton.ts │ │ │ │ │ ├── radiobutton.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handler.ts │ │ │ │ ├── text │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-text.html │ │ │ │ │ │ └── text.ts │ │ │ │ │ ├── services │ │ │ │ │ │ └── handler.ts │ │ │ │ │ └── text.module.ts │ │ │ │ ├── textarea │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-data-field-textarea.html │ │ │ │ │ │ └── textarea.ts │ │ │ │ │ ├── services │ │ │ │ │ │ └── handler.ts │ │ │ │ │ └── textarea.module.ts │ │ │ │ └── url │ │ │ │ │ ├── component │ │ │ │ │ ├── addon-mod-data-field-url.html │ │ │ │ │ └── url.ts │ │ │ │ │ ├── services │ │ │ │ │ └── handler.ts │ │ │ │ │ └── url.module.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── edit │ │ │ │ │ ├── edit.html │ │ │ │ │ └── edit.ts │ │ │ │ ├── entry │ │ │ │ │ ├── entry.html │ │ │ │ │ └── entry.ts │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── data-fields-delegate.ts │ │ │ │ ├── data-helper.ts │ │ │ │ ├── data-offline.ts │ │ │ │ ├── data-sync.ts │ │ │ │ ├── data.ts │ │ │ │ ├── database │ │ │ │ │ └── data.ts │ │ │ │ └── handlers │ │ │ │ │ ├── approve-link-lazy.ts │ │ │ │ │ ├── approve-link.ts │ │ │ │ │ ├── default-field.ts │ │ │ │ │ ├── delete-link-lazy.ts │ │ │ │ │ ├── delete-link.ts │ │ │ │ │ ├── edit-link-lazy.ts │ │ │ │ │ ├── edit-link.ts │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── prefetch-lazy.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ ├── show-link-lazy.ts │ │ │ │ │ ├── show-link.ts │ │ │ │ │ ├── sync-cron-lazy.ts │ │ │ │ │ ├── sync-cron.ts │ │ │ │ │ └── tag-area.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── entries.feature │ │ │ │ ├── links.feature │ │ │ │ └── sync.feature │ │ ├── feedback │ │ │ ├── classes │ │ │ │ └── feedback-attempts-source.ts │ │ │ ├── components │ │ │ │ └── index │ │ │ │ │ ├── addon-mod-feedback-index.html │ │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── feedback.module.ts │ │ │ ├── feedback.scss │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── attempt │ │ │ │ │ ├── attempt.html │ │ │ │ │ └── attempt.ts │ │ │ │ ├── attempts │ │ │ │ │ ├── attempts.html │ │ │ │ │ └── attempts.ts │ │ │ │ ├── form │ │ │ │ │ ├── form.html │ │ │ │ │ ├── form.scss │ │ │ │ │ └── form.ts │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ └── nonrespondents │ │ │ │ │ ├── nonrespondents.html │ │ │ │ │ └── nonrespondents.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── feedback.ts │ │ │ │ ├── feedback-helper.ts │ │ │ │ ├── feedback-offline.ts │ │ │ │ ├── feedback-sync.ts │ │ │ │ ├── feedback.ts │ │ │ │ └── handlers │ │ │ │ │ ├── analysis-link.ts │ │ │ │ │ ├── complete-link.ts │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ ├── print-link.ts │ │ │ │ │ ├── push-click.ts │ │ │ │ │ ├── show-entries-link.ts │ │ │ │ │ ├── show-non-respondents-link.ts │ │ │ │ │ └── sync-cron.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── charts.feature │ │ │ │ ├── navigation.feature │ │ │ │ └── snapshots │ │ │ │ └── feedback-charts-in-responses-analysis-chart-is-shown-in-analysis_9.png │ │ ├── folder │ │ │ ├── components │ │ │ │ └── index │ │ │ │ │ ├── addon-mod-folder-index.html │ │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── folder.module.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── folder-helper.ts │ │ │ │ ├── folder.ts │ │ │ │ └── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── pluginfile.ts │ │ │ │ │ └── prefetch.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── basic_usage.feature │ │ ├── forum │ │ │ ├── classes │ │ │ │ ├── forum-discussions-source.ts │ │ │ │ └── forum-discussions-swipe-manager.ts │ │ │ ├── components │ │ │ │ ├── discussion-options-menu │ │ │ │ │ ├── discussion-options-menu.html │ │ │ │ │ └── discussion-options-menu.ts │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ │ ├── post-options-menu │ │ │ │ │ ├── post-options-menu.html │ │ │ │ │ ├── post-options-menu.scss │ │ │ │ │ └── post-options-menu.ts │ │ │ │ └── post │ │ │ │ │ ├── post.html │ │ │ │ │ ├── post.scss │ │ │ │ │ └── post.ts │ │ │ ├── constants.ts │ │ │ ├── forum.module.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── discussion │ │ │ │ │ ├── discussion.html │ │ │ │ │ ├── discussion.scss │ │ │ │ │ └── discussion.ts │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ ├── new-discussion │ │ │ │ │ ├── new-discussion.html │ │ │ │ │ ├── new-discussion.scss │ │ │ │ │ └── new-discussion.ts │ │ │ │ └── search │ │ │ │ │ ├── search.html │ │ │ │ │ └── search.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── offline.ts │ │ │ │ ├── forum-helper.ts │ │ │ │ ├── forum-offline.ts │ │ │ │ ├── forum-sync.ts │ │ │ │ ├── forum.ts │ │ │ │ └── handlers │ │ │ │ │ ├── discussion-link.ts │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── post-link.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ ├── push-click.ts │ │ │ │ │ ├── sync-cron.ts │ │ │ │ │ └── tag-area.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── basic_usage.feature │ │ │ │ ├── groups.feature │ │ │ │ ├── navigation.feature │ │ │ │ ├── search.feature │ │ │ │ └── snapshots │ │ │ │ ├── test-basic-usage-of-forum-activity-in-app-reply-a-post_13.png │ │ │ │ └── test-basic-usage-of-forum-activity-in-app-reply-a-post_8.png │ │ ├── glossary │ │ │ ├── classes │ │ │ │ └── glossary-entries-source.ts │ │ │ ├── components │ │ │ │ ├── index │ │ │ │ │ ├── addon-mod-glossary-index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ │ └── mode-picker │ │ │ │ │ ├── addon-mod-glossary-mode-picker.html │ │ │ │ │ └── mode-picker.ts │ │ │ ├── constants.ts │ │ │ ├── glossary.module.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── edit │ │ │ │ │ ├── edit.html │ │ │ │ │ └── edit.ts │ │ │ │ ├── entry │ │ │ │ │ ├── entry.html │ │ │ │ │ └── entry.ts │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── glossary.ts │ │ │ │ ├── glossary-helper.ts │ │ │ │ ├── glossary-offline.ts │ │ │ │ ├── glossary-sync.ts │ │ │ │ ├── glossary.ts │ │ │ │ └── handlers │ │ │ │ │ ├── edit-link.ts │ │ │ │ │ ├── entry-link.ts │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ ├── sync-cron.ts │ │ │ │ │ └── tag-area.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── basic_usage.feature │ │ │ │ ├── fixtures │ │ │ │ ├── stub1.txt │ │ │ │ ├── stub2.txt │ │ │ │ └── stub3.txt │ │ │ │ └── navigation.feature │ │ ├── h5pactivity │ │ │ ├── components │ │ │ │ ├── attempt-completion │ │ │ │ │ ├── attempt-completion.html │ │ │ │ │ ├── attempt-completion.scss │ │ │ │ │ └── attempt-completion.ts │ │ │ │ ├── attempt-success │ │ │ │ │ ├── attempt-success.html │ │ │ │ │ ├── attempt-success.scss │ │ │ │ │ └── attempt-success.ts │ │ │ │ ├── attempt-summary │ │ │ │ │ ├── attempt-summary.html │ │ │ │ │ ├── attempt-summary.scss │ │ │ │ │ └── attempt-summary.ts │ │ │ │ └── index │ │ │ │ │ ├── addon-mod-h5pactivity-index.html │ │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── h5pactivity.module.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── attempt-results │ │ │ │ │ ├── attempt-results.html │ │ │ │ │ ├── attempt-results.scss │ │ │ │ │ └── attempt-results.ts │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ ├── user-attempts │ │ │ │ │ ├── user-attempts.html │ │ │ │ │ ├── user-attempts.scss │ │ │ │ │ └── user-attempts.ts │ │ │ │ └── users-attempts │ │ │ │ │ ├── users-attempts.html │ │ │ │ │ ├── users-attempts.scss │ │ │ │ │ └── users-attempts.ts │ │ │ └── services │ │ │ │ ├── h5pactivity-sync.ts │ │ │ │ ├── h5pactivity.ts │ │ │ │ └── handlers │ │ │ │ ├── index-link.ts │ │ │ │ ├── module.ts │ │ │ │ ├── prefetch.ts │ │ │ │ ├── report-link.ts │ │ │ │ └── sync-cron.ts │ │ ├── imscp │ │ │ ├── components │ │ │ │ ├── index │ │ │ │ │ ├── addon-mod-imscp-index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ │ └── toc │ │ │ │ │ ├── toc.html │ │ │ │ │ └── toc.ts │ │ │ ├── constants.ts │ │ │ ├── imscp.module.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ └── view │ │ │ │ │ ├── view.html │ │ │ │ │ └── view.ts │ │ │ ├── services │ │ │ │ ├── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── pluginfile.ts │ │ │ │ │ └── prefetch.ts │ │ │ │ └── imscp.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── basic_usage.feature │ │ ├── label │ │ │ ├── constants.ts │ │ │ ├── label.module.ts │ │ │ └── services │ │ │ │ ├── handlers │ │ │ │ ├── index-link.ts │ │ │ │ ├── module.ts │ │ │ │ └── prefetch.ts │ │ │ │ └── label.ts │ │ ├── lesson │ │ │ ├── components │ │ │ │ ├── index │ │ │ │ │ ├── addon-mod-lesson-index.html │ │ │ │ │ └── index.ts │ │ │ │ └── menu-modal │ │ │ │ │ ├── menu-modal.html │ │ │ │ │ └── menu-modal.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── lesson.module.ts │ │ │ ├── pages │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ ├── player │ │ │ │ │ ├── player.html │ │ │ │ │ ├── player.scss │ │ │ │ │ └── player.ts │ │ │ │ └── user-retake │ │ │ │ │ ├── user-retake.html │ │ │ │ │ ├── user-retake.scss │ │ │ │ │ └── user-retake.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── lesson.ts │ │ │ │ ├── handlers │ │ │ │ │ ├── grade-link.ts │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ ├── push-click.ts │ │ │ │ │ ├── report-link.ts │ │ │ │ │ └── sync-cron.ts │ │ │ │ ├── lesson-helper.ts │ │ │ │ ├── lesson-offline.ts │ │ │ │ ├── lesson-sync.ts │ │ │ │ └── lesson.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── numerical_decimal_separator.feature │ │ ├── lti │ │ │ ├── components │ │ │ │ └── index │ │ │ │ │ ├── addon-mod-lti-index.html │ │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── lti.module.ts │ │ │ ├── pages │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ └── services │ │ │ │ ├── handlers │ │ │ │ ├── index-link.ts │ │ │ │ ├── list-link.ts │ │ │ │ ├── module.ts │ │ │ │ └── prefetch.ts │ │ │ │ ├── lti-helper.ts │ │ │ │ └── lti.ts │ │ ├── mod.module.ts │ │ ├── page │ │ │ ├── components │ │ │ │ └── index │ │ │ │ │ ├── addon-mod-page-index.html │ │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── page.module.ts │ │ │ ├── pages │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── pluginfile.ts │ │ │ │ │ └── prefetch.ts │ │ │ │ ├── page-helper.ts │ │ │ │ └── page.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── basic_usage.feature │ │ │ │ ├── page_activity_completion.feature │ │ │ │ └── page_appearance.feature │ │ ├── qbank │ │ │ ├── constants.ts │ │ │ ├── qbank.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── module.ts │ │ ├── quiz │ │ │ ├── accessrules │ │ │ │ ├── accessrules.module.ts │ │ │ │ ├── delaybetweenattempts │ │ │ │ │ ├── delaybetweenattempts.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handlers │ │ │ │ │ │ └── delaybetweenattempts.ts │ │ │ │ ├── ipaddress │ │ │ │ │ ├── ipaddress.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handlers │ │ │ │ │ │ └── ipaddress.ts │ │ │ │ ├── numattempts │ │ │ │ │ ├── numattempts.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handlers │ │ │ │ │ │ └── numattempts.ts │ │ │ │ ├── offlineattempts │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-quiz-access-offline-attempts.html │ │ │ │ │ │ └── offlineattempts.ts │ │ │ │ │ ├── offlineattempts.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handlers │ │ │ │ │ │ └── offlineattempts.ts │ │ │ │ ├── openclosedate │ │ │ │ │ ├── openclosedate.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handlers │ │ │ │ │ │ └── openclosedate.ts │ │ │ │ ├── password │ │ │ │ │ ├── component │ │ │ │ │ │ ├── addon-mod-quiz-access-password.html │ │ │ │ │ │ └── password.ts │ │ │ │ │ ├── password.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ ├── database │ │ │ │ │ │ └── password.ts │ │ │ │ │ │ └── handlers │ │ │ │ │ │ └── password.ts │ │ │ │ ├── safebrowser │ │ │ │ │ ├── safebrowser.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handlers │ │ │ │ │ │ └── safebrowser.ts │ │ │ │ ├── securewindow │ │ │ │ │ ├── securewindow.module.ts │ │ │ │ │ └── services │ │ │ │ │ │ └── handlers │ │ │ │ │ │ └── securewindow.ts │ │ │ │ └── timelimit │ │ │ │ │ ├── component │ │ │ │ │ ├── addon-mod-quiz-access-time-limit.html │ │ │ │ │ └── timelimit.ts │ │ │ │ │ ├── services │ │ │ │ │ └── handlers │ │ │ │ │ │ └── timelimit.ts │ │ │ │ │ └── timelimit.module.ts │ │ │ ├── classes │ │ │ │ └── auto-save.ts │ │ │ ├── components │ │ │ │ ├── attempt-info │ │ │ │ │ ├── attempt-info.html │ │ │ │ │ └── attempt-info.ts │ │ │ │ ├── attempt-state │ │ │ │ │ ├── attempt-state.html │ │ │ │ │ ├── attempt-state.scss │ │ │ │ │ └── attempt-state.ts │ │ │ │ ├── connection-error │ │ │ │ │ ├── connection-error.html │ │ │ │ │ ├── connection-error.scss │ │ │ │ │ └── connection-error.ts │ │ │ │ ├── index │ │ │ │ │ ├── addon-mod-quiz-index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ │ ├── navigation-modal │ │ │ │ │ ├── navigation-modal.html │ │ │ │ │ ├── navigation-modal.scss │ │ │ │ │ └── navigation-modal.ts │ │ │ │ ├── preflight-modal │ │ │ │ │ ├── preflight-modal.html │ │ │ │ │ └── preflight-modal.ts │ │ │ │ └── question-card │ │ │ │ │ ├── question-card.html │ │ │ │ │ ├── question-card.scss │ │ │ │ │ └── question-card.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ ├── player │ │ │ │ │ ├── player.html │ │ │ │ │ ├── player.scss │ │ │ │ │ └── player.ts │ │ │ │ └── review │ │ │ │ │ ├── review.html │ │ │ │ │ └── review.ts │ │ │ ├── quiz.module.ts │ │ │ ├── services │ │ │ │ ├── access-rules-delegate.ts │ │ │ │ ├── database │ │ │ │ │ └── quiz.ts │ │ │ │ ├── handlers │ │ │ │ │ ├── grade-link.ts │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ ├── push-click.ts │ │ │ │ │ ├── review-link.ts │ │ │ │ │ └── sync-cron.ts │ │ │ │ ├── quiz-helper.ts │ │ │ │ ├── quiz-offline.ts │ │ │ │ ├── quiz-sync.ts │ │ │ │ └── quiz.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── attempts_list.feature │ │ │ │ ├── basic-usage-403.feature │ │ │ │ ├── basic_usage.feature │ │ │ │ ├── can_review.feature │ │ │ │ ├── quiz_behaviour.feature │ │ │ │ ├── quiz_navigation.feature │ │ │ │ └── snapshots │ │ │ │ ├── attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_27.png │ │ │ │ └── attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_42.png │ │ ├── resource │ │ │ ├── components │ │ │ │ └── index │ │ │ │ │ ├── addon-mod-resource-index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── resource.module.ts │ │ │ └── services │ │ │ │ ├── handlers │ │ │ │ ├── index-link.ts │ │ │ │ ├── list-link.ts │ │ │ │ ├── module.ts │ │ │ │ ├── pluginfile.ts │ │ │ │ └── prefetch.ts │ │ │ │ ├── resource-helper.ts │ │ │ │ └── resource.ts │ │ ├── scorm │ │ │ ├── classes │ │ │ │ └── data-model-12.ts │ │ │ ├── components │ │ │ │ ├── index │ │ │ │ │ ├── addon-mod-scorm-index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ │ └── toc │ │ │ │ │ ├── toc.html │ │ │ │ │ ├── toc.scss │ │ │ │ │ └── toc.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ ├── online-player │ │ │ │ │ ├── online-player.html │ │ │ │ │ └── online-player.ts │ │ │ │ └── player │ │ │ │ │ ├── player.html │ │ │ │ │ └── player.ts │ │ │ ├── scorm.module.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── scorm.ts │ │ │ │ ├── handlers │ │ │ │ │ ├── grade-link.ts │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── player-link.ts │ │ │ │ │ ├── pluginfile.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ └── sync-cron.ts │ │ │ │ ├── scorm-helper.ts │ │ │ │ ├── scorm-offline.ts │ │ │ │ ├── scorm-sync.ts │ │ │ │ └── scorm.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── appearance_options.feature │ │ │ │ ├── attempts_and_grading.feature │ │ │ │ ├── availability.feature │ │ │ │ ├── basic_usage.feature │ │ │ │ ├── single_activity.feature │ │ │ │ └── snapshots │ │ │ │ ├── test-appearance-options-of-scorm-activity-in-app-apply-width-and-height-when-using-new-window-mode_10.png │ │ │ │ ├── test-appearance-options-of-scorm-activity-in-app-apply-width-and-height-when-using-new-window-mode_16.png │ │ │ │ ├── test-appearance-options-of-scorm-activity-in-app-apply-width-and-height-when-using-new-window-mode_22.png │ │ │ │ └── test-single-activity-of-scorm-type-in-app-single-activity-scorm_9.png │ │ ├── subsection │ │ │ ├── constants.ts │ │ │ ├── services │ │ │ │ └── handlers │ │ │ │ │ └── index-link.ts │ │ │ └── subsection.module.ts │ │ ├── survey │ │ │ ├── components │ │ │ │ └── index │ │ │ │ │ ├── addon-mod-survey-index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── survey.ts │ │ │ │ ├── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── prefetch-lazy.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ ├── sync-cron-lazy.ts │ │ │ │ │ └── sync-cron.ts │ │ │ │ ├── survey-helper.ts │ │ │ │ ├── survey-offline.ts │ │ │ │ ├── survey-sync.ts │ │ │ │ └── survey.ts │ │ │ ├── survey.module.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── basic_usage.feature │ │ ├── url │ │ │ ├── components │ │ │ │ └── index │ │ │ │ │ ├── addon-mod-url-index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ └── prefetch.ts │ │ │ │ ├── url-helper.ts │ │ │ │ └── url.ts │ │ │ ├── tests │ │ │ │ └── behat │ │ │ │ │ └── basic_usage.feature │ │ │ └── url.module.ts │ │ ├── wiki │ │ │ ├── components │ │ │ │ ├── index │ │ │ │ │ ├── addon-mod-wiki-index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ │ ├── map │ │ │ │ │ ├── map.html │ │ │ │ │ └── map.ts │ │ │ │ └── subwiki-picker │ │ │ │ │ ├── addon-mod-wiki-subwiki-picker.html │ │ │ │ │ └── subwiki-picker.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── edit │ │ │ │ │ ├── edit.html │ │ │ │ │ └── edit.ts │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── wiki.ts │ │ │ │ ├── handlers │ │ │ │ │ ├── create-link-lazy.ts │ │ │ │ │ ├── create-link.ts │ │ │ │ │ ├── edit-link-lazy.ts │ │ │ │ │ ├── edit-link.ts │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── list-link.ts │ │ │ │ │ ├── module.ts │ │ │ │ │ ├── page-or-map-link-lazy.ts │ │ │ │ │ ├── page-or-map-link.ts │ │ │ │ │ ├── prefetch-lazy.ts │ │ │ │ │ ├── prefetch.ts │ │ │ │ │ ├── sync-cron-lazy.ts │ │ │ │ │ ├── sync-cron.ts │ │ │ │ │ └── tag-area.ts │ │ │ │ ├── wiki-offline.ts │ │ │ │ ├── wiki-sync.ts │ │ │ │ └── wiki.ts │ │ │ └── wiki.module.ts │ │ └── workshop │ │ │ ├── assessment │ │ │ ├── accumulative │ │ │ │ ├── accumulative.module.ts │ │ │ │ ├── component │ │ │ │ │ ├── accumulative.ts │ │ │ │ │ └── addon-mod-workshop-assessment-strategy-accumulative.html │ │ │ │ ├── lang.json │ │ │ │ └── services │ │ │ │ │ ├── handler-lazy.ts │ │ │ │ │ └── handler.ts │ │ │ ├── assessment.module.ts │ │ │ ├── comments │ │ │ │ ├── comments.module.ts │ │ │ │ ├── component │ │ │ │ │ ├── addon-mod-workshop-assessment-strategy-comments.html │ │ │ │ │ └── comments.ts │ │ │ │ ├── lang.json │ │ │ │ └── services │ │ │ │ │ ├── handler-lazy.ts │ │ │ │ │ └── handler.ts │ │ │ ├── constants.ts │ │ │ ├── numerrors │ │ │ │ ├── component │ │ │ │ │ ├── addon-mod-workshop-assessment-strategy-numerrors.html │ │ │ │ │ └── numerrors.ts │ │ │ │ ├── lang.json │ │ │ │ ├── numerrors.module.ts │ │ │ │ └── services │ │ │ │ │ ├── handler-lazy.ts │ │ │ │ │ └── handler.ts │ │ │ └── rubric │ │ │ │ ├── component │ │ │ │ ├── addon-mod-workshop-assessment-strategy-rubric.html │ │ │ │ └── rubric.ts │ │ │ │ ├── lang.json │ │ │ │ ├── rubric.module.ts │ │ │ │ └── services │ │ │ │ ├── handler-lazy.ts │ │ │ │ └── handler.ts │ │ │ ├── classes │ │ │ └── assessment-strategy-component.ts │ │ │ ├── components │ │ │ ├── assessment-strategy │ │ │ │ ├── addon-mod-workshop-assessment-strategy.html │ │ │ │ └── assessment-strategy.ts │ │ │ ├── assessment │ │ │ │ ├── addon-mod-workshop-assessment.html │ │ │ │ └── assessment.ts │ │ │ ├── index │ │ │ │ ├── addon-mod-workshop-index.html │ │ │ │ └── index.ts │ │ │ ├── phase-modal │ │ │ │ ├── phase-modal.html │ │ │ │ └── phase-modal.ts │ │ │ └── submission │ │ │ │ ├── addon-mod-workshop-submission.html │ │ │ │ ├── submission.scss │ │ │ │ └── submission.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ ├── assessment │ │ │ │ ├── assessment.html │ │ │ │ └── assessment.ts │ │ │ ├── edit-submission │ │ │ │ ├── edit-submission.html │ │ │ │ └── edit-submission.ts │ │ │ ├── index │ │ │ │ ├── index.html │ │ │ │ └── index.ts │ │ │ └── submission │ │ │ │ ├── submission.html │ │ │ │ └── submission.ts │ │ │ ├── services │ │ │ ├── assessment-strategy-delegate.ts │ │ │ ├── database │ │ │ │ └── workshop.ts │ │ │ ├── handlers │ │ │ │ ├── index-link.ts │ │ │ │ ├── list-link.ts │ │ │ │ ├── module.ts │ │ │ │ ├── prefetch-lazy.ts │ │ │ │ ├── prefetch.ts │ │ │ │ ├── sync-cron-lazy.ts │ │ │ │ └── sync-cron.ts │ │ │ ├── workshop-helper.ts │ │ │ ├── workshop-offline.ts │ │ │ ├── workshop-sync.ts │ │ │ └── workshop.ts │ │ │ ├── tests │ │ │ └── behat │ │ │ │ └── basic_usage.feature │ │ │ └── workshop.module.ts │ ├── notes │ │ ├── components │ │ │ └── add │ │ │ │ ├── add-modal.html │ │ │ │ └── add-modal.ts │ │ ├── lang.json │ │ ├── notes.module.ts │ │ ├── pages │ │ │ └── list │ │ │ │ ├── list.html │ │ │ │ └── list.ts │ │ └── services │ │ │ ├── constants.ts │ │ │ ├── database │ │ │ └── notes.ts │ │ │ ├── handlers │ │ │ ├── course-option.ts │ │ │ ├── sync-cron.ts │ │ │ └── user.ts │ │ │ ├── notes-offline.ts │ │ │ ├── notes-sync.ts │ │ │ └── notes.ts │ ├── notifications │ │ ├── classes │ │ │ ├── legacy-notifications-source.ts │ │ │ └── notifications-source.ts │ │ ├── constants.ts │ │ ├── lang.json │ │ ├── notifications-lazy.module.ts │ │ ├── notifications.module.ts │ │ ├── notifications.scss │ │ ├── pages │ │ │ ├── list │ │ │ │ ├── list.html │ │ │ │ ├── list.scss │ │ │ │ └── list.ts │ │ │ ├── notification │ │ │ │ ├── notification.html │ │ │ │ ├── notification.scss │ │ │ │ └── notification.ts │ │ │ └── settings │ │ │ │ ├── settings.html │ │ │ │ ├── settings.scss │ │ │ │ └── settings.ts │ │ ├── services │ │ │ ├── handlers │ │ │ │ ├── cron.ts │ │ │ │ ├── mainmenu.ts │ │ │ │ ├── notifications-link.ts │ │ │ │ ├── preferences-link.ts │ │ │ │ ├── push-click.ts │ │ │ │ └── settings.ts │ │ │ ├── notifications-helper.ts │ │ │ └── notifications.ts │ │ └── tests │ │ │ └── behat │ │ │ └── notifications.feature │ ├── privatefiles │ │ ├── components │ │ │ ├── file-actions │ │ │ │ ├── file-actions.html │ │ │ │ ├── file-actions.scss │ │ │ │ └── file-actions.ts │ │ │ └── file │ │ │ │ ├── file.html │ │ │ │ ├── file.scss │ │ │ │ └── file.ts │ │ ├── constants.ts │ │ ├── lang.json │ │ ├── pages │ │ │ └── index │ │ │ │ ├── index.html │ │ │ │ ├── index.scss │ │ │ │ └── index.ts │ │ ├── privatefiles.module.ts │ │ └── services │ │ │ ├── handlers │ │ │ └── user.ts │ │ │ ├── privatefiles-helper.ts │ │ │ └── privatefiles.ts │ ├── qbehaviour │ │ ├── adaptive │ │ │ ├── adaptive.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── adaptive.ts │ │ ├── adaptivenopenalty │ │ │ ├── adaptivenopenalty.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── adaptivenopenalty.ts │ │ ├── deferredcbm │ │ │ ├── component │ │ │ │ ├── addon-qbehaviour-deferredcbm.html │ │ │ │ └── deferredcbm.ts │ │ │ ├── deferredcbm.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── deferredcbm.ts │ │ ├── deferredfeedback │ │ │ ├── deferredfeedback.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── deferredfeedback.ts │ │ ├── immediatecbm │ │ │ ├── immediatecbm.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── immediatecbm.ts │ │ ├── immediatefeedback │ │ │ ├── immediatefeedback.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── immediatefeedback.ts │ │ ├── informationitem │ │ │ ├── component │ │ │ │ ├── addon-qbehaviour-informationitem.html │ │ │ │ └── informationitem.ts │ │ │ ├── informationitem.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── informationitem.ts │ │ ├── interactive │ │ │ ├── interactive.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── interactive.ts │ │ ├── interactivecountback │ │ │ ├── interactivecountback.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── interactivecountback.ts │ │ ├── manualgraded │ │ │ ├── manualgraded.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── manualgraded.ts │ │ └── qbehaviour.module.ts │ ├── qtype │ │ ├── calculated │ │ │ ├── calculated.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── calculated.ts │ │ ├── calculatedmulti │ │ │ ├── calculatedmulti.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── calculatedmulti.ts │ │ ├── calculatedsimple │ │ │ ├── calculatedsimple.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── calculatedsimple.ts │ │ ├── ddimageortext │ │ │ ├── classes │ │ │ │ └── ddimageortext.ts │ │ │ ├── component │ │ │ │ ├── addon-qtype-ddimageortext.html │ │ │ │ ├── ddimageortext.scss │ │ │ │ └── ddimageortext.ts │ │ │ ├── ddimageortext.module.ts │ │ │ ├── lang.json │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── ddimageortext.ts │ │ ├── ddmarker │ │ │ ├── classes │ │ │ │ ├── ddmarker.ts │ │ │ │ └── graphics_api.ts │ │ │ ├── component │ │ │ │ ├── addon-qtype-ddmarker.html │ │ │ │ ├── ddmarker.scss │ │ │ │ └── ddmarker.ts │ │ │ ├── ddmarker.module.ts │ │ │ ├── lang.json │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── ddmarker.ts │ │ ├── ddwtos │ │ │ ├── classes │ │ │ │ └── ddwtos.ts │ │ │ ├── component │ │ │ │ ├── addon-qtype-ddwtos.html │ │ │ │ ├── ddwtos.scss │ │ │ │ └── ddwtos.ts │ │ │ ├── ddwtos.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── ddwtos.ts │ │ ├── description │ │ │ ├── component │ │ │ │ ├── addon-qtype-description.html │ │ │ │ └── description.ts │ │ │ ├── description.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── description.ts │ │ ├── essay │ │ │ ├── component │ │ │ │ ├── addon-qtype-essay.html │ │ │ │ └── essay.ts │ │ │ ├── essay.module.ts │ │ │ ├── lang.json │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── essay.ts │ │ ├── gapselect │ │ │ ├── component │ │ │ │ ├── addon-qtype-gapselect.html │ │ │ │ ├── gapselect.scss │ │ │ │ └── gapselect.ts │ │ │ ├── gapselect.module.ts │ │ │ ├── lang.json │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── gapselect.ts │ │ ├── match │ │ │ ├── component │ │ │ │ ├── addon-qtype-match.html │ │ │ │ ├── match.scss │ │ │ │ └── match.ts │ │ │ ├── lang.json │ │ │ ├── match.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── match.ts │ │ ├── multianswer │ │ │ ├── component │ │ │ │ ├── addon-qtype-multianswer.html │ │ │ │ ├── multianswer.scss │ │ │ │ └── multianswer.ts │ │ │ ├── lang.json │ │ │ ├── multianswer.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── multianswer.ts │ │ ├── multichoice │ │ │ ├── component │ │ │ │ ├── addon-qtype-multichoice.html │ │ │ │ ├── multichoice.scss │ │ │ │ └── multichoice.ts │ │ │ ├── lang.json │ │ │ ├── multichoice.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── multichoice.ts │ │ ├── numerical │ │ │ ├── component │ │ │ │ ├── numerical.html │ │ │ │ ├── numerical.scss │ │ │ │ └── numerical.ts │ │ │ ├── lang.json │ │ │ ├── numerical.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── numerical.ts │ │ ├── ordering │ │ │ ├── component │ │ │ │ ├── addon-qtype-ordering.html │ │ │ │ ├── ordering.scss │ │ │ │ └── ordering.ts │ │ │ ├── lang.json │ │ │ ├── ordering.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── ordering.ts │ │ ├── qtype.module.ts │ │ ├── randomsamatch │ │ │ ├── randomsamatch.module.ts │ │ │ └── services │ │ │ │ └── handlers │ │ │ │ └── randomsamatch.ts │ │ ├── shortanswer │ │ │ ├── component │ │ │ │ ├── addon-qtype-shortanswer.html │ │ │ │ ├── shortanswer.scss │ │ │ │ └── shortanswer.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ └── handlers │ │ │ │ │ └── shortanswer.ts │ │ │ └── shortanswer.module.ts │ │ └── truefalse │ │ │ ├── lang.json │ │ │ ├── services │ │ │ └── handlers │ │ │ │ └── truefalse.ts │ │ │ └── truefalse.module.ts │ ├── remotethemes │ │ ├── remotethemes.module.ts │ │ └── services │ │ │ └── remotethemes-handler.ts │ ├── report │ │ ├── insights │ │ │ ├── insights.module.ts │ │ │ ├── lang.json │ │ │ └── services │ │ │ │ ├── handlers │ │ │ │ └── action-link.ts │ │ │ │ └── insights.ts │ │ └── report.module.ts │ ├── storagemanager │ │ ├── constants.ts │ │ ├── lang.json │ │ ├── pages │ │ │ ├── course-storage │ │ │ │ ├── course-storage.html │ │ │ │ ├── course-storage.scss │ │ │ │ └── course-storage.ts │ │ │ └── courses-storage │ │ │ │ ├── courses-storage.html │ │ │ │ ├── courses-storage.scss │ │ │ │ └── courses-storage.ts │ │ ├── services │ │ │ └── handlers │ │ │ │ └── settings.ts │ │ └── storagemanager.module.ts │ └── userprofilefield │ │ ├── checkbox │ │ ├── checkbox.module.ts │ │ ├── component │ │ │ ├── addon-user-profile-field-checkbox.html │ │ │ ├── checkbox.scss │ │ │ └── checkbox.ts │ │ └── services │ │ │ └── handlers │ │ │ └── checkbox.ts │ │ ├── datetime │ │ ├── component │ │ │ ├── addon-user-profile-field-datetime.html │ │ │ └── datetime.ts │ │ ├── datetime.module.ts │ │ └── services │ │ │ └── handlers │ │ │ └── datetime.ts │ │ ├── menu │ │ ├── component │ │ │ ├── addon-user-profile-field-menu.html │ │ │ ├── menu.scss │ │ │ └── menu.ts │ │ ├── menu.module.ts │ │ └── services │ │ │ └── handlers │ │ │ └── menu.ts │ │ ├── social │ │ ├── component │ │ │ ├── addon-user-profile-field-social.html │ │ │ └── social.ts │ │ ├── services │ │ │ └── handlers │ │ │ │ └── social.ts │ │ └── social.module.ts │ │ ├── text │ │ ├── component │ │ │ ├── addon-user-profile-field-text.html │ │ │ └── text.ts │ │ ├── services │ │ │ └── handlers │ │ │ │ └── text.ts │ │ └── text.module.ts │ │ ├── textarea │ │ ├── component │ │ │ ├── addon-user-profile-field-textarea.html │ │ │ └── textarea.ts │ │ ├── services │ │ │ └── handlers │ │ │ │ └── textarea.ts │ │ └── textarea.module.ts │ │ └── userprofilefield.module.ts ├── app │ ├── app-routing.module.test.ts │ ├── app-routing.module.ts │ ├── app.component.html │ ├── app.component.test.ts │ └── app.component.ts ├── assets │ ├── countries.json │ ├── exttomime.json │ ├── fonts │ │ ├── font-awesome │ │ │ ├── LICENSE.txt │ │ │ ├── aliases.json │ │ │ ├── brands │ │ │ │ ├── android.svg │ │ │ │ ├── app-store-ios.svg │ │ │ │ ├── app-store.svg │ │ │ │ ├── apple.svg │ │ │ │ ├── cc-paypal.svg │ │ │ │ ├── creative-commons-by.svg │ │ │ │ ├── creative-commons-nc-eu.svg │ │ │ │ ├── creative-commons-nc-jp.svg │ │ │ │ ├── creative-commons-nc.svg │ │ │ │ ├── creative-commons-nd.svg │ │ │ │ ├── creative-commons-pd-alt.svg │ │ │ │ ├── creative-commons-pd.svg │ │ │ │ ├── creative-commons-remix.svg │ │ │ │ ├── creative-commons-sa.svg │ │ │ │ ├── creative-commons-sampling-plus.svg │ │ │ │ ├── creative-commons-sampling.svg │ │ │ │ ├── creative-commons-share.svg │ │ │ │ ├── creative-commons-zero.svg │ │ │ │ ├── creative-commons.svg │ │ │ │ ├── dropbox.svg │ │ │ │ ├── facebook-f.svg │ │ │ │ ├── facebook.svg │ │ │ │ ├── google-drive.svg │ │ │ │ ├── google-pay.svg │ │ │ │ ├── google-play.svg │ │ │ │ ├── google.svg │ │ │ │ ├── paypal.svg │ │ │ │ ├── square-facebook.svg │ │ │ │ └── windows.svg │ │ │ ├── regular │ │ │ │ ├── address-book.svg │ │ │ │ ├── address-card.svg │ │ │ │ ├── bell-slash.svg │ │ │ │ ├── bell.svg │ │ │ │ ├── bookmark.svg │ │ │ │ ├── building.svg │ │ │ │ ├── calendar-check.svg │ │ │ │ ├── calendar-days.svg │ │ │ │ ├── calendar-minus.svg │ │ │ │ ├── calendar-plus.svg │ │ │ │ ├── calendar-xmark.svg │ │ │ │ ├── calendar.svg │ │ │ │ ├── chart-bar.svg │ │ │ │ ├── chess-bishop.svg │ │ │ │ ├── chess-king.svg │ │ │ │ ├── chess-knight.svg │ │ │ │ ├── chess-pawn.svg │ │ │ │ ├── chess-queen.svg │ │ │ │ ├── chess-rook.svg │ │ │ │ ├── circle-check.svg │ │ │ │ ├── circle-dot.svg │ │ │ │ ├── circle-down.svg │ │ │ │ ├── circle-left.svg │ │ │ │ ├── circle-pause.svg │ │ │ │ ├── circle-play.svg │ │ │ │ ├── circle-question.svg │ │ │ │ ├── circle-right.svg │ │ │ │ ├── circle-stop.svg │ │ │ │ ├── circle-up.svg │ │ │ │ ├── circle-user.svg │ │ │ │ ├── circle-xmark.svg │ │ │ │ ├── circle.svg │ │ │ │ ├── clipboard.svg │ │ │ │ ├── clock.svg │ │ │ │ ├── clone.svg │ │ │ │ ├── closed-captioning.svg │ │ │ │ ├── comment-dots.svg │ │ │ │ ├── comment.svg │ │ │ │ ├── comments.svg │ │ │ │ ├── compass.svg │ │ │ │ ├── copy.svg │ │ │ │ ├── copyright.svg │ │ │ │ ├── credit-card.svg │ │ │ │ ├── envelope-open.svg │ │ │ │ ├── envelope.svg │ │ │ │ ├── eye-slash.svg │ │ │ │ ├── eye.svg │ │ │ │ ├── face-angry.svg │ │ │ │ ├── face-dizzy.svg │ │ │ │ ├── face-flushed.svg │ │ │ │ ├── face-frown-open.svg │ │ │ │ ├── face-frown.svg │ │ │ │ ├── face-grimace.svg │ │ │ │ ├── face-grin-beam-sweat.svg │ │ │ │ ├── face-grin-beam.svg │ │ │ │ ├── face-grin-hearts.svg │ │ │ │ ├── face-grin-squint-tears.svg │ │ │ │ ├── face-grin-squint.svg │ │ │ │ ├── face-grin-stars.svg │ │ │ │ ├── face-grin-tears.svg │ │ │ │ ├── face-grin-tongue-squint.svg │ │ │ │ ├── face-grin-tongue-wink.svg │ │ │ │ ├── face-grin-tongue.svg │ │ │ │ ├── face-grin-wide.svg │ │ │ │ ├── face-grin-wink.svg │ │ │ │ ├── face-grin.svg │ │ │ │ ├── face-kiss-beam.svg │ │ │ │ ├── face-kiss-wink-heart.svg │ │ │ │ ├── face-kiss.svg │ │ │ │ ├── face-laugh-beam.svg │ │ │ │ ├── face-laugh-squint.svg │ │ │ │ ├── face-laugh-wink.svg │ │ │ │ ├── face-laugh.svg │ │ │ │ ├── face-meh-blank.svg │ │ │ │ ├── face-meh.svg │ │ │ │ ├── face-rolling-eyes.svg │ │ │ │ ├── face-sad-cry.svg │ │ │ │ ├── face-sad-tear.svg │ │ │ │ ├── face-smile-beam.svg │ │ │ │ ├── face-smile-wink.svg │ │ │ │ ├── face-smile.svg │ │ │ │ ├── face-surprise.svg │ │ │ │ ├── face-tired.svg │ │ │ │ ├── file-audio.svg │ │ │ │ ├── file-code.svg │ │ │ │ ├── file-excel.svg │ │ │ │ ├── file-image.svg │ │ │ │ ├── file-lines.svg │ │ │ │ ├── file-pdf.svg │ │ │ │ ├── file-powerpoint.svg │ │ │ │ ├── file-video.svg │ │ │ │ ├── file-word.svg │ │ │ │ ├── file-zipper.svg │ │ │ │ ├── file.svg │ │ │ │ ├── flag.svg │ │ │ │ ├── floppy-disk.svg │ │ │ │ ├── folder-closed.svg │ │ │ │ ├── folder-open.svg │ │ │ │ ├── folder.svg │ │ │ │ ├── font-awesome.svg │ │ │ │ ├── futbol.svg │ │ │ │ ├── gem.svg │ │ │ │ ├── hand-back-fist.svg │ │ │ │ ├── hand-lizard.svg │ │ │ │ ├── hand-peace.svg │ │ │ │ ├── hand-point-down.svg │ │ │ │ ├── hand-point-left.svg │ │ │ │ ├── hand-point-right.svg │ │ │ │ ├── hand-point-up.svg │ │ │ │ ├── hand-pointer.svg │ │ │ │ ├── hand-scissors.svg │ │ │ │ ├── hand-spock.svg │ │ │ │ ├── hand.svg │ │ │ │ ├── handshake.svg │ │ │ │ ├── hard-drive.svg │ │ │ │ ├── heart.svg │ │ │ │ ├── hospital.svg │ │ │ │ ├── hourglass-half.svg │ │ │ │ ├── hourglass.svg │ │ │ │ ├── id-badge.svg │ │ │ │ ├── id-card.svg │ │ │ │ ├── image.svg │ │ │ │ ├── images.svg │ │ │ │ ├── keyboard.svg │ │ │ │ ├── lemon.svg │ │ │ │ ├── life-ring.svg │ │ │ │ ├── lightbulb.svg │ │ │ │ ├── map.svg │ │ │ │ ├── message.svg │ │ │ │ ├── money-bill-1.svg │ │ │ │ ├── moon.svg │ │ │ │ ├── newspaper.svg │ │ │ │ ├── note-sticky.svg │ │ │ │ ├── object-group.svg │ │ │ │ ├── object-ungroup.svg │ │ │ │ ├── paper-plane.svg │ │ │ │ ├── paste.svg │ │ │ │ ├── pen-to-square.svg │ │ │ │ ├── rectangle-list.svg │ │ │ │ ├── rectangle-xmark.svg │ │ │ │ ├── registered.svg │ │ │ │ ├── share-from-square.svg │ │ │ │ ├── snowflake.svg │ │ │ │ ├── square-caret-down.svg │ │ │ │ ├── square-caret-left.svg │ │ │ │ ├── square-caret-right.svg │ │ │ │ ├── square-caret-up.svg │ │ │ │ ├── square-check.svg │ │ │ │ ├── square-full.svg │ │ │ │ ├── square-minus.svg │ │ │ │ ├── square-plus.svg │ │ │ │ ├── square.svg │ │ │ │ ├── star-half-stroke.svg │ │ │ │ ├── star-half.svg │ │ │ │ ├── star.svg │ │ │ │ ├── sun.svg │ │ │ │ ├── thumbs-down.svg │ │ │ │ ├── thumbs-up.svg │ │ │ │ ├── trash-can.svg │ │ │ │ ├── user.svg │ │ │ │ ├── window-maximize.svg │ │ │ │ ├── window-minimize.svg │ │ │ │ └── window-restore.svg │ │ │ └── solid │ │ │ │ ├── 0.svg │ │ │ │ ├── 1.svg │ │ │ │ ├── 2.svg │ │ │ │ ├── 3.svg │ │ │ │ ├── 4.svg │ │ │ │ ├── 5.svg │ │ │ │ ├── 6.svg │ │ │ │ ├── 7.svg │ │ │ │ ├── 8.svg │ │ │ │ ├── 9.svg │ │ │ │ ├── a.svg │ │ │ │ ├── address-book.svg │ │ │ │ ├── address-card.svg │ │ │ │ ├── align-center.svg │ │ │ │ ├── align-justify.svg │ │ │ │ ├── align-left.svg │ │ │ │ ├── align-right.svg │ │ │ │ ├── anchor-circle-check.svg │ │ │ │ ├── anchor-circle-exclamation.svg │ │ │ │ ├── anchor-circle-xmark.svg │ │ │ │ ├── anchor-lock.svg │ │ │ │ ├── anchor.svg │ │ │ │ ├── angle-down.svg │ │ │ │ ├── angle-left.svg │ │ │ │ ├── angle-right.svg │ │ │ │ ├── angle-up.svg │ │ │ │ ├── angles-down.svg │ │ │ │ ├── angles-left.svg │ │ │ │ ├── angles-right.svg │ │ │ │ ├── angles-up.svg │ │ │ │ ├── ankh.svg │ │ │ │ ├── apple-whole.svg │ │ │ │ ├── archway.svg │ │ │ │ ├── arrow-down-1-9.svg │ │ │ │ ├── arrow-down-9-1.svg │ │ │ │ ├── arrow-down-a-z.svg │ │ │ │ ├── arrow-down-long.svg │ │ │ │ ├── arrow-down-short-wide.svg │ │ │ │ ├── arrow-down-up-across-line.svg │ │ │ │ ├── arrow-down-up-lock.svg │ │ │ │ ├── arrow-down-wide-short.svg │ │ │ │ ├── arrow-down-z-a.svg │ │ │ │ ├── arrow-down.svg │ │ │ │ ├── arrow-left-long.svg │ │ │ │ ├── arrow-left.svg │ │ │ │ ├── arrow-pointer.svg │ │ │ │ ├── arrow-right-arrow-left.svg │ │ │ │ ├── arrow-right-from-bracket.svg │ │ │ │ ├── arrow-right-long.svg │ │ │ │ ├── arrow-right-to-bracket.svg │ │ │ │ ├── arrow-right-to-city.svg │ │ │ │ ├── arrow-right.svg │ │ │ │ ├── arrow-rotate-left.svg │ │ │ │ ├── arrow-rotate-right.svg │ │ │ │ ├── arrow-trend-down.svg │ │ │ │ ├── arrow-trend-up.svg │ │ │ │ ├── arrow-turn-down.svg │ │ │ │ ├── arrow-turn-up.svg │ │ │ │ ├── arrow-up-1-9.svg │ │ │ │ ├── arrow-up-9-1.svg │ │ │ │ ├── arrow-up-a-z.svg │ │ │ │ ├── arrow-up-from-bracket.svg │ │ │ │ ├── arrow-up-from-ground-water.svg │ │ │ │ ├── arrow-up-from-water-pump.svg │ │ │ │ ├── arrow-up-long.svg │ │ │ │ ├── arrow-up-right-dots.svg │ │ │ │ ├── arrow-up-right-from-square.svg │ │ │ │ ├── arrow-up-short-wide.svg │ │ │ │ ├── arrow-up-wide-short.svg │ │ │ │ ├── arrow-up-z-a.svg │ │ │ │ ├── arrow-up.svg │ │ │ │ ├── arrows-down-to-line.svg │ │ │ │ ├── arrows-down-to-people.svg │ │ │ │ ├── arrows-left-right-to-line.svg │ │ │ │ ├── arrows-left-right.svg │ │ │ │ ├── arrows-rotate.svg │ │ │ │ ├── arrows-spin.svg │ │ │ │ ├── arrows-split-up-and-left.svg │ │ │ │ ├── arrows-to-circle.svg │ │ │ │ ├── arrows-to-dot.svg │ │ │ │ ├── arrows-to-eye.svg │ │ │ │ ├── arrows-turn-right.svg │ │ │ │ ├── arrows-turn-to-dots.svg │ │ │ │ ├── arrows-up-down-left-right.svg │ │ │ │ ├── arrows-up-down.svg │ │ │ │ ├── arrows-up-to-line.svg │ │ │ │ ├── asterisk.svg │ │ │ │ ├── at.svg │ │ │ │ ├── atom.svg │ │ │ │ ├── audio-description.svg │ │ │ │ ├── austral-sign.svg │ │ │ │ ├── award.svg │ │ │ │ ├── b.svg │ │ │ │ ├── baby-carriage.svg │ │ │ │ ├── baby.svg │ │ │ │ ├── backward-fast.svg │ │ │ │ ├── backward-step.svg │ │ │ │ ├── backward.svg │ │ │ │ ├── bacon.svg │ │ │ │ ├── bacteria.svg │ │ │ │ ├── bacterium.svg │ │ │ │ ├── bag-shopping.svg │ │ │ │ ├── bahai.svg │ │ │ │ ├── baht-sign.svg │ │ │ │ ├── ban-smoking.svg │ │ │ │ ├── ban.svg │ │ │ │ ├── bandage.svg │ │ │ │ ├── bangladeshi-taka-sign.svg │ │ │ │ ├── barcode.svg │ │ │ │ ├── bars-progress.svg │ │ │ │ ├── bars-staggered.svg │ │ │ │ ├── bars.svg │ │ │ │ ├── baseball-bat-ball.svg │ │ │ │ ├── baseball.svg │ │ │ │ ├── basket-shopping.svg │ │ │ │ ├── basketball.svg │ │ │ │ ├── bath.svg │ │ │ │ ├── battery-empty.svg │ │ │ │ ├── battery-full.svg │ │ │ │ ├── battery-half.svg │ │ │ │ ├── battery-quarter.svg │ │ │ │ ├── battery-three-quarters.svg │ │ │ │ ├── bed-pulse.svg │ │ │ │ ├── bed.svg │ │ │ │ ├── beer-mug-empty.svg │ │ │ │ ├── bell-concierge.svg │ │ │ │ ├── bell-slash.svg │ │ │ │ ├── bell.svg │ │ │ │ ├── bezier-curve.svg │ │ │ │ ├── bicycle.svg │ │ │ │ ├── binoculars.svg │ │ │ │ ├── biohazard.svg │ │ │ │ ├── bitcoin-sign.svg │ │ │ │ ├── blender-phone.svg │ │ │ │ ├── blender.svg │ │ │ │ ├── blog.svg │ │ │ │ ├── bold.svg │ │ │ │ ├── bolt-lightning.svg │ │ │ │ ├── bolt.svg │ │ │ │ ├── bomb.svg │ │ │ │ ├── bone.svg │ │ │ │ ├── bong.svg │ │ │ │ ├── book-atlas.svg │ │ │ │ ├── book-bible.svg │ │ │ │ ├── book-bookmark.svg │ │ │ │ ├── book-journal-whills.svg │ │ │ │ ├── book-medical.svg │ │ │ │ ├── book-open-reader.svg │ │ │ │ ├── book-open.svg │ │ │ │ ├── book-quran.svg │ │ │ │ ├── book-skull.svg │ │ │ │ ├── book-tanakh.svg │ │ │ │ ├── book.svg │ │ │ │ ├── bookmark.svg │ │ │ │ ├── border-all.svg │ │ │ │ ├── border-none.svg │ │ │ │ ├── border-top-left.svg │ │ │ │ ├── bore-hole.svg │ │ │ │ ├── bottle-droplet.svg │ │ │ │ ├── bottle-water.svg │ │ │ │ ├── bowl-food.svg │ │ │ │ ├── bowl-rice.svg │ │ │ │ ├── bowling-ball.svg │ │ │ │ ├── box-archive.svg │ │ │ │ ├── box-open.svg │ │ │ │ ├── box-tissue.svg │ │ │ │ ├── box.svg │ │ │ │ ├── boxes-packing.svg │ │ │ │ ├── boxes-stacked.svg │ │ │ │ ├── braille.svg │ │ │ │ ├── brain.svg │ │ │ │ ├── brazilian-real-sign.svg │ │ │ │ ├── bread-slice.svg │ │ │ │ ├── bridge-circle-check.svg │ │ │ │ ├── bridge-circle-exclamation.svg │ │ │ │ ├── bridge-circle-xmark.svg │ │ │ │ ├── bridge-lock.svg │ │ │ │ ├── bridge-water.svg │ │ │ │ ├── bridge.svg │ │ │ │ ├── briefcase-medical.svg │ │ │ │ ├── briefcase.svg │ │ │ │ ├── broom-ball.svg │ │ │ │ ├── broom.svg │ │ │ │ ├── brush.svg │ │ │ │ ├── bucket.svg │ │ │ │ ├── bug-slash.svg │ │ │ │ ├── bug.svg │ │ │ │ ├── bugs.svg │ │ │ │ ├── building-circle-arrow-right.svg │ │ │ │ ├── building-circle-check.svg │ │ │ │ ├── building-circle-exclamation.svg │ │ │ │ ├── building-circle-xmark.svg │ │ │ │ ├── building-columns.svg │ │ │ │ ├── building-flag.svg │ │ │ │ ├── building-lock.svg │ │ │ │ ├── building-ngo.svg │ │ │ │ ├── building-shield.svg │ │ │ │ ├── building-un.svg │ │ │ │ ├── building-user.svg │ │ │ │ ├── building-wheat.svg │ │ │ │ ├── building.svg │ │ │ │ ├── bullhorn.svg │ │ │ │ ├── bullseye.svg │ │ │ │ ├── burger.svg │ │ │ │ ├── burst.svg │ │ │ │ ├── bus-simple.svg │ │ │ │ ├── bus.svg │ │ │ │ ├── business-time.svg │ │ │ │ ├── c.svg │ │ │ │ ├── cable-car.svg │ │ │ │ ├── cake-candles.svg │ │ │ │ ├── calculator.svg │ │ │ │ ├── calendar-check.svg │ │ │ │ ├── calendar-day.svg │ │ │ │ ├── calendar-days.svg │ │ │ │ ├── calendar-minus.svg │ │ │ │ ├── calendar-plus.svg │ │ │ │ ├── calendar-week.svg │ │ │ │ ├── calendar-xmark.svg │ │ │ │ ├── calendar.svg │ │ │ │ ├── camera-retro.svg │ │ │ │ ├── camera-rotate.svg │ │ │ │ ├── camera.svg │ │ │ │ ├── campground.svg │ │ │ │ ├── candy-cane.svg │ │ │ │ ├── cannabis.svg │ │ │ │ ├── capsules.svg │ │ │ │ ├── car-battery.svg │ │ │ │ ├── car-burst.svg │ │ │ │ ├── car-on.svg │ │ │ │ ├── car-rear.svg │ │ │ │ ├── car-side.svg │ │ │ │ ├── car-tunnel.svg │ │ │ │ ├── car.svg │ │ │ │ ├── caravan.svg │ │ │ │ ├── caret-down.svg │ │ │ │ ├── caret-left.svg │ │ │ │ ├── caret-right.svg │ │ │ │ ├── caret-up.svg │ │ │ │ ├── carrot.svg │ │ │ │ ├── cart-arrow-down.svg │ │ │ │ ├── cart-flatbed-suitcase.svg │ │ │ │ ├── cart-flatbed.svg │ │ │ │ ├── cart-plus.svg │ │ │ │ ├── cart-shopping.svg │ │ │ │ ├── cash-register.svg │ │ │ │ ├── cat.svg │ │ │ │ ├── cedi-sign.svg │ │ │ │ ├── cent-sign.svg │ │ │ │ ├── certificate.svg │ │ │ │ ├── chair.svg │ │ │ │ ├── chalkboard-user.svg │ │ │ │ ├── chalkboard.svg │ │ │ │ ├── champagne-glasses.svg │ │ │ │ ├── charging-station.svg │ │ │ │ ├── chart-area.svg │ │ │ │ ├── chart-bar.svg │ │ │ │ ├── chart-column.svg │ │ │ │ ├── chart-gantt.svg │ │ │ │ ├── chart-line.svg │ │ │ │ ├── chart-pie.svg │ │ │ │ ├── chart-simple.svg │ │ │ │ ├── check-double.svg │ │ │ │ ├── check-to-slot.svg │ │ │ │ ├── check.svg │ │ │ │ ├── cheese.svg │ │ │ │ ├── chess-bishop.svg │ │ │ │ ├── chess-board.svg │ │ │ │ ├── chess-king.svg │ │ │ │ ├── chess-knight.svg │ │ │ │ ├── chess-pawn.svg │ │ │ │ ├── chess-queen.svg │ │ │ │ ├── chess-rook.svg │ │ │ │ ├── chess.svg │ │ │ │ ├── chevron-down.svg │ │ │ │ ├── chevron-left.svg │ │ │ │ ├── chevron-right.svg │ │ │ │ ├── chevron-up.svg │ │ │ │ ├── child-combatant.svg │ │ │ │ ├── child-dress.svg │ │ │ │ ├── child-reaching.svg │ │ │ │ ├── child.svg │ │ │ │ ├── children.svg │ │ │ │ ├── church.svg │ │ │ │ ├── circle-arrow-down.svg │ │ │ │ ├── circle-arrow-left.svg │ │ │ │ ├── circle-arrow-right.svg │ │ │ │ ├── circle-arrow-up.svg │ │ │ │ ├── circle-check.svg │ │ │ │ ├── circle-chevron-down.svg │ │ │ │ ├── circle-chevron-left.svg │ │ │ │ ├── circle-chevron-right.svg │ │ │ │ ├── circle-chevron-up.svg │ │ │ │ ├── circle-dollar-to-slot.svg │ │ │ │ ├── circle-dot.svg │ │ │ │ ├── circle-down.svg │ │ │ │ ├── circle-exclamation.svg │ │ │ │ ├── circle-h.svg │ │ │ │ ├── circle-half-stroke.svg │ │ │ │ ├── circle-info.svg │ │ │ │ ├── circle-left.svg │ │ │ │ ├── circle-minus.svg │ │ │ │ ├── circle-nodes.svg │ │ │ │ ├── circle-notch.svg │ │ │ │ ├── circle-pause.svg │ │ │ │ ├── circle-play.svg │ │ │ │ ├── circle-plus.svg │ │ │ │ ├── circle-question.svg │ │ │ │ ├── circle-radiation.svg │ │ │ │ ├── circle-right.svg │ │ │ │ ├── circle-stop.svg │ │ │ │ ├── circle-up.svg │ │ │ │ ├── circle-user.svg │ │ │ │ ├── circle-xmark.svg │ │ │ │ ├── circle.svg │ │ │ │ ├── city.svg │ │ │ │ ├── clapperboard.svg │ │ │ │ ├── clipboard-check.svg │ │ │ │ ├── clipboard-list.svg │ │ │ │ ├── clipboard-question.svg │ │ │ │ ├── clipboard-user.svg │ │ │ │ ├── clipboard.svg │ │ │ │ ├── clock-rotate-left.svg │ │ │ │ ├── clock.svg │ │ │ │ ├── clone.svg │ │ │ │ ├── closed-captioning.svg │ │ │ │ ├── cloud-arrow-down.svg │ │ │ │ ├── cloud-arrow-up.svg │ │ │ │ ├── cloud-bolt.svg │ │ │ │ ├── cloud-meatball.svg │ │ │ │ ├── cloud-moon-rain.svg │ │ │ │ ├── cloud-moon.svg │ │ │ │ ├── cloud-rain.svg │ │ │ │ ├── cloud-showers-heavy.svg │ │ │ │ ├── cloud-showers-water.svg │ │ │ │ ├── cloud-sun-rain.svg │ │ │ │ ├── cloud-sun.svg │ │ │ │ ├── cloud.svg │ │ │ │ ├── clover.svg │ │ │ │ ├── code-branch.svg │ │ │ │ ├── code-commit.svg │ │ │ │ ├── code-compare.svg │ │ │ │ ├── code-fork.svg │ │ │ │ ├── code-merge.svg │ │ │ │ ├── code-pull-request.svg │ │ │ │ ├── code.svg │ │ │ │ ├── coins.svg │ │ │ │ ├── colon-sign.svg │ │ │ │ ├── comment-dollar.svg │ │ │ │ ├── comment-dots.svg │ │ │ │ ├── comment-medical.svg │ │ │ │ ├── comment-slash.svg │ │ │ │ ├── comment-sms.svg │ │ │ │ ├── comment.svg │ │ │ │ ├── comments-dollar.svg │ │ │ │ ├── comments.svg │ │ │ │ ├── compact-disc.svg │ │ │ │ ├── compass-drafting.svg │ │ │ │ ├── compass.svg │ │ │ │ ├── compress.svg │ │ │ │ ├── computer-mouse.svg │ │ │ │ ├── computer.svg │ │ │ │ ├── cookie-bite.svg │ │ │ │ ├── cookie.svg │ │ │ │ ├── copy.svg │ │ │ │ ├── copyright.svg │ │ │ │ ├── couch.svg │ │ │ │ ├── cow.svg │ │ │ │ ├── credit-card.svg │ │ │ │ ├── crop-simple.svg │ │ │ │ ├── crop.svg │ │ │ │ ├── cross.svg │ │ │ │ ├── crosshairs.svg │ │ │ │ ├── crow.svg │ │ │ │ ├── crown.svg │ │ │ │ ├── crutch.svg │ │ │ │ ├── cruzeiro-sign.svg │ │ │ │ ├── cube.svg │ │ │ │ ├── cubes-stacked.svg │ │ │ │ ├── cubes.svg │ │ │ │ ├── d.svg │ │ │ │ ├── database.svg │ │ │ │ ├── delete-left.svg │ │ │ │ ├── democrat.svg │ │ │ │ ├── desktop.svg │ │ │ │ ├── dharmachakra.svg │ │ │ │ ├── diagram-next.svg │ │ │ │ ├── diagram-predecessor.svg │ │ │ │ ├── diagram-project.svg │ │ │ │ ├── diagram-successor.svg │ │ │ │ ├── diamond-turn-right.svg │ │ │ │ ├── diamond.svg │ │ │ │ ├── dice-d20.svg │ │ │ │ ├── dice-d6.svg │ │ │ │ ├── dice-five.svg │ │ │ │ ├── dice-four.svg │ │ │ │ ├── dice-one.svg │ │ │ │ ├── dice-six.svg │ │ │ │ ├── dice-three.svg │ │ │ │ ├── dice-two.svg │ │ │ │ ├── dice.svg │ │ │ │ ├── disease.svg │ │ │ │ ├── display.svg │ │ │ │ ├── divide.svg │ │ │ │ ├── dna.svg │ │ │ │ ├── dog.svg │ │ │ │ ├── dollar-sign.svg │ │ │ │ ├── dolly.svg │ │ │ │ ├── dong-sign.svg │ │ │ │ ├── door-closed.svg │ │ │ │ ├── door-open.svg │ │ │ │ ├── dove.svg │ │ │ │ ├── down-left-and-up-right-to-center.svg │ │ │ │ ├── down-long.svg │ │ │ │ ├── download.svg │ │ │ │ ├── dragon.svg │ │ │ │ ├── draw-polygon.svg │ │ │ │ ├── droplet-slash.svg │ │ │ │ ├── droplet.svg │ │ │ │ ├── drum-steelpan.svg │ │ │ │ ├── drum.svg │ │ │ │ ├── drumstick-bite.svg │ │ │ │ ├── dumbbell.svg │ │ │ │ ├── dumpster-fire.svg │ │ │ │ ├── dumpster.svg │ │ │ │ ├── dungeon.svg │ │ │ │ ├── e.svg │ │ │ │ ├── ear-deaf.svg │ │ │ │ ├── ear-listen.svg │ │ │ │ ├── earth-africa.svg │ │ │ │ ├── earth-americas.svg │ │ │ │ ├── earth-asia.svg │ │ │ │ ├── earth-europe.svg │ │ │ │ ├── earth-oceania.svg │ │ │ │ ├── egg.svg │ │ │ │ ├── eject.svg │ │ │ │ ├── elevator.svg │ │ │ │ ├── ellipsis-vertical.svg │ │ │ │ ├── ellipsis.svg │ │ │ │ ├── envelope-circle-check.svg │ │ │ │ ├── envelope-open-text.svg │ │ │ │ ├── envelope-open.svg │ │ │ │ ├── envelope.svg │ │ │ │ ├── envelopes-bulk.svg │ │ │ │ ├── equals.svg │ │ │ │ ├── eraser.svg │ │ │ │ ├── ethernet.svg │ │ │ │ ├── euro-sign.svg │ │ │ │ ├── exclamation.svg │ │ │ │ ├── expand.svg │ │ │ │ ├── explosion.svg │ │ │ │ ├── eye-dropper.svg │ │ │ │ ├── eye-low-vision.svg │ │ │ │ ├── eye-slash.svg │ │ │ │ ├── eye.svg │ │ │ │ ├── f.svg │ │ │ │ ├── face-angry.svg │ │ │ │ ├── face-dizzy.svg │ │ │ │ ├── face-flushed.svg │ │ │ │ ├── face-frown-open.svg │ │ │ │ ├── face-frown.svg │ │ │ │ ├── face-grimace.svg │ │ │ │ ├── face-grin-beam-sweat.svg │ │ │ │ ├── face-grin-beam.svg │ │ │ │ ├── face-grin-hearts.svg │ │ │ │ ├── face-grin-squint-tears.svg │ │ │ │ ├── face-grin-squint.svg │ │ │ │ ├── face-grin-stars.svg │ │ │ │ ├── face-grin-tears.svg │ │ │ │ ├── face-grin-tongue-squint.svg │ │ │ │ ├── face-grin-tongue-wink.svg │ │ │ │ ├── face-grin-tongue.svg │ │ │ │ ├── face-grin-wide.svg │ │ │ │ ├── face-grin-wink.svg │ │ │ │ ├── face-grin.svg │ │ │ │ ├── face-kiss-beam.svg │ │ │ │ ├── face-kiss-wink-heart.svg │ │ │ │ ├── face-kiss.svg │ │ │ │ ├── face-laugh-beam.svg │ │ │ │ ├── face-laugh-squint.svg │ │ │ │ ├── face-laugh-wink.svg │ │ │ │ ├── face-laugh.svg │ │ │ │ ├── face-meh-blank.svg │ │ │ │ ├── face-meh.svg │ │ │ │ ├── face-rolling-eyes.svg │ │ │ │ ├── face-sad-cry.svg │ │ │ │ ├── face-sad-tear.svg │ │ │ │ ├── face-smile-beam.svg │ │ │ │ ├── face-smile-wink.svg │ │ │ │ ├── face-smile.svg │ │ │ │ ├── face-surprise.svg │ │ │ │ ├── face-tired.svg │ │ │ │ ├── fan.svg │ │ │ │ ├── faucet-drip.svg │ │ │ │ ├── faucet.svg │ │ │ │ ├── fax.svg │ │ │ │ ├── feather-pointed.svg │ │ │ │ ├── feather.svg │ │ │ │ ├── ferry.svg │ │ │ │ ├── file-arrow-down.svg │ │ │ │ ├── file-arrow-up.svg │ │ │ │ ├── file-audio.svg │ │ │ │ ├── file-circle-check.svg │ │ │ │ ├── file-circle-exclamation.svg │ │ │ │ ├── file-circle-minus.svg │ │ │ │ ├── file-circle-plus.svg │ │ │ │ ├── file-circle-question.svg │ │ │ │ ├── file-circle-xmark.svg │ │ │ │ ├── file-code.svg │ │ │ │ ├── file-contract.svg │ │ │ │ ├── file-csv.svg │ │ │ │ ├── file-excel.svg │ │ │ │ ├── file-export.svg │ │ │ │ ├── file-image.svg │ │ │ │ ├── file-import.svg │ │ │ │ ├── file-invoice-dollar.svg │ │ │ │ ├── file-invoice.svg │ │ │ │ ├── file-lines.svg │ │ │ │ ├── file-medical.svg │ │ │ │ ├── file-pdf.svg │ │ │ │ ├── file-pen.svg │ │ │ │ ├── file-powerpoint.svg │ │ │ │ ├── file-prescription.svg │ │ │ │ ├── file-shield.svg │ │ │ │ ├── file-signature.svg │ │ │ │ ├── file-video.svg │ │ │ │ ├── file-waveform.svg │ │ │ │ ├── file-word.svg │ │ │ │ ├── file-zipper.svg │ │ │ │ ├── file.svg │ │ │ │ ├── fill-drip.svg │ │ │ │ ├── fill.svg │ │ │ │ ├── film.svg │ │ │ │ ├── filter-circle-dollar.svg │ │ │ │ ├── filter-circle-xmark.svg │ │ │ │ ├── filter.svg │ │ │ │ ├── fingerprint.svg │ │ │ │ ├── fire-burner.svg │ │ │ │ ├── fire-extinguisher.svg │ │ │ │ ├── fire-flame-curved.svg │ │ │ │ ├── fire-flame-simple.svg │ │ │ │ ├── fire.svg │ │ │ │ ├── fish-fins.svg │ │ │ │ ├── fish.svg │ │ │ │ ├── flag-checkered.svg │ │ │ │ ├── flag-usa.svg │ │ │ │ ├── flag.svg │ │ │ │ ├── flask-vial.svg │ │ │ │ ├── flask.svg │ │ │ │ ├── floppy-disk.svg │ │ │ │ ├── florin-sign.svg │ │ │ │ ├── folder-closed.svg │ │ │ │ ├── folder-minus.svg │ │ │ │ ├── folder-open.svg │ │ │ │ ├── folder-plus.svg │ │ │ │ ├── folder-tree.svg │ │ │ │ ├── folder.svg │ │ │ │ ├── font-awesome.svg │ │ │ │ ├── font.svg │ │ │ │ ├── football.svg │ │ │ │ ├── forward-fast.svg │ │ │ │ ├── forward-step.svg │ │ │ │ ├── forward.svg │ │ │ │ ├── franc-sign.svg │ │ │ │ ├── frog.svg │ │ │ │ ├── futbol.svg │ │ │ │ ├── g.svg │ │ │ │ ├── gamepad.svg │ │ │ │ ├── gas-pump.svg │ │ │ │ ├── gauge-high.svg │ │ │ │ ├── gauge-simple-high.svg │ │ │ │ ├── gauge-simple.svg │ │ │ │ ├── gauge.svg │ │ │ │ ├── gavel.svg │ │ │ │ ├── gear.svg │ │ │ │ ├── gears.svg │ │ │ │ ├── gem.svg │ │ │ │ ├── genderless.svg │ │ │ │ ├── ghost.svg │ │ │ │ ├── gift.svg │ │ │ │ ├── gifts.svg │ │ │ │ ├── glass-water-droplet.svg │ │ │ │ ├── glass-water.svg │ │ │ │ ├── glasses.svg │ │ │ │ ├── globe.svg │ │ │ │ ├── golf-ball-tee.svg │ │ │ │ ├── gopuram.svg │ │ │ │ ├── graduation-cap.svg │ │ │ │ ├── greater-than-equal.svg │ │ │ │ ├── greater-than.svg │ │ │ │ ├── grip-lines-vertical.svg │ │ │ │ ├── grip-lines.svg │ │ │ │ ├── grip-vertical.svg │ │ │ │ ├── grip.svg │ │ │ │ ├── group-arrows-rotate.svg │ │ │ │ ├── guarani-sign.svg │ │ │ │ ├── guitar.svg │ │ │ │ ├── gun.svg │ │ │ │ ├── h.svg │ │ │ │ ├── hammer.svg │ │ │ │ ├── hamsa.svg │ │ │ │ ├── hand-back-fist.svg │ │ │ │ ├── hand-dots.svg │ │ │ │ ├── hand-fist.svg │ │ │ │ ├── hand-holding-dollar.svg │ │ │ │ ├── hand-holding-droplet.svg │ │ │ │ ├── hand-holding-hand.svg │ │ │ │ ├── hand-holding-heart.svg │ │ │ │ ├── hand-holding-medical.svg │ │ │ │ ├── hand-holding.svg │ │ │ │ ├── hand-lizard.svg │ │ │ │ ├── hand-middle-finger.svg │ │ │ │ ├── hand-peace.svg │ │ │ │ ├── hand-point-down.svg │ │ │ │ ├── hand-point-left.svg │ │ │ │ ├── hand-point-right.svg │ │ │ │ ├── hand-point-up.svg │ │ │ │ ├── hand-pointer.svg │ │ │ │ ├── hand-scissors.svg │ │ │ │ ├── hand-sparkles.svg │ │ │ │ ├── hand-spock.svg │ │ │ │ ├── hand.svg │ │ │ │ ├── handcuffs.svg │ │ │ │ ├── hands-asl-interpreting.svg │ │ │ │ ├── hands-bound.svg │ │ │ │ ├── hands-bubbles.svg │ │ │ │ ├── hands-clapping.svg │ │ │ │ ├── hands-holding-child.svg │ │ │ │ ├── hands-holding-circle.svg │ │ │ │ ├── hands-holding.svg │ │ │ │ ├── hands-praying.svg │ │ │ │ ├── hands.svg │ │ │ │ ├── handshake-angle.svg │ │ │ │ ├── handshake-simple-slash.svg │ │ │ │ ├── handshake-simple.svg │ │ │ │ ├── handshake-slash.svg │ │ │ │ ├── handshake.svg │ │ │ │ ├── hanukiah.svg │ │ │ │ ├── hard-drive.svg │ │ │ │ ├── hashtag.svg │ │ │ │ ├── hat-cowboy-side.svg │ │ │ │ ├── hat-cowboy.svg │ │ │ │ ├── hat-wizard.svg │ │ │ │ ├── head-side-cough-slash.svg │ │ │ │ ├── head-side-cough.svg │ │ │ │ ├── head-side-mask.svg │ │ │ │ ├── head-side-virus.svg │ │ │ │ ├── heading.svg │ │ │ │ ├── headphones-simple.svg │ │ │ │ ├── headphones.svg │ │ │ │ ├── headset.svg │ │ │ │ ├── heart-circle-bolt.svg │ │ │ │ ├── heart-circle-check.svg │ │ │ │ ├── heart-circle-exclamation.svg │ │ │ │ ├── heart-circle-minus.svg │ │ │ │ ├── heart-circle-plus.svg │ │ │ │ ├── heart-circle-xmark.svg │ │ │ │ ├── heart-crack.svg │ │ │ │ ├── heart-pulse.svg │ │ │ │ ├── heart.svg │ │ │ │ ├── helicopter-symbol.svg │ │ │ │ ├── helicopter.svg │ │ │ │ ├── helmet-safety.svg │ │ │ │ ├── helmet-un.svg │ │ │ │ ├── highlighter.svg │ │ │ │ ├── hill-avalanche.svg │ │ │ │ ├── hill-rockslide.svg │ │ │ │ ├── hippo.svg │ │ │ │ ├── hockey-puck.svg │ │ │ │ ├── holly-berry.svg │ │ │ │ ├── horse-head.svg │ │ │ │ ├── horse.svg │ │ │ │ ├── hospital-user.svg │ │ │ │ ├── hospital.svg │ │ │ │ ├── hot-tub-person.svg │ │ │ │ ├── hotdog.svg │ │ │ │ ├── hotel.svg │ │ │ │ ├── hourglass-end.svg │ │ │ │ ├── hourglass-half.svg │ │ │ │ ├── hourglass-start.svg │ │ │ │ ├── hourglass.svg │ │ │ │ ├── house-chimney-crack.svg │ │ │ │ ├── house-chimney-medical.svg │ │ │ │ ├── house-chimney-user.svg │ │ │ │ ├── house-chimney-window.svg │ │ │ │ ├── house-chimney.svg │ │ │ │ ├── house-circle-check.svg │ │ │ │ ├── house-circle-exclamation.svg │ │ │ │ ├── house-circle-xmark.svg │ │ │ │ ├── house-crack.svg │ │ │ │ ├── house-fire.svg │ │ │ │ ├── house-flag.svg │ │ │ │ ├── house-flood-water-circle-arrow-right.svg │ │ │ │ ├── house-flood-water.svg │ │ │ │ ├── house-laptop.svg │ │ │ │ ├── house-lock.svg │ │ │ │ ├── house-medical-circle-check.svg │ │ │ │ ├── house-medical-circle-exclamation.svg │ │ │ │ ├── house-medical-circle-xmark.svg │ │ │ │ ├── house-medical-flag.svg │ │ │ │ ├── house-medical.svg │ │ │ │ ├── house-signal.svg │ │ │ │ ├── house-tsunami.svg │ │ │ │ ├── house-user.svg │ │ │ │ ├── house.svg │ │ │ │ ├── hryvnia-sign.svg │ │ │ │ ├── hurricane.svg │ │ │ │ ├── i-cursor.svg │ │ │ │ ├── i.svg │ │ │ │ ├── ice-cream.svg │ │ │ │ ├── icicles.svg │ │ │ │ ├── icons.svg │ │ │ │ ├── id-badge.svg │ │ │ │ ├── id-card-clip.svg │ │ │ │ ├── id-card.svg │ │ │ │ ├── igloo.svg │ │ │ │ ├── image-portrait.svg │ │ │ │ ├── image.svg │ │ │ │ ├── images.svg │ │ │ │ ├── inbox.svg │ │ │ │ ├── indent.svg │ │ │ │ ├── indian-rupee-sign.svg │ │ │ │ ├── industry.svg │ │ │ │ ├── infinity.svg │ │ │ │ ├── info.svg │ │ │ │ ├── italic.svg │ │ │ │ ├── j.svg │ │ │ │ ├── jar-wheat.svg │ │ │ │ ├── jar.svg │ │ │ │ ├── jedi.svg │ │ │ │ ├── jet-fighter-up.svg │ │ │ │ ├── jet-fighter.svg │ │ │ │ ├── joint.svg │ │ │ │ ├── jug-detergent.svg │ │ │ │ ├── k.svg │ │ │ │ ├── kaaba.svg │ │ │ │ ├── key.svg │ │ │ │ ├── keyboard.svg │ │ │ │ ├── khanda.svg │ │ │ │ ├── kip-sign.svg │ │ │ │ ├── kit-medical.svg │ │ │ │ ├── kitchen-set.svg │ │ │ │ ├── kiwi-bird.svg │ │ │ │ ├── l.svg │ │ │ │ ├── land-mine-on.svg │ │ │ │ ├── landmark-dome.svg │ │ │ │ ├── landmark-flag.svg │ │ │ │ ├── landmark.svg │ │ │ │ ├── language.svg │ │ │ │ ├── laptop-code.svg │ │ │ │ ├── laptop-file.svg │ │ │ │ ├── laptop-medical.svg │ │ │ │ ├── laptop.svg │ │ │ │ ├── lari-sign.svg │ │ │ │ ├── layer-group.svg │ │ │ │ ├── leaf.svg │ │ │ │ ├── left-long.svg │ │ │ │ ├── left-right.svg │ │ │ │ ├── lemon.svg │ │ │ │ ├── less-than-equal.svg │ │ │ │ ├── less-than.svg │ │ │ │ ├── life-ring.svg │ │ │ │ ├── lightbulb.svg │ │ │ │ ├── lines-leaning.svg │ │ │ │ ├── link-slash.svg │ │ │ │ ├── link.svg │ │ │ │ ├── lira-sign.svg │ │ │ │ ├── list-check.svg │ │ │ │ ├── list-ol.svg │ │ │ │ ├── list-ul.svg │ │ │ │ ├── list.svg │ │ │ │ ├── litecoin-sign.svg │ │ │ │ ├── location-arrow.svg │ │ │ │ ├── location-crosshairs.svg │ │ │ │ ├── location-dot.svg │ │ │ │ ├── location-pin-lock.svg │ │ │ │ ├── location-pin.svg │ │ │ │ ├── lock-open.svg │ │ │ │ ├── lock.svg │ │ │ │ ├── locust.svg │ │ │ │ ├── lungs-virus.svg │ │ │ │ ├── lungs.svg │ │ │ │ ├── m.svg │ │ │ │ ├── magnet.svg │ │ │ │ ├── magnifying-glass-arrow-right.svg │ │ │ │ ├── magnifying-glass-chart.svg │ │ │ │ ├── magnifying-glass-dollar.svg │ │ │ │ ├── magnifying-glass-location.svg │ │ │ │ ├── magnifying-glass-minus.svg │ │ │ │ ├── magnifying-glass-plus.svg │ │ │ │ ├── magnifying-glass.svg │ │ │ │ ├── manat-sign.svg │ │ │ │ ├── map-location-dot.svg │ │ │ │ ├── map-location.svg │ │ │ │ ├── map-pin.svg │ │ │ │ ├── map.svg │ │ │ │ ├── marker.svg │ │ │ │ ├── mars-and-venus-burst.svg │ │ │ │ ├── mars-and-venus.svg │ │ │ │ ├── mars-double.svg │ │ │ │ ├── mars-stroke-right.svg │ │ │ │ ├── mars-stroke-up.svg │ │ │ │ ├── mars-stroke.svg │ │ │ │ ├── mars.svg │ │ │ │ ├── martini-glass-citrus.svg │ │ │ │ ├── martini-glass-empty.svg │ │ │ │ ├── martini-glass.svg │ │ │ │ ├── mask-face.svg │ │ │ │ ├── mask-ventilator.svg │ │ │ │ ├── mask.svg │ │ │ │ ├── masks-theater.svg │ │ │ │ ├── mattress-pillow.svg │ │ │ │ ├── maximize.svg │ │ │ │ ├── medal.svg │ │ │ │ ├── memory.svg │ │ │ │ ├── menorah.svg │ │ │ │ ├── mercury.svg │ │ │ │ ├── message.svg │ │ │ │ ├── meteor.svg │ │ │ │ ├── microchip.svg │ │ │ │ ├── microphone-lines-slash.svg │ │ │ │ ├── microphone-lines.svg │ │ │ │ ├── microphone-slash.svg │ │ │ │ ├── microphone.svg │ │ │ │ ├── microscope.svg │ │ │ │ ├── mill-sign.svg │ │ │ │ ├── minimize.svg │ │ │ │ ├── minus.svg │ │ │ │ ├── mitten.svg │ │ │ │ ├── mobile-button.svg │ │ │ │ ├── mobile-retro.svg │ │ │ │ ├── mobile-screen-button.svg │ │ │ │ ├── mobile-screen.svg │ │ │ │ ├── mobile.svg │ │ │ │ ├── money-bill-1-wave.svg │ │ │ │ ├── money-bill-1.svg │ │ │ │ ├── money-bill-transfer.svg │ │ │ │ ├── money-bill-trend-up.svg │ │ │ │ ├── money-bill-wave.svg │ │ │ │ ├── money-bill-wheat.svg │ │ │ │ ├── money-bill.svg │ │ │ │ ├── money-bills.svg │ │ │ │ ├── money-check-dollar.svg │ │ │ │ ├── money-check.svg │ │ │ │ ├── monument.svg │ │ │ │ ├── moon.svg │ │ │ │ ├── mortar-pestle.svg │ │ │ │ ├── mosque.svg │ │ │ │ ├── mosquito-net.svg │ │ │ │ ├── mosquito.svg │ │ │ │ ├── motorcycle.svg │ │ │ │ ├── mound.svg │ │ │ │ ├── mountain-city.svg │ │ │ │ ├── mountain-sun.svg │ │ │ │ ├── mountain.svg │ │ │ │ ├── mug-hot.svg │ │ │ │ ├── mug-saucer.svg │ │ │ │ ├── music.svg │ │ │ │ ├── n.svg │ │ │ │ ├── naira-sign.svg │ │ │ │ ├── network-wired.svg │ │ │ │ ├── neuter.svg │ │ │ │ ├── newspaper.svg │ │ │ │ ├── not-equal.svg │ │ │ │ ├── notdef.svg │ │ │ │ ├── note-sticky.svg │ │ │ │ ├── notes-medical.svg │ │ │ │ ├── o.svg │ │ │ │ ├── object-group.svg │ │ │ │ ├── object-ungroup.svg │ │ │ │ ├── oil-can.svg │ │ │ │ ├── oil-well.svg │ │ │ │ ├── om.svg │ │ │ │ ├── otter.svg │ │ │ │ ├── outdent.svg │ │ │ │ ├── p.svg │ │ │ │ ├── pager.svg │ │ │ │ ├── paint-roller.svg │ │ │ │ ├── paintbrush.svg │ │ │ │ ├── palette.svg │ │ │ │ ├── pallet.svg │ │ │ │ ├── panorama.svg │ │ │ │ ├── paper-plane.svg │ │ │ │ ├── paperclip.svg │ │ │ │ ├── parachute-box.svg │ │ │ │ ├── paragraph.svg │ │ │ │ ├── passport.svg │ │ │ │ ├── paste.svg │ │ │ │ ├── pause.svg │ │ │ │ ├── paw.svg │ │ │ │ ├── peace.svg │ │ │ │ ├── pen-clip.svg │ │ │ │ ├── pen-fancy.svg │ │ │ │ ├── pen-nib.svg │ │ │ │ ├── pen-ruler.svg │ │ │ │ ├── pen-to-square.svg │ │ │ │ ├── pen.svg │ │ │ │ ├── pencil.svg │ │ │ │ ├── people-arrows.svg │ │ │ │ ├── people-carry-box.svg │ │ │ │ ├── people-group.svg │ │ │ │ ├── people-line.svg │ │ │ │ ├── people-pulling.svg │ │ │ │ ├── people-robbery.svg │ │ │ │ ├── people-roof.svg │ │ │ │ ├── pepper-hot.svg │ │ │ │ ├── percent.svg │ │ │ │ ├── person-arrow-down-to-line.svg │ │ │ │ ├── person-arrow-up-from-line.svg │ │ │ │ ├── person-biking.svg │ │ │ │ ├── person-booth.svg │ │ │ │ ├── person-breastfeeding.svg │ │ │ │ ├── person-burst.svg │ │ │ │ ├── person-cane.svg │ │ │ │ ├── person-chalkboard.svg │ │ │ │ ├── person-circle-check.svg │ │ │ │ ├── person-circle-exclamation.svg │ │ │ │ ├── person-circle-minus.svg │ │ │ │ ├── person-circle-plus.svg │ │ │ │ ├── person-circle-question.svg │ │ │ │ ├── person-circle-xmark.svg │ │ │ │ ├── person-digging.svg │ │ │ │ ├── person-dots-from-line.svg │ │ │ │ ├── person-dress-burst.svg │ │ │ │ ├── person-dress.svg │ │ │ │ ├── person-drowning.svg │ │ │ │ ├── person-falling-burst.svg │ │ │ │ ├── person-falling.svg │ │ │ │ ├── person-half-dress.svg │ │ │ │ ├── person-harassing.svg │ │ │ │ ├── person-hiking.svg │ │ │ │ ├── person-military-pointing.svg │ │ │ │ ├── person-military-rifle.svg │ │ │ │ ├── person-military-to-person.svg │ │ │ │ ├── person-praying.svg │ │ │ │ ├── person-pregnant.svg │ │ │ │ ├── person-rays.svg │ │ │ │ ├── person-rifle.svg │ │ │ │ ├── person-running.svg │ │ │ │ ├── person-shelter.svg │ │ │ │ ├── person-skating.svg │ │ │ │ ├── person-skiing-nordic.svg │ │ │ │ ├── person-skiing.svg │ │ │ │ ├── person-snowboarding.svg │ │ │ │ ├── person-swimming.svg │ │ │ │ ├── person-through-window.svg │ │ │ │ ├── person-walking-arrow-loop-left.svg │ │ │ │ ├── person-walking-arrow-right.svg │ │ │ │ ├── person-walking-dashed-line-arrow-right.svg │ │ │ │ ├── person-walking-luggage.svg │ │ │ │ ├── person-walking-with-cane.svg │ │ │ │ ├── person-walking.svg │ │ │ │ ├── person.svg │ │ │ │ ├── peseta-sign.svg │ │ │ │ ├── peso-sign.svg │ │ │ │ ├── phone-flip.svg │ │ │ │ ├── phone-slash.svg │ │ │ │ ├── phone-volume.svg │ │ │ │ ├── phone.svg │ │ │ │ ├── photo-film.svg │ │ │ │ ├── piggy-bank.svg │ │ │ │ ├── pills.svg │ │ │ │ ├── pizza-slice.svg │ │ │ │ ├── place-of-worship.svg │ │ │ │ ├── plane-arrival.svg │ │ │ │ ├── plane-circle-check.svg │ │ │ │ ├── plane-circle-exclamation.svg │ │ │ │ ├── plane-circle-xmark.svg │ │ │ │ ├── plane-departure.svg │ │ │ │ ├── plane-lock.svg │ │ │ │ ├── plane-slash.svg │ │ │ │ ├── plane-up.svg │ │ │ │ ├── plane.svg │ │ │ │ ├── plant-wilt.svg │ │ │ │ ├── plate-wheat.svg │ │ │ │ ├── play.svg │ │ │ │ ├── plug-circle-bolt.svg │ │ │ │ ├── plug-circle-check.svg │ │ │ │ ├── plug-circle-exclamation.svg │ │ │ │ ├── plug-circle-minus.svg │ │ │ │ ├── plug-circle-plus.svg │ │ │ │ ├── plug-circle-xmark.svg │ │ │ │ ├── plug.svg │ │ │ │ ├── plus-minus.svg │ │ │ │ ├── plus.svg │ │ │ │ ├── podcast.svg │ │ │ │ ├── poo-storm.svg │ │ │ │ ├── poo.svg │ │ │ │ ├── poop.svg │ │ │ │ ├── power-off.svg │ │ │ │ ├── prescription-bottle-medical.svg │ │ │ │ ├── prescription-bottle.svg │ │ │ │ ├── prescription.svg │ │ │ │ ├── print.svg │ │ │ │ ├── pump-medical.svg │ │ │ │ ├── pump-soap.svg │ │ │ │ ├── puzzle-piece.svg │ │ │ │ ├── q.svg │ │ │ │ ├── qrcode.svg │ │ │ │ ├── question.svg │ │ │ │ ├── quote-left.svg │ │ │ │ ├── quote-right.svg │ │ │ │ ├── r.svg │ │ │ │ ├── radiation.svg │ │ │ │ ├── radio.svg │ │ │ │ ├── rainbow.svg │ │ │ │ ├── ranking-star.svg │ │ │ │ ├── receipt.svg │ │ │ │ ├── record-vinyl.svg │ │ │ │ ├── rectangle-ad.svg │ │ │ │ ├── rectangle-list.svg │ │ │ │ ├── rectangle-xmark.svg │ │ │ │ ├── recycle.svg │ │ │ │ ├── registered.svg │ │ │ │ ├── repeat.svg │ │ │ │ ├── reply-all.svg │ │ │ │ ├── reply.svg │ │ │ │ ├── republican.svg │ │ │ │ ├── restroom.svg │ │ │ │ ├── retweet.svg │ │ │ │ ├── ribbon.svg │ │ │ │ ├── right-from-bracket.svg │ │ │ │ ├── right-left.svg │ │ │ │ ├── right-long.svg │ │ │ │ ├── right-to-bracket.svg │ │ │ │ ├── ring.svg │ │ │ │ ├── road-barrier.svg │ │ │ │ ├── road-bridge.svg │ │ │ │ ├── road-circle-check.svg │ │ │ │ ├── road-circle-exclamation.svg │ │ │ │ ├── road-circle-xmark.svg │ │ │ │ ├── road-lock.svg │ │ │ │ ├── road-spikes.svg │ │ │ │ ├── road.svg │ │ │ │ ├── robot.svg │ │ │ │ ├── rocket.svg │ │ │ │ ├── rotate-left.svg │ │ │ │ ├── rotate-right.svg │ │ │ │ ├── rotate.svg │ │ │ │ ├── route.svg │ │ │ │ ├── rss.svg │ │ │ │ ├── ruble-sign.svg │ │ │ │ ├── rug.svg │ │ │ │ ├── ruler-combined.svg │ │ │ │ ├── ruler-horizontal.svg │ │ │ │ ├── ruler-vertical.svg │ │ │ │ ├── ruler.svg │ │ │ │ ├── rupee-sign.svg │ │ │ │ ├── rupiah-sign.svg │ │ │ │ ├── s.svg │ │ │ │ ├── sack-dollar.svg │ │ │ │ ├── sack-xmark.svg │ │ │ │ ├── sailboat.svg │ │ │ │ ├── satellite-dish.svg │ │ │ │ ├── satellite.svg │ │ │ │ ├── scale-balanced.svg │ │ │ │ ├── scale-unbalanced-flip.svg │ │ │ │ ├── scale-unbalanced.svg │ │ │ │ ├── school-circle-check.svg │ │ │ │ ├── school-circle-exclamation.svg │ │ │ │ ├── school-circle-xmark.svg │ │ │ │ ├── school-flag.svg │ │ │ │ ├── school-lock.svg │ │ │ │ ├── school.svg │ │ │ │ ├── scissors.svg │ │ │ │ ├── screwdriver-wrench.svg │ │ │ │ ├── screwdriver.svg │ │ │ │ ├── scroll-torah.svg │ │ │ │ ├── scroll.svg │ │ │ │ ├── sd-card.svg │ │ │ │ ├── section.svg │ │ │ │ ├── seedling.svg │ │ │ │ ├── server.svg │ │ │ │ ├── shapes.svg │ │ │ │ ├── share-from-square.svg │ │ │ │ ├── share-nodes.svg │ │ │ │ ├── share.svg │ │ │ │ ├── sheet-plastic.svg │ │ │ │ ├── shekel-sign.svg │ │ │ │ ├── shield-cat.svg │ │ │ │ ├── shield-dog.svg │ │ │ │ ├── shield-halved.svg │ │ │ │ ├── shield-heart.svg │ │ │ │ ├── shield-virus.svg │ │ │ │ ├── shield.svg │ │ │ │ ├── ship.svg │ │ │ │ ├── shirt.svg │ │ │ │ ├── shoe-prints.svg │ │ │ │ ├── shop-lock.svg │ │ │ │ ├── shop-slash.svg │ │ │ │ ├── shop.svg │ │ │ │ ├── shower.svg │ │ │ │ ├── shrimp.svg │ │ │ │ ├── shuffle.svg │ │ │ │ ├── shuttle-space.svg │ │ │ │ ├── sign-hanging.svg │ │ │ │ ├── signal.svg │ │ │ │ ├── signature.svg │ │ │ │ ├── signs-post.svg │ │ │ │ ├── sim-card.svg │ │ │ │ ├── sink.svg │ │ │ │ ├── sitemap.svg │ │ │ │ ├── skull-crossbones.svg │ │ │ │ ├── skull.svg │ │ │ │ ├── slash.svg │ │ │ │ ├── sleigh.svg │ │ │ │ ├── sliders.svg │ │ │ │ ├── smog.svg │ │ │ │ ├── smoking.svg │ │ │ │ ├── snowflake.svg │ │ │ │ ├── snowman.svg │ │ │ │ ├── snowplow.svg │ │ │ │ ├── soap.svg │ │ │ │ ├── socks.svg │ │ │ │ ├── solar-panel.svg │ │ │ │ ├── sort-down.svg │ │ │ │ ├── sort-up.svg │ │ │ │ ├── sort.svg │ │ │ │ ├── spa.svg │ │ │ │ ├── spaghetti-monster-flying.svg │ │ │ │ ├── spell-check.svg │ │ │ │ ├── spider.svg │ │ │ │ ├── spinner.svg │ │ │ │ ├── splotch.svg │ │ │ │ ├── spoon.svg │ │ │ │ ├── spray-can-sparkles.svg │ │ │ │ ├── spray-can.svg │ │ │ │ ├── square-arrow-up-right.svg │ │ │ │ ├── square-caret-down.svg │ │ │ │ ├── square-caret-left.svg │ │ │ │ ├── square-caret-right.svg │ │ │ │ ├── square-caret-up.svg │ │ │ │ ├── square-check.svg │ │ │ │ ├── square-envelope.svg │ │ │ │ ├── square-full.svg │ │ │ │ ├── square-h.svg │ │ │ │ ├── square-minus.svg │ │ │ │ ├── square-nfi.svg │ │ │ │ ├── square-parking.svg │ │ │ │ ├── square-pen.svg │ │ │ │ ├── square-person-confined.svg │ │ │ │ ├── square-phone-flip.svg │ │ │ │ ├── square-phone.svg │ │ │ │ ├── square-plus.svg │ │ │ │ ├── square-poll-horizontal.svg │ │ │ │ ├── square-poll-vertical.svg │ │ │ │ ├── square-root-variable.svg │ │ │ │ ├── square-rss.svg │ │ │ │ ├── square-share-nodes.svg │ │ │ │ ├── square-up-right.svg │ │ │ │ ├── square-virus.svg │ │ │ │ ├── square-xmark.svg │ │ │ │ ├── square.svg │ │ │ │ ├── staff-snake.svg │ │ │ │ ├── stairs.svg │ │ │ │ ├── stamp.svg │ │ │ │ ├── stapler.svg │ │ │ │ ├── star-and-crescent.svg │ │ │ │ ├── star-half-stroke.svg │ │ │ │ ├── star-half.svg │ │ │ │ ├── star-of-david.svg │ │ │ │ ├── star-of-life.svg │ │ │ │ ├── star.svg │ │ │ │ ├── sterling-sign.svg │ │ │ │ ├── stethoscope.svg │ │ │ │ ├── stop.svg │ │ │ │ ├── stopwatch-20.svg │ │ │ │ ├── stopwatch.svg │ │ │ │ ├── store-slash.svg │ │ │ │ ├── store.svg │ │ │ │ ├── street-view.svg │ │ │ │ ├── strikethrough.svg │ │ │ │ ├── stroopwafel.svg │ │ │ │ ├── subscript.svg │ │ │ │ ├── suitcase-medical.svg │ │ │ │ ├── suitcase-rolling.svg │ │ │ │ ├── suitcase.svg │ │ │ │ ├── sun-plant-wilt.svg │ │ │ │ ├── sun.svg │ │ │ │ ├── superscript.svg │ │ │ │ ├── swatchbook.svg │ │ │ │ ├── synagogue.svg │ │ │ │ ├── syringe.svg │ │ │ │ ├── t.svg │ │ │ │ ├── table-cells-large.svg │ │ │ │ ├── table-cells.svg │ │ │ │ ├── table-columns.svg │ │ │ │ ├── table-list.svg │ │ │ │ ├── table-tennis-paddle-ball.svg │ │ │ │ ├── table.svg │ │ │ │ ├── tablet-button.svg │ │ │ │ ├── tablet-screen-button.svg │ │ │ │ ├── tablet.svg │ │ │ │ ├── tablets.svg │ │ │ │ ├── tachograph-digital.svg │ │ │ │ ├── tag.svg │ │ │ │ ├── tags.svg │ │ │ │ ├── tape.svg │ │ │ │ ├── tarp-droplet.svg │ │ │ │ ├── tarp.svg │ │ │ │ ├── taxi.svg │ │ │ │ ├── teeth-open.svg │ │ │ │ ├── teeth.svg │ │ │ │ ├── temperature-arrow-down.svg │ │ │ │ ├── temperature-arrow-up.svg │ │ │ │ ├── temperature-empty.svg │ │ │ │ ├── temperature-full.svg │ │ │ │ ├── temperature-half.svg │ │ │ │ ├── temperature-high.svg │ │ │ │ ├── temperature-low.svg │ │ │ │ ├── temperature-quarter.svg │ │ │ │ ├── temperature-three-quarters.svg │ │ │ │ ├── tenge-sign.svg │ │ │ │ ├── tent-arrow-down-to-line.svg │ │ │ │ ├── tent-arrow-left-right.svg │ │ │ │ ├── tent-arrow-turn-left.svg │ │ │ │ ├── tent-arrows-down.svg │ │ │ │ ├── tent.svg │ │ │ │ ├── tents.svg │ │ │ │ ├── terminal.svg │ │ │ │ ├── text-height.svg │ │ │ │ ├── text-slash.svg │ │ │ │ ├── text-width.svg │ │ │ │ ├── thermometer.svg │ │ │ │ ├── thumbs-down.svg │ │ │ │ ├── thumbs-up.svg │ │ │ │ ├── thumbtack.svg │ │ │ │ ├── ticket-simple.svg │ │ │ │ ├── ticket.svg │ │ │ │ ├── timeline.svg │ │ │ │ ├── toggle-off.svg │ │ │ │ ├── toggle-on.svg │ │ │ │ ├── toilet-paper-slash.svg │ │ │ │ ├── toilet-paper.svg │ │ │ │ ├── toilet-portable.svg │ │ │ │ ├── toilet.svg │ │ │ │ ├── toilets-portable.svg │ │ │ │ ├── toolbox.svg │ │ │ │ ├── tooth.svg │ │ │ │ ├── torii-gate.svg │ │ │ │ ├── tornado.svg │ │ │ │ ├── tower-broadcast.svg │ │ │ │ ├── tower-cell.svg │ │ │ │ ├── tower-observation.svg │ │ │ │ ├── tractor.svg │ │ │ │ ├── trademark.svg │ │ │ │ ├── traffic-light.svg │ │ │ │ ├── trailer.svg │ │ │ │ ├── train-subway.svg │ │ │ │ ├── train-tram.svg │ │ │ │ ├── train.svg │ │ │ │ ├── transgender.svg │ │ │ │ ├── trash-arrow-up.svg │ │ │ │ ├── trash-can-arrow-up.svg │ │ │ │ ├── trash-can.svg │ │ │ │ ├── trash.svg │ │ │ │ ├── tree-city.svg │ │ │ │ ├── tree.svg │ │ │ │ ├── triangle-exclamation.svg │ │ │ │ ├── trophy.svg │ │ │ │ ├── trowel-bricks.svg │ │ │ │ ├── trowel.svg │ │ │ │ ├── truck-arrow-right.svg │ │ │ │ ├── truck-droplet.svg │ │ │ │ ├── truck-fast.svg │ │ │ │ ├── truck-field-un.svg │ │ │ │ ├── truck-field.svg │ │ │ │ ├── truck-front.svg │ │ │ │ ├── truck-medical.svg │ │ │ │ ├── truck-monster.svg │ │ │ │ ├── truck-moving.svg │ │ │ │ ├── truck-pickup.svg │ │ │ │ ├── truck-plane.svg │ │ │ │ ├── truck-ramp-box.svg │ │ │ │ ├── truck.svg │ │ │ │ ├── tty.svg │ │ │ │ ├── turkish-lira-sign.svg │ │ │ │ ├── turn-down.svg │ │ │ │ ├── turn-up.svg │ │ │ │ ├── tv.svg │ │ │ │ ├── u.svg │ │ │ │ ├── umbrella-beach.svg │ │ │ │ ├── umbrella.svg │ │ │ │ ├── underline.svg │ │ │ │ ├── universal-access.svg │ │ │ │ ├── unlock-keyhole.svg │ │ │ │ ├── unlock.svg │ │ │ │ ├── up-down-left-right.svg │ │ │ │ ├── up-down.svg │ │ │ │ ├── up-long.svg │ │ │ │ ├── up-right-and-down-left-from-center.svg │ │ │ │ ├── up-right-from-square.svg │ │ │ │ ├── upload.svg │ │ │ │ ├── user-astronaut.svg │ │ │ │ ├── user-check.svg │ │ │ │ ├── user-clock.svg │ │ │ │ ├── user-doctor.svg │ │ │ │ ├── user-gear.svg │ │ │ │ ├── user-graduate.svg │ │ │ │ ├── user-group.svg │ │ │ │ ├── user-injured.svg │ │ │ │ ├── user-large-slash.svg │ │ │ │ ├── user-large.svg │ │ │ │ ├── user-lock.svg │ │ │ │ ├── user-minus.svg │ │ │ │ ├── user-ninja.svg │ │ │ │ ├── user-nurse.svg │ │ │ │ ├── user-pen.svg │ │ │ │ ├── user-plus.svg │ │ │ │ ├── user-secret.svg │ │ │ │ ├── user-shield.svg │ │ │ │ ├── user-slash.svg │ │ │ │ ├── user-tag.svg │ │ │ │ ├── user-tie.svg │ │ │ │ ├── user-xmark.svg │ │ │ │ ├── user.svg │ │ │ │ ├── users-between-lines.svg │ │ │ │ ├── users-gear.svg │ │ │ │ ├── users-line.svg │ │ │ │ ├── users-rays.svg │ │ │ │ ├── users-rectangle.svg │ │ │ │ ├── users-slash.svg │ │ │ │ ├── users-viewfinder.svg │ │ │ │ ├── users.svg │ │ │ │ ├── utensils.svg │ │ │ │ ├── v.svg │ │ │ │ ├── van-shuttle.svg │ │ │ │ ├── vault.svg │ │ │ │ ├── vector-square.svg │ │ │ │ ├── venus-double.svg │ │ │ │ ├── venus-mars.svg │ │ │ │ ├── venus.svg │ │ │ │ ├── vest-patches.svg │ │ │ │ ├── vest.svg │ │ │ │ ├── vial-circle-check.svg │ │ │ │ ├── vial-virus.svg │ │ │ │ ├── vial.svg │ │ │ │ ├── vials.svg │ │ │ │ ├── video-slash.svg │ │ │ │ ├── video.svg │ │ │ │ ├── vihara.svg │ │ │ │ ├── virus-covid-slash.svg │ │ │ │ ├── virus-covid.svg │ │ │ │ ├── virus-slash.svg │ │ │ │ ├── virus.svg │ │ │ │ ├── viruses.svg │ │ │ │ ├── voicemail.svg │ │ │ │ ├── volcano.svg │ │ │ │ ├── volleyball.svg │ │ │ │ ├── volume-high.svg │ │ │ │ ├── volume-low.svg │ │ │ │ ├── volume-off.svg │ │ │ │ ├── volume-xmark.svg │ │ │ │ ├── vr-cardboard.svg │ │ │ │ ├── w.svg │ │ │ │ ├── walkie-talkie.svg │ │ │ │ ├── wallet.svg │ │ │ │ ├── wand-magic-sparkles.svg │ │ │ │ ├── wand-magic.svg │ │ │ │ ├── wand-sparkles.svg │ │ │ │ ├── warehouse.svg │ │ │ │ ├── water-ladder.svg │ │ │ │ ├── water.svg │ │ │ │ ├── wave-square.svg │ │ │ │ ├── weight-hanging.svg │ │ │ │ ├── weight-scale.svg │ │ │ │ ├── wheat-awn-circle-exclamation.svg │ │ │ │ ├── wheat-awn.svg │ │ │ │ ├── wheelchair-move.svg │ │ │ │ ├── wheelchair.svg │ │ │ │ ├── whiskey-glass.svg │ │ │ │ ├── wifi.svg │ │ │ │ ├── wind.svg │ │ │ │ ├── window-maximize.svg │ │ │ │ ├── window-minimize.svg │ │ │ │ ├── window-restore.svg │ │ │ │ ├── wine-bottle.svg │ │ │ │ ├── wine-glass-empty.svg │ │ │ │ ├── wine-glass.svg │ │ │ │ ├── won-sign.svg │ │ │ │ ├── worm.svg │ │ │ │ ├── wrench.svg │ │ │ │ ├── x-ray.svg │ │ │ │ ├── x.svg │ │ │ │ ├── xmark.svg │ │ │ │ ├── xmarks-lines.svg │ │ │ │ ├── y.svg │ │ │ │ ├── yen-sign.svg │ │ │ │ ├── yin-yang.svg │ │ │ │ └── z.svg │ │ └── moodle │ │ │ ├── font-awesome │ │ │ ├── cloud-done.svg │ │ │ ├── cloud-refresh.svg │ │ │ └── cloud-x.svg │ │ │ └── moodle │ │ │ ├── agg-mean.svg │ │ │ ├── agg-sum.svg │ │ │ ├── browsed.svg │ │ │ ├── grade-partiallycorrect.svg │ │ │ ├── item.svg │ │ │ ├── level.svg │ │ │ └── swipe-navigation.svg │ ├── icon │ │ ├── favicon.png │ │ └── icon.png │ ├── img │ │ ├── completion │ │ │ ├── completion-auto-fail.svg │ │ │ ├── completion-auto-n-override.svg │ │ │ ├── completion-auto-n.svg │ │ │ ├── completion-auto-pass.svg │ │ │ ├── completion-auto-y-override.svg │ │ │ ├── completion-auto-y.svg │ │ │ ├── completion-manual-n-override.svg │ │ │ ├── completion-manual-n.svg │ │ │ ├── completion-manual-y-override.svg │ │ │ └── completion-manual-y.svg │ │ ├── expired.svg │ │ ├── files │ │ │ ├── archive.svg │ │ │ ├── audio.svg │ │ │ ├── calc.svg │ │ │ ├── chart.svg │ │ │ ├── database.svg │ │ │ ├── document.svg │ │ │ ├── draw.svg │ │ │ ├── eps.svg │ │ │ ├── epub.svg │ │ │ ├── flash.svg │ │ │ ├── folder.svg │ │ │ ├── gif.svg │ │ │ ├── h5p.svg │ │ │ ├── image.svg │ │ │ ├── impress.svg │ │ │ ├── isf.svg │ │ │ ├── markup.svg │ │ │ ├── math.svg │ │ │ ├── moodle.svg │ │ │ ├── oth.svg │ │ │ ├── pdf.svg │ │ │ ├── powerpoint.svg │ │ │ ├── psd.svg │ │ │ ├── publisher.svg │ │ │ ├── sourcecode.svg │ │ │ ├── spreadsheet.svg │ │ │ ├── text.svg │ │ │ ├── unknown.svg │ │ │ ├── video.svg │ │ │ └── writer.svg │ │ ├── files_legacy │ │ │ ├── archive-64.png │ │ │ ├── audio-64.png │ │ │ ├── calc-64.png │ │ │ ├── chart-64.png │ │ │ ├── database-64.png │ │ │ ├── document-64.png │ │ │ ├── draw-64.png │ │ │ ├── eps-64.png │ │ │ ├── epub-64.png │ │ │ ├── flash-64.png │ │ │ ├── folder-64.png │ │ │ ├── gif-64.png │ │ │ ├── h5p-64.png │ │ │ ├── image-64.png │ │ │ ├── impress-64.png │ │ │ ├── isf-64.png │ │ │ ├── markup-64.png │ │ │ ├── math-64.png │ │ │ ├── moodle-64.png │ │ │ ├── oth-64.png │ │ │ ├── pdf-64.png │ │ │ ├── powerpoint-64.png │ │ │ ├── psd-64.png │ │ │ ├── publisher-64.png │ │ │ ├── sourcecode-64.png │ │ │ ├── spreadsheet-64.png │ │ │ ├── text-64.png │ │ │ ├── unknown-64.png │ │ │ ├── video-64.png │ │ │ └── writer-64.png │ │ ├── group-avatar.svg │ │ ├── icons │ │ │ ├── activities.svg │ │ │ ├── calendar.png │ │ │ ├── courses.svg │ │ │ ├── empty.svg │ │ │ └── h5p.svg │ │ ├── login │ │ │ ├── faq_qrcode.png │ │ │ └── faq_url.png │ │ ├── login_logo.png │ │ ├── mod │ │ │ ├── assign.svg │ │ │ ├── bigbluebuttonbn.svg │ │ │ ├── book.svg │ │ │ ├── chat.svg │ │ │ ├── choice.svg │ │ │ ├── data.svg │ │ │ ├── external-tool.svg │ │ │ ├── feedback.svg │ │ │ ├── folder.svg │ │ │ ├── forum.svg │ │ │ ├── glossary.svg │ │ │ ├── h5pactivity.svg │ │ │ ├── imscp.svg │ │ │ ├── label.svg │ │ │ ├── lesson.svg │ │ │ ├── lti.svg │ │ │ ├── page.svg │ │ │ ├── quiz.svg │ │ │ ├── resource.svg │ │ │ ├── scorm.svg │ │ │ ├── survey.svg │ │ │ ├── url.svg │ │ │ ├── wiki.svg │ │ │ └── workshop.svg │ │ ├── mod_40 │ │ │ ├── assign.svg │ │ │ ├── bigbluebuttonbn.svg │ │ │ ├── book.svg │ │ │ ├── chat.svg │ │ │ ├── choice.svg │ │ │ ├── data.svg │ │ │ ├── external-tool.svg │ │ │ ├── feedback.svg │ │ │ ├── folder.svg │ │ │ ├── forum.svg │ │ │ ├── glossary.svg │ │ │ ├── h5pactivity.svg │ │ │ ├── imscp.svg │ │ │ ├── label.svg │ │ │ ├── lesson.svg │ │ │ ├── lti.svg │ │ │ ├── page.svg │ │ │ ├── quiz.svg │ │ │ ├── resource.svg │ │ │ ├── scorm.svg │ │ │ ├── survey.svg │ │ │ ├── url.svg │ │ │ ├── wiki.svg │ │ │ └── workshop.svg │ │ ├── mod_legacy │ │ │ ├── assign.svg │ │ │ ├── bigbluebuttonbn.svg │ │ │ ├── book.svg │ │ │ ├── chat.svg │ │ │ ├── choice.svg │ │ │ ├── data.svg │ │ │ ├── external-tool.svg │ │ │ ├── feedback.svg │ │ │ ├── folder.svg │ │ │ ├── forum.svg │ │ │ ├── glossary.svg │ │ │ ├── h5pactivity.svg │ │ │ ├── imscp.svg │ │ │ ├── label.svg │ │ │ ├── lesson.svg │ │ │ ├── lti.svg │ │ │ ├── page.svg │ │ │ ├── quiz.svg │ │ │ ├── resource.svg │ │ │ ├── scorm.svg │ │ │ ├── survey.svg │ │ │ ├── url.svg │ │ │ ├── wiki.svg │ │ │ └── workshop.svg │ │ ├── top_logo.png │ │ └── user-avatar.png │ ├── js │ │ └── iframe-treat-links.js │ ├── mimetoext.json │ └── mimetypes.json ├── core │ ├── base.module.ts │ ├── classes │ │ ├── application-init-status.ts │ │ ├── aria-role-tab.ts │ │ ├── async-directive.ts │ │ ├── base-sync.ts │ │ ├── cache.ts │ │ ├── cancellable-promise.ts │ │ ├── database │ │ │ ├── database-table-proxy.ts │ │ │ ├── database-table.ts │ │ │ ├── debug-database-table.ts │ │ │ ├── eager-database-table.ts │ │ │ ├── inmemory-database-table.ts │ │ │ └── lazy-database-table.ts │ │ ├── delegate-sorted.ts │ │ ├── delegate.ts │ │ ├── element-controllers │ │ │ ├── ElementController.ts │ │ │ ├── FrameElementController.ts │ │ │ └── MediaElementController.ts │ │ ├── errors │ │ │ ├── ajaxerror.ts │ │ │ ├── ajaxwserror.ts │ │ │ ├── cancelederror.ts │ │ │ ├── captureerror.ts │ │ │ ├── error.ts │ │ │ ├── errors.ts │ │ │ ├── errorwithoptions.ts │ │ │ ├── httperror.ts │ │ │ ├── loginerror.ts │ │ │ ├── network-error.ts │ │ │ ├── silenterror.ts │ │ │ ├── siteerror.ts │ │ │ └── wserror.ts │ │ ├── interceptor.ts │ │ ├── ion-loading.ts │ │ ├── items-management │ │ │ ├── items-manager-source.ts │ │ │ ├── items-manager.ts │ │ │ ├── list-items-manager.ts │ │ │ ├── paginated-items-manager-source.ts │ │ │ ├── routed-items-manager-source.ts │ │ │ ├── routed-items-manager-sources-tracker.ts │ │ │ ├── routed-items-manager.ts │ │ │ ├── swipe-navigation-items-manager.ts │ │ │ ├── swipe-slides-dynamic-items-manager-source.ts │ │ │ ├── swipe-slides-dynamic-items-manager.ts │ │ │ ├── swipe-slides-items-manager-source.ts │ │ │ └── swipe-slides-items-manager.ts │ │ ├── modal-component.ts │ │ ├── modal-lateral-transition.ts │ │ ├── native-to-angular-http.ts │ │ ├── page-load-watcher.ts │ │ ├── page-loads-manager.ts │ │ ├── page-transition.ts │ │ ├── promise.ts │ │ ├── promised-value.ts │ │ ├── queue-runner.ts │ │ ├── sites │ │ │ ├── authenticated-site.ts │ │ │ ├── site.ts │ │ │ └── unauthenticated-site.ts │ │ ├── sqlitedb.ts │ │ ├── tabs.ts │ │ └── tests │ │ │ ├── database-table.test.ts │ │ │ ├── error.test.ts │ │ │ ├── promised-value.test.ts │ │ │ ├── queue-runner.test.ts │ │ │ └── swipe-navigation-items-manager.test.ts │ ├── components │ │ ├── animations.ts │ │ ├── attachments │ │ │ ├── attachments.scss │ │ │ ├── attachments.ts │ │ │ └── core-attachments.html │ │ ├── bs-tooltip │ │ │ ├── bs-tooltip.ts │ │ │ └── core-bs-tooltip.html │ │ ├── button-with-spinner │ │ │ ├── button-with-spinner.scss │ │ │ ├── button-with-spinner.ts │ │ │ └── core-button-with-spinner.html │ │ ├── chart │ │ │ ├── chart.scss │ │ │ ├── chart.ts │ │ │ └── core-chart.html │ │ ├── chrono │ │ │ ├── chrono.ts │ │ │ └── core-chrono.html │ │ ├── combobox │ │ │ ├── combobox.scss │ │ │ ├── combobox.ts │ │ │ └── core-combobox.html │ │ ├── components.module.ts │ │ ├── context-menu │ │ │ ├── context-menu-item.ts │ │ │ ├── context-menu-popover.scss │ │ │ ├── context-menu-popover.ts │ │ │ ├── context-menu.ts │ │ │ ├── core-context-menu-popover.html │ │ │ └── core-context-menu.html │ │ ├── course-image │ │ │ ├── course-image.html │ │ │ ├── course-image.scss │ │ │ └── course-image.ts │ │ ├── download-refresh │ │ │ ├── core-download-refresh.html │ │ │ ├── download-refresh.scss │ │ │ └── download-refresh.ts │ │ ├── dynamic-component │ │ │ ├── core-dynamic-component.html │ │ │ └── dynamic-component.ts │ │ ├── empty-box │ │ │ ├── core-empty-box.html │ │ │ ├── empty-box.scss │ │ │ └── empty-box.ts │ │ ├── file │ │ │ ├── core-file.html │ │ │ ├── core-file.scss │ │ │ └── file.ts │ │ ├── files │ │ │ ├── core-files.html │ │ │ └── files.ts │ │ ├── group-selector │ │ │ ├── group-selector.html │ │ │ ├── group-selector.scss │ │ │ └── group-selector.ts │ │ ├── horizontal-scroll-controls │ │ │ ├── core-horizontal-scroll-controls.html │ │ │ ├── horizontal-scroll-controls.scss │ │ │ └── horizontal-scroll-controls.ts │ │ ├── iframe │ │ │ ├── core-iframe.html │ │ │ ├── iframe.scss │ │ │ └── iframe.ts │ │ ├── infinite-loading │ │ │ ├── core-infinite-loading.html │ │ │ └── infinite-loading.ts │ │ ├── input-errors │ │ │ ├── core-input-errors.html │ │ │ ├── input-errors.scss │ │ │ └── input-errors.ts │ │ ├── loading │ │ │ ├── core-loading.html │ │ │ ├── loading.scss │ │ │ └── loading.ts │ │ ├── local-file │ │ │ ├── core-local-file.html │ │ │ ├── core-local-file.scss │ │ │ └── local-file.ts │ │ ├── mark-required │ │ │ ├── core-mark-required.html │ │ │ ├── mark-required.scss │ │ │ └── mark-required.ts │ │ ├── message │ │ │ ├── message.html │ │ │ ├── message.scss │ │ │ └── message.ts │ │ ├── mod-icon │ │ │ ├── mod-icon.html │ │ │ ├── mod-icon.scss │ │ │ └── mod-icon.ts │ │ ├── navbar-buttons │ │ │ ├── navbar-buttons.scss │ │ │ └── navbar-buttons.ts │ │ ├── navigation-bar │ │ │ ├── core-navigation-bar.html │ │ │ ├── navigation-bar.scss │ │ │ └── navigation-bar.ts │ │ ├── password-modal │ │ │ ├── password-modal.html │ │ │ └── password-modal.ts │ │ ├── progress-bar │ │ │ ├── core-progress-bar.html │ │ │ ├── progress-bar.scss │ │ │ └── progress-bar.ts │ │ ├── recaptcha │ │ │ ├── core-recaptcha.html │ │ │ └── recaptcha.ts │ │ ├── refresh-button-modal │ │ │ ├── refresh-button-modal.html │ │ │ ├── refresh-button-modal.scss │ │ │ └── refresh-button-modal.ts │ │ ├── send-message-form │ │ │ ├── core-send-message-form.html │ │ │ ├── send-message-form.scss │ │ │ └── send-message-form.ts │ │ ├── sheet-modal │ │ │ ├── sheet-modal.html │ │ │ ├── sheet-modal.scss │ │ │ └── sheet-modal.ts │ │ ├── show-password │ │ │ ├── core-show-password.html │ │ │ └── show-password.ts │ │ ├── site-logo │ │ │ ├── site-logo.html │ │ │ ├── site-logo.scss │ │ │ └── site-logo.ts │ │ ├── site-picker │ │ │ ├── core-site-picker.html │ │ │ └── site-picker.ts │ │ ├── sites-list │ │ │ ├── sites-list.html │ │ │ ├── sites-list.scss │ │ │ └── sites-list.ts │ │ ├── spacer │ │ │ └── spacer.ts │ │ ├── split-view │ │ │ ├── split-view.html │ │ │ ├── split-view.scss │ │ │ └── split-view.ts │ │ ├── style │ │ │ └── style.ts │ │ ├── swipe-navigation-tour │ │ │ ├── core-swipe-navigation-tour.html │ │ │ ├── swipe-navigation-tour.scss │ │ │ └── swipe-navigation-tour.ts │ │ ├── swipe-slides │ │ │ ├── swipe-slides.html │ │ │ ├── swipe-slides.scss │ │ │ └── swipe-slides.ts │ │ ├── tabs-outlet │ │ │ ├── core-tabs-outlet.html │ │ │ └── tabs-outlet.ts │ │ ├── tabs │ │ │ ├── core-tabs.html │ │ │ ├── tab.ts │ │ │ ├── tabs.scss │ │ │ └── tabs.ts │ │ ├── tests │ │ │ ├── iframe.test.ts │ │ │ └── user-avatar.test.ts │ │ ├── timer │ │ │ ├── core-timer.html │ │ │ ├── timer.scss │ │ │ └── timer.ts │ │ └── user-avatar │ │ │ ├── core-user-avatar.html │ │ │ ├── user-avatar.scss │ │ │ └── user-avatar.ts │ ├── constants.ts │ ├── core.module.ts │ ├── directives │ │ ├── aria-button.ts │ │ ├── auto-focus.ts │ │ ├── auto-rows.ts │ │ ├── collapsible-footer.ts │ │ ├── collapsible-header.ts │ │ ├── collapsible-item.ts │ │ ├── content.ts │ │ ├── datetime.ts │ │ ├── directives.module.ts │ │ ├── download-file.ts │ │ ├── external-content.ts │ │ ├── fa-icon.ts │ │ ├── fab.ts │ │ ├── format-text.ts │ │ ├── link.ts │ │ ├── long-press.ts │ │ ├── on-resize.ts │ │ ├── reading-mode.ts │ │ ├── supress-events.ts │ │ ├── swipe-navigation.ts │ │ ├── tests │ │ │ ├── format-text.test.ts │ │ │ └── link.test.ts │ │ ├── update-non-reactive-attributes.ts │ │ ├── user-link.ts │ │ └── user-tour.ts │ ├── features │ │ ├── autologout │ │ │ └── services │ │ │ │ └── autologout.ts │ │ ├── block │ │ │ ├── block.module.ts │ │ │ ├── classes │ │ │ │ ├── base-block-component.ts │ │ │ │ └── base-block-handler.ts │ │ │ ├── components │ │ │ │ ├── block │ │ │ │ │ ├── block.scss │ │ │ │ │ ├── block.ts │ │ │ │ │ └── core-block.html │ │ │ │ ├── only-title-block │ │ │ │ │ ├── core-block-only-title.html │ │ │ │ │ ├── only-title-block.scss │ │ │ │ │ └── only-title-block.ts │ │ │ │ ├── pre-rendered-block │ │ │ │ │ ├── core-block-pre-rendered.html │ │ │ │ │ └── pre-rendered-block.ts │ │ │ │ ├── side-blocks-button │ │ │ │ │ ├── side-blocks-button.html │ │ │ │ │ ├── side-blocks-button.scss │ │ │ │ │ └── side-blocks-button.ts │ │ │ │ ├── side-blocks-tour │ │ │ │ │ ├── side-blocks-tour.html │ │ │ │ │ ├── side-blocks-tour.scss │ │ │ │ │ └── side-blocks-tour.ts │ │ │ │ └── side-blocks │ │ │ │ │ ├── side-blocks.html │ │ │ │ │ ├── side-blocks.scss │ │ │ │ │ └── side-blocks.ts │ │ │ ├── lang.json │ │ │ └── services │ │ │ │ ├── block-delegate.ts │ │ │ │ ├── block-helper.ts │ │ │ │ └── handlers │ │ │ │ └── default-block.ts │ │ ├── comments │ │ │ ├── comments.module.ts │ │ │ ├── components │ │ │ │ └── comments │ │ │ │ │ ├── comments.scss │ │ │ │ │ ├── comments.ts │ │ │ │ │ └── core-comments.html │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── viewer │ │ │ │ │ ├── viewer.html │ │ │ │ │ ├── viewer.scss │ │ │ │ │ └── viewer.ts │ │ │ ├── services │ │ │ │ ├── comments-offline.ts │ │ │ │ ├── comments-sync.ts │ │ │ │ ├── comments.ts │ │ │ │ ├── database │ │ │ │ │ └── comments.ts │ │ │ │ └── handlers │ │ │ │ │ └── sync-cron.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── basic_usage.feature │ │ ├── compile │ │ │ ├── components │ │ │ │ └── compile-html │ │ │ │ │ └── compile-html.ts │ │ │ └── services │ │ │ │ └── compile.ts │ │ ├── contentlinks │ │ │ ├── classes │ │ │ │ ├── base-handler.ts │ │ │ │ ├── module-grade-handler.ts │ │ │ │ ├── module-index-handler.ts │ │ │ │ └── module-list-handler.ts │ │ │ ├── components │ │ │ │ └── choose-site-modal │ │ │ │ │ ├── choose-site-modal.html │ │ │ │ │ └── choose-site-modal.ts │ │ │ ├── contentlinks.module.ts │ │ │ ├── lang.json │ │ │ └── services │ │ │ │ ├── contentlinks-delegate.ts │ │ │ │ └── contentlinks-helper.ts │ │ ├── course │ │ │ ├── classes │ │ │ │ ├── activity-prefetch-handler.ts │ │ │ │ ├── activity-sync.ts │ │ │ │ ├── main-activity-component.ts │ │ │ │ ├── main-activity-page.ts │ │ │ │ ├── main-resource-component.ts │ │ │ │ ├── module-base-handler.ts │ │ │ │ ├── module-completion.ts │ │ │ │ ├── module-prefetch-handler.ts │ │ │ │ └── resource-prefetch-handler.ts │ │ │ ├── components │ │ │ │ ├── course-format │ │ │ │ │ ├── course-format.html │ │ │ │ │ ├── course-format.scss │ │ │ │ │ └── course-format.ts │ │ │ │ ├── course-index-tour │ │ │ │ │ ├── course-index-tour.html │ │ │ │ │ ├── course-index-tour.scss │ │ │ │ │ └── course-index-tour.ts │ │ │ │ ├── course-index │ │ │ │ │ ├── course-index.html │ │ │ │ │ ├── course-index.scss │ │ │ │ │ └── course-index.ts │ │ │ │ ├── course-section │ │ │ │ │ ├── course-section.html │ │ │ │ │ ├── course-section.scss │ │ │ │ │ └── course-section.ts │ │ │ │ ├── module-completion-details │ │ │ │ │ ├── module-completion-details.html │ │ │ │ │ ├── module-completion-details.scss │ │ │ │ │ └── module-completion-details.ts │ │ │ │ ├── module-completion-legacy │ │ │ │ │ ├── core-course-module-completion-legacy.html │ │ │ │ │ ├── module-completion-legacy.scss │ │ │ │ │ └── module-completion-legacy.ts │ │ │ │ ├── module-completion │ │ │ │ │ ├── core-course-module-completion.html │ │ │ │ │ ├── module-completion.scss │ │ │ │ │ └── module-completion.ts │ │ │ │ ├── module-description │ │ │ │ │ ├── core-course-module-description.html │ │ │ │ │ └── module-description.ts │ │ │ │ ├── module-info │ │ │ │ │ ├── core-course-module-info.html │ │ │ │ │ ├── course-module-info.scss │ │ │ │ │ └── module-info.ts │ │ │ │ ├── module-manual-completion │ │ │ │ │ ├── core-course-module-manual-completion.html │ │ │ │ │ └── module-manual-completion.ts │ │ │ │ ├── module-navigation │ │ │ │ │ ├── core-course-module-navigation.html │ │ │ │ │ ├── module-navigation.scss │ │ │ │ │ └── module-navigation.ts │ │ │ │ ├── module-summary │ │ │ │ │ ├── module-summary.html │ │ │ │ │ ├── module-summary.scss │ │ │ │ │ └── module-summary.ts │ │ │ │ ├── module │ │ │ │ │ ├── core-course-module.html │ │ │ │ │ ├── module.scss │ │ │ │ │ └── module.ts │ │ │ │ ├── tag-area │ │ │ │ │ ├── core-course-tag-area.html │ │ │ │ │ └── tag-area.ts │ │ │ │ └── unsupported-module │ │ │ │ │ ├── core-course-unsupported-module.html │ │ │ │ │ ├── unsupported-module.scss │ │ │ │ │ └── unsupported-module.ts │ │ │ ├── constants.ts │ │ │ ├── course-contents-lazy.module.ts │ │ │ ├── course-contents-routing.module.ts │ │ │ ├── course-lazy.module.ts │ │ │ ├── course-routing.module.ts │ │ │ ├── course.module.ts │ │ │ ├── directives │ │ │ │ └── download-module-main-file.ts │ │ │ ├── format │ │ │ │ ├── formats.module.ts │ │ │ │ ├── singleactivity │ │ │ │ │ ├── components │ │ │ │ │ │ ├── core-course-format-single-activity.html │ │ │ │ │ │ ├── single-activity.scss │ │ │ │ │ │ └── singleactivity.ts │ │ │ │ │ ├── services │ │ │ │ │ │ └── handlers │ │ │ │ │ │ │ └── singleactivity-format.ts │ │ │ │ │ └── singleactivity.module.ts │ │ │ │ ├── social │ │ │ │ │ ├── services │ │ │ │ │ │ └── handlers │ │ │ │ │ │ │ └── social-format.ts │ │ │ │ │ └── social.module.ts │ │ │ │ ├── topics │ │ │ │ │ ├── services │ │ │ │ │ │ └── handlers │ │ │ │ │ │ │ └── topics-format.ts │ │ │ │ │ └── topics.module.ts │ │ │ │ └── weeks │ │ │ │ │ ├── services │ │ │ │ │ └── handlers │ │ │ │ │ │ └── weeks-format.ts │ │ │ │ │ └── weeks.module.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── contents │ │ │ │ │ ├── contents.html │ │ │ │ │ └── contents.ts │ │ │ │ ├── course-summary │ │ │ │ │ ├── course-summary.html │ │ │ │ │ ├── course-summary.scss │ │ │ │ │ └── course-summary.ts │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ │ ├── list-mod-type │ │ │ │ │ ├── list-mod-type.html │ │ │ │ │ └── list-mod-type.ts │ │ │ │ └── module-preview │ │ │ │ │ ├── module-preview.html │ │ │ │ │ ├── module-preview.scss │ │ │ │ │ └── module-preview.ts │ │ │ ├── services │ │ │ │ ├── course-download-status-helper.ts │ │ │ │ ├── course-helper.ts │ │ │ │ ├── course-module-helper.ts │ │ │ │ ├── course-offline.ts │ │ │ │ ├── course-options-delegate.ts │ │ │ │ ├── course.ts │ │ │ │ ├── database │ │ │ │ │ ├── course.ts │ │ │ │ │ ├── log.ts │ │ │ │ │ └── module-prefetch.ts │ │ │ │ ├── format-delegate.ts │ │ │ │ ├── handlers │ │ │ │ │ ├── course-tag-area.ts │ │ │ │ │ ├── default-format.ts │ │ │ │ │ ├── default-module.ts │ │ │ │ │ ├── log-cron.ts │ │ │ │ │ ├── modules-tag-area.ts │ │ │ │ │ └── sync-cron.ts │ │ │ │ ├── log-helper.ts │ │ │ │ ├── module-delegate.ts │ │ │ │ ├── module-prefetch-delegate.ts │ │ │ │ └── sync.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── basic_usage-403.feature │ │ │ │ ├── basic_usage-405.feature │ │ │ │ ├── basic_usage.feature │ │ │ │ ├── communication.feature │ │ │ │ ├── course_completion.feature │ │ │ │ ├── courselist.feature │ │ │ │ ├── disabled_features.feature │ │ │ │ ├── relative_dates-403.feature │ │ │ │ ├── relative_dates.feature │ │ │ │ └── snapshots │ │ │ │ ├── test-basic-usage-of-one-course-in-app-lms-45-view-course-contents_53.png │ │ │ │ ├── test-basic-usage-of-one-course-in-app-lms-45-view-course-contents_57.png │ │ │ │ ├── test-basic-usage-of-one-course-in-app-view-course-contents_47.png │ │ │ │ └── test-basic-usage-of-one-course-in-app-view-course-contents_51.png │ │ ├── courses │ │ │ ├── components │ │ │ │ ├── course-list-item │ │ │ │ │ ├── core-courses-course-list-item.html │ │ │ │ │ ├── course-list-item.scss │ │ │ │ │ └── course-list-item.ts │ │ │ │ └── course-options-menu │ │ │ │ │ ├── core-courses-course-options-menu.html │ │ │ │ │ └── course-options-menu.ts │ │ │ ├── constants.ts │ │ │ ├── courses-lazy.module.ts │ │ │ ├── courses.module.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── categories │ │ │ │ │ ├── categories.html │ │ │ │ │ └── categories.ts │ │ │ │ ├── dashboard │ │ │ │ │ ├── dashboard.html │ │ │ │ │ └── dashboard.ts │ │ │ │ ├── list │ │ │ │ │ ├── list.html │ │ │ │ │ └── list.ts │ │ │ │ └── my │ │ │ │ │ ├── my.html │ │ │ │ │ ├── my.scss │ │ │ │ │ └── my.ts │ │ │ ├── services │ │ │ │ ├── courses-helper.ts │ │ │ │ ├── courses.ts │ │ │ │ ├── dashboard.ts │ │ │ │ └── handlers │ │ │ │ │ ├── base-link-handler.ts │ │ │ │ │ ├── course-link.ts │ │ │ │ │ ├── courses-index-link.ts │ │ │ │ │ ├── dashboard-home.ts │ │ │ │ │ ├── dashboard-link.ts │ │ │ │ │ ├── enrol-push-click.ts │ │ │ │ │ ├── my-courses-link.ts │ │ │ │ │ ├── my-courses-mainmenu.ts │ │ │ │ │ ├── request-push-click.ts │ │ │ │ │ └── section-link.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── basic-usage-402.feature │ │ │ │ └── basic_usage.feature │ │ ├── dataprivacy │ │ │ ├── components │ │ │ │ ├── contactdpo │ │ │ │ │ ├── contactdpo.html │ │ │ │ │ └── contactdpo.ts │ │ │ │ └── newrequest │ │ │ │ │ ├── newrequest.html │ │ │ │ │ └── newrequest.ts │ │ │ ├── constants.ts │ │ │ ├── dataprivacy.module.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── main │ │ │ │ │ ├── main.html │ │ │ │ │ ├── main.scss │ │ │ │ │ └── main.ts │ │ │ ├── services │ │ │ │ ├── dataprivacy.ts │ │ │ │ └── handlers │ │ │ │ │ ├── createdatarequest-link.ts │ │ │ │ │ ├── datarequests-link.ts │ │ │ │ │ └── user.ts │ │ │ └── tests │ │ │ │ ├── behat │ │ │ │ ├── contact_privacy_officer.feature │ │ │ │ ├── create_data_request.feature │ │ │ │ └── my_data_requests.feature │ │ │ │ └── datarequests-link.test.ts │ │ ├── editor │ │ │ ├── classes │ │ │ │ └── base-editor-component.ts │ │ │ ├── components │ │ │ │ ├── classic-editor │ │ │ │ │ ├── classic-editor.scss │ │ │ │ │ ├── classic-editor.ts │ │ │ │ │ └── core-editor-classic-editor.html │ │ │ │ └── rich-text-editor │ │ │ │ │ ├── core-rich-text-editor.html │ │ │ │ │ ├── rich-text-editor.scss │ │ │ │ │ └── rich-text-editor.ts │ │ │ ├── editor.module.ts │ │ │ ├── lang.json │ │ │ └── services │ │ │ │ ├── database │ │ │ │ └── editor.ts │ │ │ │ ├── editor-offline.ts │ │ │ │ └── editor.ts │ │ ├── emulator │ │ │ ├── classes │ │ │ │ ├── SecureStorage.ts │ │ │ │ └── wasm-sqlite-object.ts │ │ │ ├── components │ │ │ │ └── capture-media │ │ │ │ │ ├── capture-media.html │ │ │ │ │ ├── capture-media.scss │ │ │ │ │ └── capture-media.ts │ │ │ ├── emulator.module.prod.ts │ │ │ ├── emulator.module.ts │ │ │ └── services │ │ │ │ ├── camera.ts │ │ │ │ ├── capture-helper.ts │ │ │ │ ├── clipboard.ts │ │ │ │ ├── db.ts │ │ │ │ ├── emulator-helper.ts │ │ │ │ ├── file-opener.ts │ │ │ │ ├── file-transfer.ts │ │ │ │ ├── file.ts │ │ │ │ ├── geolocation.ts │ │ │ │ ├── inappbrowser.ts │ │ │ │ ├── local-notifications.ts │ │ │ │ ├── media-capture.ts │ │ │ │ └── zip.ts │ │ ├── enrol │ │ │ ├── enrol.module.ts │ │ │ ├── services │ │ │ │ ├── enrol-delegate.ts │ │ │ │ ├── enrol-helper.ts │ │ │ │ └── enrol.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── guest_access.feature │ │ │ │ └── self_enrol.feature │ │ ├── features.module.ts │ │ ├── fileuploader │ │ │ ├── components │ │ │ │ ├── audio-histogram │ │ │ │ │ ├── audio-histogram.html │ │ │ │ │ ├── audio-histogram.scss │ │ │ │ │ └── audio-histogram.ts │ │ │ │ └── audio-recorder │ │ │ │ │ ├── audio-recorder.component.ts │ │ │ │ │ ├── audio-recorder.html │ │ │ │ │ ├── audio-recorder.scss │ │ │ │ │ └── audio-recorder.worker.ts │ │ │ ├── fileuploader.module.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ ├── fileuploader-delegate.ts │ │ │ │ ├── fileuploader-helper.ts │ │ │ │ ├── fileuploader.ts │ │ │ │ └── handlers │ │ │ │ │ ├── album.ts │ │ │ │ │ ├── audio.ts │ │ │ │ │ ├── camera.ts │ │ │ │ │ ├── file.ts │ │ │ │ │ └── video.ts │ │ │ └── utils │ │ │ │ └── worker-messages.ts │ │ ├── filter │ │ │ ├── filter.module.ts │ │ │ └── services │ │ │ │ ├── filter-delegate.ts │ │ │ │ ├── filter-helper.ts │ │ │ │ ├── filter.ts │ │ │ │ └── handlers │ │ │ │ └── default-filter.ts │ │ ├── grades │ │ │ ├── classes │ │ │ │ └── grades-courses-source.ts │ │ │ ├── constants.ts │ │ │ ├── grades.module.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── course │ │ │ │ │ ├── course.html │ │ │ │ │ ├── course.scss │ │ │ │ │ └── course.ts │ │ │ │ └── courses │ │ │ │ │ ├── courses.html │ │ │ │ │ └── courses.ts │ │ │ ├── services │ │ │ │ ├── grades-helper.ts │ │ │ │ ├── grades.ts │ │ │ │ └── handlers │ │ │ │ │ ├── course-option.ts │ │ │ │ │ ├── course-participants-option.ts │ │ │ │ │ ├── overview-link.ts │ │ │ │ │ ├── report-link.ts │ │ │ │ │ ├── user-link.ts │ │ │ │ │ └── user.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── grade_penalties.feature │ │ │ │ ├── navigation-401.feature │ │ │ │ ├── navigation.feature │ │ │ │ └── view.feature │ │ ├── h5p │ │ │ ├── assets │ │ │ │ ├── fonts │ │ │ │ │ ├── h5p-core-30.eot │ │ │ │ │ ├── h5p-core-30.svg │ │ │ │ │ ├── h5p-core-30.ttf │ │ │ │ │ ├── h5p-core-30.woff │ │ │ │ │ ├── h5p-core-30.woff2 │ │ │ │ │ ├── h5p-hub-publish.eot │ │ │ │ │ ├── h5p-hub-publish.svg │ │ │ │ │ ├── h5p-hub-publish.ttf │ │ │ │ │ ├── h5p-hub-publish.woff │ │ │ │ │ └── open-sans │ │ │ │ │ │ ├── LICENSE-2.0.txt │ │ │ │ │ │ ├── opensans-400-600-700-v28-cyrillic-ext.woff2 │ │ │ │ │ │ ├── opensans-400-600-700-v28-cyrillic.woff2 │ │ │ │ │ │ ├── opensans-400-600-700-v28-greek-ext.woff2 │ │ │ │ │ │ ├── opensans-400-600-700-v28-greek.woff2 │ │ │ │ │ │ ├── opensans-400-600-700-v28-hebrew.woff2 │ │ │ │ │ │ ├── opensans-400-600-700-v28-latin-ext.woff2 │ │ │ │ │ │ ├── opensans-400-600-700-v28-latin.woff2 │ │ │ │ │ │ ├── opensans-400-600-700-v28-vietnamese.woff2 │ │ │ │ │ │ ├── opensans-italic-400-600-700-v28-cyrillic-ext.woff2 │ │ │ │ │ │ ├── opensans-italic-400-600-700-v28-cyrillic.woff2 │ │ │ │ │ │ ├── opensans-italic-400-600-700-v28-greek-ext.woff2 │ │ │ │ │ │ ├── opensans-italic-400-600-700-v28-greek.woff2 │ │ │ │ │ │ ├── opensans-italic-400-600-700-v28-hebrew.woff2 │ │ │ │ │ │ ├── opensans-italic-400-600-700-v28-latin-ext.woff2 │ │ │ │ │ │ ├── opensans-italic-400-600-700-v28-latin.woff2 │ │ │ │ │ │ └── opensans-italic-400-600-700-v28-vietnamese.woff2 │ │ │ │ ├── js │ │ │ │ │ ├── h5p-action-bar.js │ │ │ │ │ ├── h5p-confirmation-dialog.js │ │ │ │ │ ├── h5p-content-type.js │ │ │ │ │ ├── h5p-content-upgrade-process.js │ │ │ │ │ ├── h5p-content-upgrade-worker.js │ │ │ │ │ ├── h5p-content-upgrade.js │ │ │ │ │ ├── h5p-data-view.js │ │ │ │ │ ├── h5p-display-options.js │ │ │ │ │ ├── h5p-embed.js │ │ │ │ │ ├── h5p-event-dispatcher.js │ │ │ │ │ ├── h5p-hub-registration.js │ │ │ │ │ ├── h5p-hub-sharing.js │ │ │ │ │ ├── h5p-library-details.js │ │ │ │ │ ├── h5p-library-list.js │ │ │ │ │ ├── h5p-resizer.js │ │ │ │ │ ├── h5p-tooltip.js │ │ │ │ │ ├── h5p-utils.js │ │ │ │ │ ├── h5p-version.js │ │ │ │ │ ├── h5p-x-api-event.js │ │ │ │ │ ├── h5p-x-api.js │ │ │ │ │ ├── h5p.js │ │ │ │ │ ├── jquery.js │ │ │ │ │ ├── request-queue.js │ │ │ │ │ └── settings │ │ │ │ │ │ └── h5p-disable-hub.js │ │ │ │ ├── moodle │ │ │ │ │ └── js │ │ │ │ │ │ ├── embed.js │ │ │ │ │ │ ├── h5p_overrides.js │ │ │ │ │ │ └── params.js │ │ │ │ ├── readme_moodle.txt │ │ │ │ └── styles │ │ │ │ │ ├── font-open-sans.css │ │ │ │ │ ├── h5p-admin.css │ │ │ │ │ ├── h5p-confirmation-dialog.css │ │ │ │ │ ├── h5p-core-button.css │ │ │ │ │ ├── h5p-hub-registration.css │ │ │ │ │ ├── h5p-hub-sharing.css │ │ │ │ │ ├── h5p-table.css │ │ │ │ │ ├── h5p-tooltip.css │ │ │ │ │ └── h5p.css │ │ │ ├── classes │ │ │ │ ├── content-validator.ts │ │ │ │ ├── core.ts │ │ │ │ ├── errors │ │ │ │ │ └── missing-dependencies-error.ts │ │ │ │ ├── file-storage.ts │ │ │ │ ├── framework.ts │ │ │ │ ├── helper.ts │ │ │ │ ├── metadata.ts │ │ │ │ ├── player.ts │ │ │ │ ├── storage.ts │ │ │ │ └── validator.ts │ │ │ ├── components │ │ │ │ ├── h5p-iframe │ │ │ │ │ ├── core-h5p-iframe.html │ │ │ │ │ └── h5p-iframe.ts │ │ │ │ └── h5p-player │ │ │ │ │ ├── core-h5p-player.html │ │ │ │ │ ├── h5p-player.scss │ │ │ │ │ └── h5p-player.ts │ │ │ ├── h5p.module.ts │ │ │ ├── lang.json │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── h5p.ts │ │ │ │ ├── h5p.ts │ │ │ │ └── handlers │ │ │ │ │ └── pluginfile.ts │ │ │ └── tests │ │ │ │ └── framework.test.ts │ │ ├── login │ │ │ ├── components │ │ │ │ ├── exceeded-attempts │ │ │ │ │ ├── exceeded-attempts.html │ │ │ │ │ ├── exceeded-attempts.scss │ │ │ │ │ └── exceeded-attempts.ts │ │ │ │ ├── identity-provider │ │ │ │ │ ├── identity-provider.html │ │ │ │ │ └── identity-provider.ts │ │ │ │ ├── login-methods │ │ │ │ │ ├── login-methods.html │ │ │ │ │ └── login-methods.ts │ │ │ │ ├── site-help │ │ │ │ │ ├── site-help.html │ │ │ │ │ ├── site-help.scss │ │ │ │ │ └── site-help.ts │ │ │ │ ├── site-onboarding │ │ │ │ │ ├── site-onboarding.html │ │ │ │ │ ├── site-onboarding.scss │ │ │ │ │ └── site-onboarding.ts │ │ │ │ └── sites-modal │ │ │ │ │ ├── sites-modal.html │ │ │ │ │ └── sites-modal.ts │ │ │ ├── constants.ts │ │ │ ├── guards │ │ │ │ └── has-sites.ts │ │ │ ├── lang.json │ │ │ ├── login.module.ts │ │ │ ├── login.scss │ │ │ ├── pages │ │ │ │ ├── change-password │ │ │ │ │ ├── change-password.html │ │ │ │ │ └── change-password.ts │ │ │ │ ├── credentials │ │ │ │ │ ├── credentials.html │ │ │ │ │ └── credentials.ts │ │ │ │ ├── email-signup │ │ │ │ │ ├── email-signup.html │ │ │ │ │ └── email-signup.ts │ │ │ │ ├── forgotten-password │ │ │ │ │ ├── forgotten-password.html │ │ │ │ │ └── forgotten-password.ts │ │ │ │ ├── logout │ │ │ │ │ ├── logout.html │ │ │ │ │ └── logout.ts │ │ │ │ ├── reconnect │ │ │ │ │ ├── reconnect.html │ │ │ │ │ └── reconnect.ts │ │ │ │ ├── site │ │ │ │ │ ├── site.html │ │ │ │ │ ├── site.scss │ │ │ │ │ └── site.ts │ │ │ │ └── sites │ │ │ │ │ ├── sites.html │ │ │ │ │ └── sites.ts │ │ │ ├── services │ │ │ │ ├── handlers │ │ │ │ │ └── cron.ts │ │ │ │ └── login-helper.ts │ │ │ └── tests │ │ │ │ ├── behat │ │ │ │ ├── basic_usage.feature │ │ │ │ ├── demo_login.feature │ │ │ │ ├── logout.feature │ │ │ │ ├── showloginform_setting.feature │ │ │ │ ├── signup.feature │ │ │ │ └── snapshots │ │ │ │ │ ├── test-basic-usage-of-login-in-app-add-a-new-account-in-the-app--site-name-in-displayed-when-adding-a-new-account_13.png │ │ │ │ │ ├── test-basic-usage-of-login-in-app-add-a-new-account-in-the-app--site-name-in-displayed-when-adding-a-new-account_9.png │ │ │ │ │ ├── test-basic-usage-of-login-in-app-shows-sites-list_8.png │ │ │ │ │ ├── test-showloginform-setting-in-the-app-login_10.png │ │ │ │ │ └── test-showloginform-setting-in-the-app-reconnect_11.png │ │ │ │ └── credentials.test.ts │ │ ├── mainmenu │ │ │ ├── classes │ │ │ │ └── deep-link-manager.ts │ │ │ ├── components │ │ │ │ ├── user-menu-button │ │ │ │ │ ├── user-menu-button.html │ │ │ │ │ ├── user-menu-button.scss │ │ │ │ │ └── user-menu-button.ts │ │ │ │ ├── user-menu-tour │ │ │ │ │ ├── user-menu-tour.html │ │ │ │ │ ├── user-menu-tour.scss │ │ │ │ │ └── user-menu-tour.ts │ │ │ │ └── user-menu │ │ │ │ │ ├── user-menu.html │ │ │ │ │ ├── user-menu.scss │ │ │ │ │ └── user-menu.ts │ │ │ ├── constants.ts │ │ │ ├── guards │ │ │ │ └── auth.ts │ │ │ ├── lang.json │ │ │ ├── mainmenu-home-lazy.module.ts │ │ │ ├── mainmenu-home-routing.module.ts │ │ │ ├── mainmenu-lazy.module.ts │ │ │ ├── mainmenu-more-lazy.module.ts │ │ │ ├── mainmenu-routing.module.ts │ │ │ ├── mainmenu-tab-routing.module.ts │ │ │ ├── mainmenu.module.ts │ │ │ ├── pages │ │ │ │ ├── home │ │ │ │ │ ├── home.html │ │ │ │ │ └── home.ts │ │ │ │ ├── menu │ │ │ │ │ ├── menu.html │ │ │ │ │ ├── menu.scss │ │ │ │ │ └── menu.ts │ │ │ │ ├── more │ │ │ │ │ ├── more.html │ │ │ │ │ ├── more.scss │ │ │ │ │ └── more.ts │ │ │ │ └── reload │ │ │ │ │ ├── reload.html │ │ │ │ │ └── reload.ts │ │ │ ├── services │ │ │ │ ├── handlers │ │ │ │ │ └── mainmenu.ts │ │ │ │ ├── home-delegate.ts │ │ │ │ ├── mainmenu-delegate.ts │ │ │ │ └── mainmenu.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── mainmenu.feature │ │ ├── native │ │ │ ├── native.module.ts │ │ │ ├── plugins │ │ │ │ ├── chooser.ts │ │ │ │ ├── index.ts │ │ │ │ ├── push.ts │ │ │ │ ├── qrscanner.ts │ │ │ │ └── zip.ts │ │ │ └── services │ │ │ │ └── native.ts │ │ ├── policy │ │ │ ├── components │ │ │ │ └── policy-modal │ │ │ │ │ ├── policy-modal.html │ │ │ │ │ └── policy-modal.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── acceptances │ │ │ │ │ ├── acceptances.html │ │ │ │ │ ├── acceptances.scss │ │ │ │ │ └── acceptances.ts │ │ │ │ └── site-policy │ │ │ │ │ ├── site-policy.html │ │ │ │ │ ├── site-policy.scss │ │ │ │ │ └── site-policy.ts │ │ │ ├── policy.module.ts │ │ │ ├── services │ │ │ │ ├── handlers │ │ │ │ │ ├── acceptances-link.ts │ │ │ │ │ └── user.ts │ │ │ │ └── policy.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── consent.feature │ │ │ │ └── contactdpo.feature │ │ ├── pushnotifications │ │ │ ├── pushnotifications.module.ts │ │ │ └── services │ │ │ │ ├── database │ │ │ │ └── pushnotifications.ts │ │ │ │ ├── handlers │ │ │ │ ├── register-cron.ts │ │ │ │ └── unregister-cron.ts │ │ │ │ ├── push-delegate.ts │ │ │ │ └── pushnotifications.ts │ │ ├── question │ │ │ ├── classes │ │ │ │ ├── base-behaviour-handler.ts │ │ │ │ ├── base-question-component.ts │ │ │ │ └── base-question-handler.ts │ │ │ ├── components │ │ │ │ └── question │ │ │ │ │ ├── core-question.html │ │ │ │ │ └── question.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── question.module.ts │ │ │ ├── question.scss │ │ │ └── services │ │ │ │ ├── behaviour-delegate.ts │ │ │ │ ├── database │ │ │ │ └── question.ts │ │ │ │ ├── handlers │ │ │ │ ├── default-behaviour.ts │ │ │ │ └── default-question.ts │ │ │ │ ├── question-delegate.ts │ │ │ │ ├── question-helper.ts │ │ │ │ └── question.ts │ │ ├── rating │ │ │ ├── components │ │ │ │ ├── aggregate │ │ │ │ │ ├── aggregate.ts │ │ │ │ │ └── core-rating-aggregate.html │ │ │ │ ├── rate │ │ │ │ │ ├── core-rating-rate.html │ │ │ │ │ └── rate.ts │ │ │ │ └── ratings │ │ │ │ │ ├── ratings-modal.html │ │ │ │ │ └── ratings.ts │ │ │ ├── lang.json │ │ │ ├── rating.module.ts │ │ │ └── services │ │ │ │ ├── database │ │ │ │ └── rating.ts │ │ │ │ ├── rating-offline.ts │ │ │ │ ├── rating-sync.ts │ │ │ │ └── rating.ts │ │ ├── reminders │ │ │ ├── components │ │ │ │ ├── date │ │ │ │ │ ├── date.html │ │ │ │ │ ├── date.scss │ │ │ │ │ └── date.ts │ │ │ │ ├── set-button │ │ │ │ │ ├── set-button.html │ │ │ │ │ └── set-button.ts │ │ │ │ ├── set-reminder-custom │ │ │ │ │ ├── set-reminder-custom.html │ │ │ │ │ └── set-reminder-custom.ts │ │ │ │ └── set-reminder-menu │ │ │ │ │ ├── set-reminder-menu.html │ │ │ │ │ ├── set-reminder-menu.scss │ │ │ │ │ └── set-reminder-menu.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── reminders.module.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── reminders.ts │ │ │ │ └── reminders.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── activity_reminders.feature │ │ │ │ └── course_reminders.feature │ │ ├── reportbuilder │ │ │ ├── classes │ │ │ │ └── reports-source.ts │ │ │ ├── components │ │ │ │ ├── report-column │ │ │ │ │ ├── report-column.html │ │ │ │ │ ├── report-column.scss │ │ │ │ │ └── report-column.ts │ │ │ │ ├── report-detail │ │ │ │ │ ├── report-detail.html │ │ │ │ │ ├── report-detail.scss │ │ │ │ │ └── report-detail.ts │ │ │ │ └── report-summary │ │ │ │ │ ├── report-summary.html │ │ │ │ │ ├── report-summary.scss │ │ │ │ │ └── report-summary.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── list │ │ │ │ │ ├── list.html │ │ │ │ │ └── list.ts │ │ │ │ └── report │ │ │ │ │ ├── report.html │ │ │ │ │ └── report.ts │ │ │ ├── reportbuilder.module.ts │ │ │ ├── services │ │ │ │ ├── handlers │ │ │ │ │ ├── reportbuilder-link.ts │ │ │ │ │ └── reportbuilder.ts │ │ │ │ └── reportbuilder.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── reportbuilder.feature │ │ ├── search │ │ │ ├── classes │ │ │ │ └── global-search-results-source.ts │ │ │ ├── components │ │ │ │ ├── global-search-filters │ │ │ │ │ ├── global-search-filters.component.ts │ │ │ │ │ ├── global-search-filters.html │ │ │ │ │ └── global-search-filters.scss │ │ │ │ ├── global-search-result │ │ │ │ │ ├── global-search-result.html │ │ │ │ │ ├── global-search-result.scss │ │ │ │ │ └── global-search-result.ts │ │ │ │ └── search-box │ │ │ │ │ ├── core-search-box.html │ │ │ │ │ ├── search-box.scss │ │ │ │ │ └── search-box.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── global-search │ │ │ │ │ ├── global-search.html │ │ │ │ │ └── global-search.ts │ │ │ ├── search-lazy.module.ts │ │ │ ├── search.module.ts │ │ │ ├── services │ │ │ │ ├── global-search.ts │ │ │ │ ├── handlers │ │ │ │ │ ├── global-search-link.ts │ │ │ │ │ └── mainmenu.ts │ │ │ │ ├── search-history-db.ts │ │ │ │ └── search-history.service.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── global-search.feature │ │ ├── settings │ │ │ ├── classes │ │ │ │ ├── settings-handlers-source.ts │ │ │ │ └── settings-sections-source.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── about │ │ │ │ │ ├── about.html │ │ │ │ │ ├── about.scss │ │ │ │ │ └── about.ts │ │ │ │ ├── dev │ │ │ │ │ ├── dev.html │ │ │ │ │ └── dev.ts │ │ │ │ ├── deviceinfo │ │ │ │ │ ├── deviceinfo.html │ │ │ │ │ ├── deviceinfo.scss │ │ │ │ │ └── deviceinfo.ts │ │ │ │ ├── error-log │ │ │ │ │ ├── error-log.html │ │ │ │ │ └── error-log.ts │ │ │ │ ├── general │ │ │ │ │ ├── general.html │ │ │ │ │ ├── general.scss │ │ │ │ │ └── general.ts │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ ├── licenses │ │ │ │ │ ├── licenses.html │ │ │ │ │ └── licenses.ts │ │ │ │ ├── site │ │ │ │ │ ├── site.html │ │ │ │ │ └── site.ts │ │ │ │ ├── space-usage │ │ │ │ │ ├── space-usage.html │ │ │ │ │ └── space-usage.ts │ │ │ │ └── synchronization │ │ │ │ │ ├── synchronization.html │ │ │ │ │ └── synchronization.ts │ │ │ ├── services │ │ │ │ ├── settings-delegate.ts │ │ │ │ └── settings-helper.ts │ │ │ ├── settings-site-lazy.module.ts │ │ │ ├── settings-site-routing.module.ts │ │ │ ├── settings.module.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ ├── settings_navigation.feature │ │ │ │ └── sync.feature │ │ ├── sharedfiles │ │ │ ├── components │ │ │ │ ├── list-modal │ │ │ │ │ ├── list-modal.html │ │ │ │ │ └── list-modal.ts │ │ │ │ └── list │ │ │ │ │ ├── list.html │ │ │ │ │ └── list.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── choose-site │ │ │ │ │ ├── choose-site.html │ │ │ │ │ └── choose-site.ts │ │ │ │ └── list │ │ │ │ │ ├── list.html │ │ │ │ │ └── list.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── sharedfiles.ts │ │ │ │ ├── handlers │ │ │ │ │ ├── settings.ts │ │ │ │ │ └── upload.ts │ │ │ │ ├── sharedfiles-helper.ts │ │ │ │ └── sharedfiles.ts │ │ │ └── sharedfiles.module.ts │ │ ├── sitehome │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── index │ │ │ │ │ ├── index.html │ │ │ │ │ ├── index.scss │ │ │ │ │ └── index.ts │ │ │ ├── services │ │ │ │ ├── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ └── sitehome-home.ts │ │ │ │ └── sitehome.ts │ │ │ ├── sitehome.module.ts │ │ │ └── tests │ │ │ │ └── links.test.ts │ │ ├── siteplugins │ │ │ ├── classes │ │ │ │ ├── call-ws-click-directive.ts │ │ │ │ ├── call-ws-directive.ts │ │ │ │ ├── compile-init-component.ts │ │ │ │ └── handlers │ │ │ │ │ ├── assign-feedback-handler.ts │ │ │ │ │ ├── assign-submission-handler.ts │ │ │ │ │ ├── base-handler.ts │ │ │ │ │ ├── block-handler.ts │ │ │ │ │ ├── course-format-handler.ts │ │ │ │ │ ├── course-option-handler.ts │ │ │ │ │ ├── enrol-handler.ts │ │ │ │ │ ├── main-menu-handler.ts │ │ │ │ │ ├── main-menu-home-handler.ts │ │ │ │ │ ├── message-output-handler.ts │ │ │ │ │ ├── module-handler.ts │ │ │ │ │ ├── module-prefetch-handler.ts │ │ │ │ │ ├── question-behaviour-handler.ts │ │ │ │ │ ├── question-handler.ts │ │ │ │ │ ├── quiz-access-rule-handler.ts │ │ │ │ │ ├── settings-handler.ts │ │ │ │ │ ├── user-handler.ts │ │ │ │ │ ├── user-profile-field-handler.ts │ │ │ │ │ └── workshop-assessment-strategy-handler.ts │ │ │ ├── components │ │ │ │ ├── assign-feedback │ │ │ │ │ ├── assign-feedback.ts │ │ │ │ │ └── core-siteplugins-assign-feedback.html │ │ │ │ ├── assign-submission │ │ │ │ │ ├── assign-submission.ts │ │ │ │ │ └── core-siteplugins-assign-submission.html │ │ │ │ ├── block │ │ │ │ │ ├── block.ts │ │ │ │ │ └── core-siteplugins-block.html │ │ │ │ ├── course-format │ │ │ │ │ ├── core-siteplugins-course-format.html │ │ │ │ │ └── course-format.ts │ │ │ │ ├── module-index │ │ │ │ │ ├── core-siteplugins-module-index.html │ │ │ │ │ └── module-index.ts │ │ │ │ ├── only-title-block │ │ │ │ │ ├── core-siteplugins-only-title-block.html │ │ │ │ │ └── only-title-block.ts │ │ │ │ ├── plugin-content │ │ │ │ │ ├── core-siteplugins-plugin-content.html │ │ │ │ │ └── plugin-content.ts │ │ │ │ ├── question-behaviour │ │ │ │ │ ├── core-siteplugins-question-behaviour.html │ │ │ │ │ └── question-behaviour.ts │ │ │ │ ├── question │ │ │ │ │ ├── core-siteplugins-question.html │ │ │ │ │ └── question.ts │ │ │ │ ├── quiz-access-rule │ │ │ │ │ ├── core-siteplugins-quiz-access-rule.html │ │ │ │ │ └── quiz-access-rule.ts │ │ │ │ ├── user-profile-field │ │ │ │ │ ├── core-siteplugins-user-profile-field.html │ │ │ │ │ └── user-profile-field.ts │ │ │ │ └── workshop-assessment-strategy │ │ │ │ │ ├── core-siteplugins-workshop-assessment-strategy.html │ │ │ │ │ └── workshop-assessment-strategy.ts │ │ │ ├── constants.ts │ │ │ ├── directives │ │ │ │ ├── call-ws-new-content.ts │ │ │ │ ├── call-ws-on-load.ts │ │ │ │ ├── call-ws.ts │ │ │ │ └── new-content.ts │ │ │ ├── pages │ │ │ │ ├── course-option │ │ │ │ │ ├── core-siteplugins-course-option.html │ │ │ │ │ └── course-option.ts │ │ │ │ ├── module-index │ │ │ │ │ ├── module-index.html │ │ │ │ │ └── module-index.ts │ │ │ │ └── plugin │ │ │ │ │ ├── plugin.html │ │ │ │ │ └── plugin.ts │ │ │ ├── services │ │ │ │ ├── siteplugins-init.ts │ │ │ │ └── siteplugins.ts │ │ │ ├── siteplugins.module.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── plugins.feature │ │ ├── styles │ │ │ ├── services │ │ │ │ └── styles.ts │ │ │ └── styles.module.ts │ │ ├── tag │ │ │ ├── components │ │ │ │ ├── feed │ │ │ │ │ ├── core-tag-feed.html │ │ │ │ │ └── feed.ts │ │ │ │ └── list │ │ │ │ │ ├── core-tag-list.html │ │ │ │ │ ├── list.scss │ │ │ │ │ └── list.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── index-area │ │ │ │ │ ├── index-area.html │ │ │ │ │ └── index-area.ts │ │ │ │ ├── index │ │ │ │ │ ├── index.html │ │ │ │ │ └── index.ts │ │ │ │ └── search │ │ │ │ │ ├── search.html │ │ │ │ │ ├── search.scss │ │ │ │ │ └── search.ts │ │ │ ├── services │ │ │ │ ├── handlers │ │ │ │ │ ├── index-link.ts │ │ │ │ │ ├── mainmenu.ts │ │ │ │ │ └── search-link.ts │ │ │ │ ├── tag-area-delegate.ts │ │ │ │ ├── tag-helper.ts │ │ │ │ └── tag.ts │ │ │ ├── tag-lazy.module.ts │ │ │ ├── tag.module.ts │ │ │ └── tests │ │ │ │ └── behat │ │ │ │ └── navigation.feature │ │ ├── user │ │ │ ├── classes │ │ │ │ ├── base-profilefield-component.ts │ │ │ │ ├── participants-source.ts │ │ │ │ └── support │ │ │ │ │ ├── authenticated-support-config.ts │ │ │ │ │ ├── guest-support-config.ts │ │ │ │ │ ├── null-support-config.ts │ │ │ │ │ └── support-config.ts │ │ │ ├── components │ │ │ │ ├── tag-area │ │ │ │ │ ├── core-user-tag-area.html │ │ │ │ │ └── tag-area.ts │ │ │ │ └── user-profile-field │ │ │ │ │ ├── core-user-profile-field.html │ │ │ │ │ └── user-profile-field.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ ├── about │ │ │ │ │ ├── about.html │ │ │ │ │ ├── about.scss │ │ │ │ │ └── about.ts │ │ │ │ ├── complete-profile │ │ │ │ │ ├── complete-profile.html │ │ │ │ │ └── complete-profile.ts │ │ │ │ ├── participants │ │ │ │ │ ├── participants.html │ │ │ │ │ └── participants.ts │ │ │ │ └── profile │ │ │ │ │ ├── profile.html │ │ │ │ │ ├── profile.scss │ │ │ │ │ └── profile.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── user.ts │ │ │ │ ├── handlers │ │ │ │ │ ├── course-option.ts │ │ │ │ │ ├── profile-link.ts │ │ │ │ │ ├── profile-mail.ts │ │ │ │ │ ├── sync-cron.ts │ │ │ │ │ └── tag-area.ts │ │ │ │ ├── support.ts │ │ │ │ ├── user-delegate.ts │ │ │ │ ├── user-helper.ts │ │ │ │ ├── user-offline.ts │ │ │ │ ├── user-profile-field-delegate.ts │ │ │ │ ├── user-sync.ts │ │ │ │ └── user.ts │ │ │ ├── tests │ │ │ │ ├── behat │ │ │ │ │ ├── basic_usage.feature │ │ │ │ │ ├── participants.feature │ │ │ │ │ ├── snapshots │ │ │ │ │ │ └── test-basic-usage-of-user-features-view-profile_22.png │ │ │ │ │ └── support.feature │ │ │ │ └── user-helper.test.ts │ │ │ └── user.module.ts │ │ ├── usertours │ │ │ ├── classes │ │ │ │ ├── focus-layout.ts │ │ │ │ └── popover-layout.ts │ │ │ ├── components │ │ │ │ └── user-tour │ │ │ │ │ ├── core-user-tours-user-tour.html │ │ │ │ │ ├── user-tour.scss │ │ │ │ │ └── user-tour.ts │ │ │ ├── services │ │ │ │ ├── database │ │ │ │ │ └── user-tours.ts │ │ │ │ └── user-tours.ts │ │ │ ├── tests │ │ │ │ └── behat │ │ │ │ │ └── usertours.feature │ │ │ └── user-tours.module.ts │ │ ├── viewer │ │ │ ├── components │ │ │ │ ├── image │ │ │ │ │ ├── image.html │ │ │ │ │ ├── image.scss │ │ │ │ │ └── image.ts │ │ │ │ ├── qr-scanner │ │ │ │ │ ├── qr-scanner.html │ │ │ │ │ └── qr-scanner.ts │ │ │ │ ├── reading-mode-settings │ │ │ │ │ ├── reading-mode-settings.html │ │ │ │ │ ├── reading-mode-settings.scss │ │ │ │ │ └── reading-mode-settings.ts │ │ │ │ └── text │ │ │ │ │ ├── text.html │ │ │ │ │ ├── text.scss │ │ │ │ │ └── text.ts │ │ │ ├── constants.ts │ │ │ ├── lang.json │ │ │ ├── pages │ │ │ │ └── iframe │ │ │ │ │ ├── iframe.html │ │ │ │ │ └── iframe.ts │ │ │ ├── services │ │ │ │ └── viewer.ts │ │ │ └── viewer.module.ts │ │ └── xapi │ │ │ ├── classes │ │ │ ├── iri.ts │ │ │ └── item-agent.ts │ │ │ ├── services │ │ │ ├── database │ │ │ │ └── xapi.ts │ │ │ ├── offline.ts │ │ │ └── xapi.ts │ │ │ └── xapi.module.ts │ ├── guards │ │ ├── can-leave.ts │ │ └── redirect.ts │ ├── initializers │ │ ├── app.ts │ │ ├── clear-tmp-folder.ts │ │ ├── consume-storage-redirect.ts │ │ ├── index.ts │ │ ├── initialize-databases.ts │ │ ├── initialize-icons.ts │ │ ├── initialize-services.ts │ │ ├── initialize-urlscheme.ts │ │ ├── initialize-user-agent.ts │ │ ├── inject-ios-scripts.ts │ │ ├── override-window-open.ts │ │ ├── prepare-devtools.ts │ │ ├── prepare-inapp-browser.ts │ │ ├── restore-session.ts │ │ ├── subscribe-to-keyboard-events.ts │ │ ├── wait-for-platform-ready.ts │ │ ├── watch-network.ts │ │ └── watch-screen-status.ts │ ├── lang.json │ ├── pipes │ │ ├── bytes-to-size.ts │ │ ├── create-links.ts │ │ ├── date-day-or-time.ts │ │ ├── duration.ts │ │ ├── format-date.ts │ │ ├── no-period.ts │ │ ├── no-tags.ts │ │ ├── pipes.module.ts │ │ ├── seconds-to-hms.ts │ │ ├── time-ago.ts │ │ └── times.ts │ ├── services │ │ ├── analytics.ts │ │ ├── app-db.ts │ │ ├── app.ts │ │ ├── cache-manager.ts │ │ ├── config.ts │ │ ├── cron.ts │ │ ├── database │ │ │ ├── app.ts │ │ │ ├── config.ts │ │ │ ├── cron.ts │ │ │ ├── filepool.ts │ │ │ ├── index.ts │ │ │ ├── local-notifications.ts │ │ │ ├── sites.ts │ │ │ ├── storage.ts │ │ │ └── sync.ts │ │ ├── db.ts │ │ ├── error-accordion.ts │ │ ├── error-helper.ts │ │ ├── file-helper.ts │ │ ├── file-session.ts │ │ ├── file.ts │ │ ├── filepool.ts │ │ ├── geolocation.ts │ │ ├── groups.ts │ │ ├── handlers │ │ │ └── site-info-cron.ts │ │ ├── lang.ts │ │ ├── local-notifications.ts │ │ ├── navigator.ts │ │ ├── network.ts │ │ ├── overlays │ │ │ ├── alerts.ts │ │ │ ├── loadings.ts │ │ │ ├── modals.ts │ │ │ ├── popovers.ts │ │ │ ├── prompts.ts │ │ │ └── toasts.ts │ │ ├── platform.ts │ │ ├── plugin-file-delegate.ts │ │ ├── qrscan.ts │ │ ├── referrer.ts │ │ ├── screen.ts │ │ ├── sites-factory.ts │ │ ├── sites.ts │ │ ├── storage.ts │ │ ├── sync.ts │ │ ├── tests │ │ │ ├── lang.test.ts │ │ │ ├── navigator.test.ts │ │ │ ├── overlays │ │ │ │ └── alerts.test.ts │ │ │ ├── plugin-file-delegate.test.ts │ │ │ └── sites.test.ts │ │ ├── update-manager.ts │ │ ├── urlschemes.ts │ │ ├── utils │ │ │ ├── dom.ts │ │ │ ├── iframe.ts │ │ │ ├── mimetype.ts │ │ │ ├── text.ts │ │ │ ├── time.ts │ │ │ ├── url.ts │ │ │ └── utils.ts │ │ └── ws.ts │ ├── shared.module.ts │ ├── singletons │ │ ├── angular.ts │ │ ├── array.ts │ │ ├── bootstrap.ts │ │ ├── browser.ts │ │ ├── colors.ts │ │ ├── countries.ts │ │ ├── directives-registry.ts │ │ ├── dom.ts │ │ ├── error-logs.ts │ │ ├── events.ts │ │ ├── file-utils.ts │ │ ├── form.ts │ │ ├── html-classes.ts │ │ ├── icons.ts │ │ ├── iframe.ts │ │ ├── index.ts │ │ ├── keyboard.ts │ │ ├── locutus.ts │ │ ├── logger.ts │ │ ├── math.ts │ │ ├── media.ts │ │ ├── mimetype.ts │ │ ├── object.ts │ │ ├── opener.ts │ │ ├── path.ts │ │ ├── promise-utils.ts │ │ ├── redirects.ts │ │ ├── sso.ts │ │ ├── subscriptions.ts │ │ ├── swiper.ts │ │ ├── tests │ │ │ ├── array.test.ts │ │ │ ├── browser.test.ts │ │ │ ├── colors.test.ts │ │ │ ├── directives-registry.test.ts │ │ │ ├── dom.test.ts │ │ │ ├── events.test.ts │ │ │ ├── form.test.ts │ │ │ ├── icons.test.ts │ │ │ ├── locutus.test.ts │ │ │ ├── logger.test.ts │ │ │ ├── math.test.ts │ │ │ ├── object.test.ts │ │ │ ├── path.test.ts │ │ │ ├── singletons.test.ts │ │ │ ├── stubs.ts │ │ │ ├── subscriptions.test.ts │ │ │ ├── text.test.ts │ │ │ ├── time.test.ts │ │ │ └── url.test.ts │ │ ├── text.ts │ │ ├── time.ts │ │ ├── url.ts │ │ ├── utils.ts │ │ ├── wait.ts │ │ └── window.ts │ ├── tests │ │ └── behat │ │ │ ├── customlangstrings.feature │ │ │ ├── fontawesome.feature │ │ │ ├── navigation_activities.feature │ │ │ ├── navigation_deeplinks.feature │ │ │ ├── navigation_externallinks.feature │ │ │ ├── navigation_gestures.feature │ │ │ ├── navigation_splitview.feature │ │ │ ├── open_files.feature │ │ │ ├── runtime.feature │ │ │ └── snapshots │ │ │ ├── fontawesome-icons-are-correctly-shown-in-the-app-view-fontawesome-icons-in-the-app_7.png │ │ │ └── it-navigates-properly-in-pages-with-a-split-view-component-navigate-in-grades-tab-on-tablet_15.png │ ├── transforms │ │ └── boolean.ts │ └── utils │ │ ├── async-instance.ts │ │ ├── create-html-element.ts │ │ ├── dayjs.ts │ │ ├── fix-aria-hidden.ts │ │ ├── inference.d.ts │ │ ├── lazy-map.ts │ │ ├── refresh-context.ts │ │ ├── rxjs.ts │ │ ├── signals.ts │ │ ├── style-helpers.ts │ │ ├── tests │ │ ├── async-instance.test.ts │ │ └── rxjs.test.ts │ │ └── types.ts ├── index.html ├── main.ts ├── polyfills.ts ├── testing │ ├── services │ │ ├── behat-blocking.ts │ │ ├── behat-dom.ts │ │ └── behat-runtime.ts │ ├── setup.ts │ ├── stubs │ │ └── directives │ │ │ └── core-external-content.ts │ ├── testing.module.prod.ts │ ├── testing.module.ts │ └── utils.ts ├── theme │ ├── components │ │ ├── atto.scss │ │ ├── bootstrap │ │ │ ├── _alert.scss │ │ │ ├── _badge.scss │ │ │ ├── _buttons.scss │ │ │ ├── _card.scss │ │ │ ├── _close.scss │ │ │ ├── _forms.scss │ │ │ ├── _functions.scss │ │ │ ├── _grid.scss │ │ │ ├── _media.scss │ │ │ ├── _mixins.scss │ │ │ ├── _reboot.scss │ │ │ ├── _utilities.scss │ │ │ ├── _variables.scss │ │ │ ├── bootstrap.scss │ │ │ ├── bootstrap_database.scss │ │ │ ├── bs5-bridge.scss │ │ │ ├── mixins │ │ │ │ ├── _alert.scss │ │ │ │ ├── _background-variant.scss │ │ │ │ ├── _badge.scss │ │ │ │ ├── _border-radius.scss │ │ │ │ ├── _box-shadow.scss │ │ │ │ ├── _breakpoints.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _caret.scss │ │ │ │ ├── _clearfix.scss │ │ │ │ ├── _deprecate.scss │ │ │ │ ├── _float.scss │ │ │ │ ├── _forms.scss │ │ │ │ ├── _gradients.scss │ │ │ │ ├── _grid copy.scss │ │ │ │ ├── _grid-framework.scss │ │ │ │ ├── _grid.scss │ │ │ │ ├── _hover.scss │ │ │ │ ├── _image.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _lists.scss │ │ │ │ ├── _nav-divider.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _reset-text.scss │ │ │ │ ├── _resize.scss │ │ │ │ ├── _screen-reader.scss │ │ │ │ ├── _size.scss │ │ │ │ ├── _table-row.scss │ │ │ │ ├── _text-emphasis.scss │ │ │ │ ├── _text-hide.scss │ │ │ │ ├── _text-truncate.scss │ │ │ │ ├── _transition.scss │ │ │ │ └── _visibility.scss │ │ │ ├── utilities │ │ │ │ ├── _align.scss │ │ │ │ ├── _borders.scss │ │ │ │ ├── _flex.scss │ │ │ │ ├── _float.scss │ │ │ │ ├── _screenreaders.scss │ │ │ │ ├── _spacing.scss │ │ │ │ ├── _text.scss │ │ │ │ └── _visibility.scss │ │ │ └── vendor │ │ │ │ └── _rfs.scss │ │ ├── collapsible-header.scss │ │ ├── collapsible-item.scss │ │ ├── discussion.scss │ │ ├── error-accordion.scss │ │ ├── format-text.scss │ │ ├── iframe.scss │ │ ├── ion-accordion.scss │ │ ├── ion-action-sheet.scss │ │ ├── ion-alert.scss │ │ ├── ion-avatar.scss │ │ ├── ion-back-button.scss │ │ ├── ion-badge.scss │ │ ├── ion-button.scss │ │ ├── ion-card.scss │ │ ├── ion-checkbox.scss │ │ ├── ion-chip.scss │ │ ├── ion-content.scss │ │ ├── ion-datetime.scss │ │ ├── ion-fab.scss │ │ ├── ion-header.scss │ │ ├── ion-icon.scss │ │ ├── ion-input.scss │ │ ├── ion-item-divider.scss │ │ ├── ion-item.scss │ │ ├── ion-label.scss │ │ ├── ion-loading.scss │ │ ├── ion-modal.scss │ │ ├── ion-note.scss │ │ ├── ion-popover.scss │ │ ├── ion-radio.scss │ │ ├── ion-searchbar.scss │ │ ├── ion-select.scss │ │ ├── ion-skeleton.scss │ │ ├── ion-spinner.scss │ │ ├── ion-tabs.scss │ │ ├── ion-toast.scss │ │ ├── ionic.scss │ │ ├── language.scss │ │ ├── mod-label.scss │ │ ├── moodle.scss │ │ ├── reading-mode.scss │ │ ├── rubrics.scss │ │ ├── swiper.scss │ │ ├── table.scss │ │ └── videojs.scss │ ├── globals.custom.scss │ ├── globals.scss │ ├── globals.variables.scss │ ├── helpers │ │ ├── custom.mixins.scss │ │ ├── helpers.scss │ │ ├── ionic.components.mixins.scss │ │ ├── ionic.functions.color.scss │ │ ├── ionic.functions.font.scss │ │ ├── ionic.functions.string.scss │ │ └── ionic.mixins.scss │ ├── theme.base.scss │ ├── theme.custom.scss │ ├── theme.dark.scss │ ├── theme.design-system.scss │ ├── theme.light.scss │ └── theme.scss └── types │ ├── angular.d.ts │ ├── config.d.ts │ ├── cordova-plugin-chooser.d.ts │ ├── cordova-plugin-qrscanner.d.ts │ ├── cordova-plugin-zip.d.ts │ ├── global.d.ts │ ├── sqlite-wasm-custom.d.ts │ ├── sqlite-wasm.d.ts │ └── videojs.d.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json ├── tsconfig.worker.json └── webpack.config.js /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | Dockerfile 3 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 4 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.json] 12 | indent_size = 4 13 | 14 | [*.ts] 15 | quote_type = single 16 | 17 | [*.md] 18 | max_line_length = off 19 | trim_trailing_whitespace = false 20 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | *.js 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.ts eol=lf 3 | -------------------------------------------------------------------------------- /.github/SECURITY.md: -------------------------------------------------------------------------------- 1 | > [!IMPORTANT] 2 | > PLEASE DO NOT PUBLISH SECURITY FINDINGS PUBLICLY. 3 | 4 | If you discover a potential security issue, please report it via our [Security Submission Form](https://moodle.org/security/report). 5 | 6 | For more information about our security processes and responsible disclosure policy, see the [Security Procedures documentation](https://moodledev.io/general/development/process/security). 7 | -------------------------------------------------------------------------------- /.github/workflows/merge.yml: -------------------------------------------------------------------------------- 1 | name: Merge 2 | 3 | on: 4 | push: 5 | branches: [ main, v*.x ] 6 | 7 | jobs: 8 | merge: 9 | if: github.repository == 'moodlemobile/moodleapp' 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - uses: actions/checkout@v4 14 | with: 15 | persist-credentials: false 16 | fetch-depth: 0 17 | - name: Prepare builds 18 | env: 19 | GIT_TOKEN: ${{ secrets.GIT_TOKEN }} 20 | run: ./.github/scripts/merge.sh 21 | -------------------------------------------------------------------------------- /.github/workflows/mirror.yml: -------------------------------------------------------------------------------- 1 | name: Mirror 2 | 3 | on: 4 | push: 5 | branches: [ main, v*.x ] 6 | 7 | jobs: 8 | mirror: 9 | if: github.repository == 'moodlehq/moodleapp' 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - uses: actions/checkout@v4 14 | with: 15 | persist-credentials: false 16 | fetch-depth: 0 17 | - name: Mirror the branch and tags 18 | env: 19 | GIT_TOKEN: ${{ secrets.GIT_TOKEN }} 20 | run: ./.github/scripts/mirror.sh 21 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v20.18.1 2 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "ionic.ionic", 4 | "dbaeumer.vscode-eslint", 5 | "angular.ng-template", 6 | "nesterenok.js-beautify-extentions", 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /cordova-plugin-moodleapp/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | www 3 | -------------------------------------------------------------------------------- /cordova-plugin-moodleapp/scripts/templates/cordova-plugin.js: -------------------------------------------------------------------------------- 1 | cordova.define("[[PLUGIN_NAME]]", function(require, exports, module) { 2 | [[PLUGIN_CONTENTS]] 3 | }); 4 | -------------------------------------------------------------------------------- /cordova-plugin-moodleapp/src/ios/SecureStorage.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface SecureStorage : CDVPlugin {} 5 | 6 | - (void)get:(CDVInvokedUrlCommand*)command; 7 | - (void)store:(CDVInvokedUrlCommand*)command; 8 | - (void)delete:(CDVInvokedUrlCommand*)command; 9 | - (void)deleteCollection:(CDVInvokedUrlCommand*)command; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /cordova-plugin-moodleapp/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "moduleResolution": "node", 6 | "strict": true, 7 | "esModuleInterop": true, 8 | "skipLibCheck": true, 9 | "experimentalDecorators": true, 10 | "baseUrl": "./" 11 | }, 12 | "include": [ 13 | "src/ts/**/*.ts", 14 | "types/**.d.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /ionic.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "moodlemobile", 3 | "integrations": { 4 | "cordova": {} 5 | }, 6 | "type": "angular", 7 | "hooks": { 8 | "build:before": "./scripts/copy-assets.js", 9 | "serve:before": "./scripts/copy-assets.js" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /local_moodleappbehat/fixtures/dummy.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/local_moodleappbehat/fixtures/dummy.pdf -------------------------------------------------------------------------------- /local_moodleappbehat/js/mobile/index.js: -------------------------------------------------------------------------------- 1 | this.CoreSitesProvider.getSite().then(site => { 2 | const username = site.infos.username; 3 | 4 | document.getElementById('username').innerText = `, ${username}`; 5 | }); 6 | 7 | this.ngAfterViewInit = () => this.CoreDomUtilsProvider.showToast('Lifecycle hook called'); 8 | -------------------------------------------------------------------------------- /local_moodleappbehat/lang/en/local_moodleappbehat.php: -------------------------------------------------------------------------------- 1 | version = {{ pluginVersion }}; 10 | $plugin->requires = 2018051700; 11 | $plugin->maturity = MATURITY_STABLE; 12 | $plugin->release = '{{ appVersion }}'; 13 | $plugin->component = 'local_moodleappbehat'; 14 | -------------------------------------------------------------------------------- /moodle.config.example.json: -------------------------------------------------------------------------------- 1 | /** 2 | * Application config. 3 | * 4 | * You can create your own environment files such as "moodle.config.prod.json" and "moodle.config.dev.json" 5 | * to override some values. The values will be merged, so you don't need to duplicate everything in this file. 6 | */ 7 | { 8 | // You can find all the properties you can configure in src/types/config.d.ts 9 | "default_lang": "es" 10 | } 11 | -------------------------------------------------------------------------------- /resources/android/icon-foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/resources/android/icon-foreground.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-hdpi-smallicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/resources/android/icon/drawable-hdpi-smallicon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-ldpi-smallicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/resources/android/icon/drawable-ldpi-smallicon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-mdpi-smallicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/resources/android/icon/drawable-mdpi-smallicon.png -------------------------------------------------------------------------------- /resources/android/icon/drawable-xhdpi-smallicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/resources/android/icon/drawable-xhdpi-smallicon.png -------------------------------------------------------------------------------- /resources/android/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/resources/icon.png -------------------------------------------------------------------------------- /resources/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/resources/splash.png -------------------------------------------------------------------------------- /resources/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | #FFFFFF 5 | #FFFFFF 6 | 7 | -------------------------------------------------------------------------------- /scripts/cordova-hooks/before_plugin_add.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [[ $CORDOVA_PLUGINS == *cordova-plugin-moodleapp* ]]; then 4 | echo "Building cordova-plugin-moodleapp" 5 | 6 | cd cordova-plugin-moodleapp 7 | npm run prod 8 | fi 9 | -------------------------------------------------------------------------------- /src/addons/block/activitymodules/components/activitymodules/activitymodules.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | core-mod-icon { 3 | --margin-vertical: 0px; 4 | --margin-end: 12px; 5 | --module-icon-size: 24px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/addons/block/activitymodules/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Activities" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/activityresults/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Activity results" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/badges/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Latest badges" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/blogmenu/components/blogmenu/blogmenu.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | .core-block-content ::ng-deep { 3 | ul.list { 4 | list-style: none; 5 | margin-left: 0; 6 | margin-right: 0; 7 | -webkit-padding-start: 0; 8 | 9 | li { 10 | padding-bottom: 8px; 11 | } 12 | } 13 | } 14 | .core-block-footer ::ng-deep { 15 | display: none; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/addons/block/blogmenu/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Blog menu" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/blogrecent/components/blogrecent/blogrecent.scss: -------------------------------------------------------------------------------- 1 | :host .core-block-content ::ng-deep { 2 | ul.list { 3 | list-style: none; 4 | margin-left: 0; 5 | margin-right: 0; 6 | -webkit-padding-start: 0; 7 | 8 | li { 9 | padding-bottom: 8px; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/addons/block/blogrecent/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Recent blog entries" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/blogtags/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Blog tags" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/calendarmonth/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Calendar" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/calendarupcoming/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Upcoming events" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/comments/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Comments" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/completionstatus/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Course completion status" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/globalsearch/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Global search" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/glossaryrandom/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Random glossary entry" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/learningplans/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Learning plans" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/newsitems/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Latest announcements" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/onlineusers/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Online users" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/privatefiles/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Private files" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/recentactivity/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Recent activity" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/recentlyaccessedcourses/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "nocourses": "No recent courses", 3 | "pluginname": "Recently accessed courses" 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/block/recentlyaccesseditems/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "noitems": "No recent items", 3 | "pluginname": "Recently accessed items" 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/block/rssclient/components/rssclient/rssclient.scss: -------------------------------------------------------------------------------- 1 | :host .core-block-content ::ng-deep { 2 | .list { 3 | list-style: none; 4 | margin-left: 0; 5 | margin-right: 0; 6 | -webkit-padding-start: 0; 7 | 8 | li { 9 | border-top: 1px solid var(--stroke); 10 | padding: 5px; 11 | padding-bottom: 8px; 12 | } 13 | 14 | li:first-child { 15 | border-top-width: 0; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/addons/block/rssclient/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "RSS feeds" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/searchforums/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Search forums" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/selfcompletion/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Self completion" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/sitemainmenu/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Main menu" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/block/starredcourses/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "nocourses": "No starred courses", 3 | "pluginname": "Starred courses" 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/block/tags/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Tags" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/blog/tests/behat/fixtures/stub6.txt: -------------------------------------------------------------------------------- 1 | This is the stub file 6 created at 13/03/2025. 2 | -------------------------------------------------------------------------------- /src/addons/blog/tests/behat/fixtures/stub7.txt: -------------------------------------------------------------------------------- 1 | This is the stub file 7 created at 13/03/2025. 2 | -------------------------------------------------------------------------------- /src/addons/calendar/components/filter/filter.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | :host { 4 | .item { 5 | ion-radio { 6 | @include margin-horizontal(null, 8px); 7 | } 8 | 9 | &.addon-calendar-event > ion-icon { 10 | --margin-vertical: 8px; 11 | --margin-end: 8px; 12 | padding: 8px; 13 | font-size: var(--mdl-typography-icon-fontSize-sm); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/addons/calendar/pages/day/day.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | .core-swipe-slides-container ion-grid { 3 | flex: none; 4 | width: 100%; 5 | } 6 | 7 | .addon-calendar-period { 8 | flex-grow: 3; 9 | h2 { 10 | margin-top: 10px; 11 | font-size: 1.2rem; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/addons/calendar/pages/edit-event/edit-event.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | .addon-calendar-eventtype-container.item-select-disabled { 3 | ion-label, ion-select { 4 | opacity: 1; 5 | } 6 | 7 | ion-select::part(icon) { 8 | display: none; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/addons/calendar/pages/event/event.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | ion-card ion-note { 3 | font-size: 1.6rem; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/addons/enrol/guest/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "guestaccess_withoutpassword": "Guest access", 3 | "guestaccess_withpassword": "Guest access requires password", 4 | "passwordinvalid": "Incorrect access password, please try again" 5 | } 6 | -------------------------------------------------------------------------------- /src/addons/enrol/self/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "confirmselfenrol": "Are you sure you want to enrol yourself in this course?", 3 | "errorselfenrol": "An error occurred while self enrolling.", 4 | "password": "Enrolment key", 5 | "pluginname": "Self enrolment" 6 | } 7 | -------------------------------------------------------------------------------- /src/addons/messageoutput/airnotifier/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "processorsettingsdesc": "Configure devices", 3 | "pushdisabledwarning": "Your users are not receiving any notification from this site on their mobile devices. Enable mobile notifications in the Notification settings page." 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/messages/tests/behat/snapshots/test-basic-usage-of-messages-in-app-view-recent-conversations-and-contacts_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/messages/tests/behat/snapshots/test-basic-usage-of-messages-in-app-view-recent-conversations-and-contacts_22.png -------------------------------------------------------------------------------- /src/addons/messages/tests/behat/snapshots/test-basic-usage-of-messages-in-app-view-recent-conversations-and-contacts_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/messages/tests/behat/snapshots/test-basic-usage-of-messages-in-app-view-recent-conversations-and-contacts_30.png -------------------------------------------------------------------------------- /src/addons/mod/assign/components/edit-feedback-modal/edit-feedback-modal.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | 3 | .core-grading-summary-grade { 4 | display: flex; 5 | align-items: center; 6 | gap: 0.25rem; 7 | 8 | ion-icon { 9 | flex-shrink: 0; 10 | } 11 | 12 | .penalty-indicator-icon { 13 | display: none; 14 | } 15 | } 16 | 17 | .core-grading-summary-penalty { 18 | color: var(--danger); 19 | font-size: 0.75em; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/addons/mod/assign/feedback/comments/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Feedback comments" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/mod/assign/feedback/editpdf/component/addon-mod-assign-feedback-editpdf.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

{{ plugin.name }}

5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /src/addons/mod/assign/feedback/editpdf/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Annotate PDF" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/mod/assign/feedback/file/component/addon-mod-assign-feedback-file.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

{{ plugin.name }}

5 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /src/addons/mod/assign/feedback/file/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "File feedback" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/mod/assign/pages/edit/edit.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | core-timer { 3 | &.core-timer-under-300 { 4 | --timer-background: var(--danger-tint); 5 | --timer-text-color: var(--danger-shade); 6 | } 7 | 8 | &.core-timer-under-900 { 9 | --timer-background: var(--warning-tint); 10 | --timer-text-color: var(--warning-shade); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/addons/mod/assign/submission/comments/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Submission comments" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/mod/assign/submission/file/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "File submissions" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/mod/assign/submission/onlinetext/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pluginname": "Online text submissions", 3 | "wordlimitexceeded": "The word limit for this assignment is {{$a.limit}} words and you are attempting to submit {{$a.count}} words. Please review your submission and try again." 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/mod/assign/tests/behat/snapshots/test-basic-usage-of-assignment-activity-in-app-editadd-submission-online-text--add-new-attempt-from-previous-submission--submit-for-grading_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/assign/tests/behat/snapshots/test-basic-usage-of-assignment-activity-in-app-editadd-submission-online-text--add-new-attempt-from-previous-submission--submit-for-grading_8.png -------------------------------------------------------------------------------- /src/addons/mod/assign/tests/behat/snapshots/test-single-activity-of-assign-type-in-app-single-activity-assign_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/assign/tests/behat/snapshots/test-single-activity-of-assign-type-in-app-single-activity-assign_9.png -------------------------------------------------------------------------------- /src/addons/mod/book/components/toc/toc.scss: -------------------------------------------------------------------------------- 1 | .addon-mod-book-bullet { 2 | font-weight: bold; 3 | font-size: 1.5em; 4 | margin-right: 3px; 5 | } 6 | -------------------------------------------------------------------------------- /src/addons/mod/book/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "errorchapter": "Error reading chapter of book.", 3 | "modulenameplural": "Books", 4 | "navnexttitle": "Next: {{$a}}", 5 | "navprevtitle": "Previous: {{$a}}", 6 | "tagarea_book_chapters": "Book chapters", 7 | "toc": "Table of contents" 8 | } 9 | -------------------------------------------------------------------------------- /src/addons/mod/book/pages/contents/contents.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | .core-swipe-slides-container { 3 | ion-card { 4 | flex: none; 5 | } 6 | } 7 | 8 | .has-collapsible-footer ::ng-deep swiper-container::part(container) { 9 | padding-bottom: 50px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/addons/mod/book/tests/behat/snapshots/test-basic-usage-of-book-activity-in-app-open-chapters-from-table-of-contents_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/book/tests/behat/snapshots/test-basic-usage-of-book-activity-in-app-open-chapters-from-table-of-contents_11.png -------------------------------------------------------------------------------- /src/addons/mod/book/tests/behat/snapshots/test-single-activity-of-book-type-in-app-single-activity-book_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/book/tests/behat/snapshots/test-single-activity-of-book-type-in-app-single-activity-book_11.png -------------------------------------------------------------------------------- /src/addons/mod/chat/pages/chat/chat.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | .addon-mod_chat-notice { 3 | margin-top: 8px; 4 | margin-bottom: 8px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/addons/mod/chat/pages/session-messages/session-messages.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | .addon-mod_chat-notice { 3 | margin-top: 8px; 4 | margin-bottom: 8px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/addons/mod/chat/pages/sessions/sessions.scss: -------------------------------------------------------------------------------- 1 | ion-app.app-root page-addon-mod-chat-sessions { 2 | .addon-mod-chat-session-show-more .card-content{ 3 | padding-bottom: 0; 4 | } 5 | .addon-mod-chat-session-selected { 6 | border-top: 5px solid $core-splitview-selected; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/addons/mod/choice/components/index/index.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | .addon-mod-choice-chart-results { 3 | width: 100%; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/addons/mod/choice/tests/behat/snapshots/restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-end-deadline-in-the-future_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/choice/tests/behat/snapshots/restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-end-deadline-in-the-future_18.png -------------------------------------------------------------------------------- /src/addons/mod/choice/tests/behat/snapshots/restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-end-deadline-in-the-past_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/choice/tests/behat/snapshots/restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-end-deadline-in-the-past_18.png -------------------------------------------------------------------------------- /src/addons/mod/choice/tests/behat/snapshots/restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-start-deadline-in-the-future-with-show-preview-options_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/choice/tests/behat/snapshots/restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-start-deadline-in-the-future-with-show-preview-options_18.png -------------------------------------------------------------------------------- /src/addons/mod/choice/tests/behat/snapshots/restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-start-deadline-in-the-future_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/choice/tests/behat/snapshots/restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-start-deadline-in-the-future_18.png -------------------------------------------------------------------------------- /src/addons/mod/choice/tests/behat/snapshots/restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-start-deadline-in-the-past_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/choice/tests/behat/snapshots/restrict-availability-of-the-choice-module-to-a-deadline-enable-the-choice-activity-with-a-start-deadline-in-the-past_18.png -------------------------------------------------------------------------------- /src/addons/mod/choice/tests/behat/snapshots/test-basic-usage-of-choice-activity-in-app-answer-a-choice-multi-or-single-update-answer--view-results--delete-choice_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/choice/tests/behat/snapshots/test-basic-usage-of-choice-activity-in-app-answer-a-choice-multi-or-single-update-answer--view-results--delete-choice_12.png -------------------------------------------------------------------------------- /src/addons/mod/choice/tests/behat/snapshots/test-basic-usage-of-choice-activity-in-app-answer-a-choice-multi-or-single-update-answer--view-results_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/choice/tests/behat/snapshots/test-basic-usage-of-choice-activity-in-app-answer-a-choice-multi-or-single-update-answer--view-results_15.png -------------------------------------------------------------------------------- /src/addons/mod/data/components/field-plugin/addon-mod-data-field-plugin.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/addons/mod/data/fields/file/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "fieldtypelabel": "File" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/mod/data/fields/latlong/component/latlong.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | :host { 4 | .addon-data-latlong-coordinates-instructions { 5 | ion-note * { 6 | line-height: var(--mdl-typography-label-lineHeight-sm); 7 | vertical-align: middle; 8 | } 9 | ion-icon { 10 | @include margin-horizontal(0px, 0.25rem); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/addons/mod/data/fields/picture/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "fieldtypelabel": "Image" 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/mod/data/fields/text/component/addon-mod-data-field-text.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {{ value.content }} 8 | -------------------------------------------------------------------------------- /src/addons/mod/feedback/feedback.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | --dependant-background: var(--gray-200); 3 | 4 | .feedback_is_dependent { 5 | --background: var(--dependant-background); 6 | } 7 | 8 | } 9 | 10 | :host-context(:root.dark) { 11 | --dependant-background: var(--gray-800); 12 | } 13 | -------------------------------------------------------------------------------- /src/addons/mod/feedback/tests/behat/snapshots/feedback-charts-in-responses-analysis-chart-is-shown-in-analysis_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/feedback/tests/behat/snapshots/feedback-charts-in-responses-analysis-chart-is-shown-in-analysis_9.png -------------------------------------------------------------------------------- /src/addons/mod/folder/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "emptyfilelist": "There are no files to show.", 3 | "modulenameplural": "Folders" 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/mod/forum/components/post-options-menu/post-options-menu.scss: -------------------------------------------------------------------------------- 1 | core-loading { 2 | --loading-inline-min-height: 48px; 3 | --loading-display-message: none; 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/mod/forum/pages/discussion/discussion.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | 3 | .addon-forum-reply-button ion-label { 4 | margin: 0px; 5 | } 6 | 7 | ion-card addon-mod-forum-post { 8 | --addon-forum-border-color: 0px; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/addons/mod/forum/tests/behat/snapshots/test-basic-usage-of-forum-activity-in-app-reply-a-post_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/forum/tests/behat/snapshots/test-basic-usage-of-forum-activity-in-app-reply-a-post_13.png -------------------------------------------------------------------------------- /src/addons/mod/forum/tests/behat/snapshots/test-basic-usage-of-forum-activity-in-app-reply-a-post_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/forum/tests/behat/snapshots/test-basic-usage-of-forum-activity-in-app-reply-a-post_8.png -------------------------------------------------------------------------------- /src/addons/mod/glossary/components/index/index.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | 3 | .addon-mod-glossary-index--offline-entries { 4 | border-bottom: 1px solid var(--stroke); 5 | } 6 | 7 | .addon-mod-glossary-index--offline-entry { 8 | display: flex; 9 | justify-content: flex-start; 10 | align-items: center; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/addons/mod/glossary/components/mode-picker/addon-mod-glossary-mode-picker.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ mode.langkey | translate }} 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/addons/mod/glossary/tests/behat/fixtures/stub1.txt: -------------------------------------------------------------------------------- 1 | This is a stub. 2 | -------------------------------------------------------------------------------- /src/addons/mod/glossary/tests/behat/fixtures/stub2.txt: -------------------------------------------------------------------------------- 1 | This is a stub. 2 | -------------------------------------------------------------------------------- /src/addons/mod/glossary/tests/behat/fixtures/stub3.txt: -------------------------------------------------------------------------------- 1 | This is a stub. 2 | -------------------------------------------------------------------------------- /src/addons/mod/h5pactivity/components/attempt-completion/attempt-completion.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | :host { 4 | display: inline-flex; 5 | align-items: center; 6 | gap: 0.25em; 7 | } 8 | -------------------------------------------------------------------------------- /src/addons/mod/h5pactivity/components/attempt-success/attempt-success.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | :host { 4 | display: contents; 5 | 6 | ion-badge { 7 | display: inline-flex; 8 | align-items: center; 9 | gap: 0.25em; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/addons/mod/h5pactivity/components/attempt-summary/attempt-summary.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | :host { 4 | display: block; 5 | 6 | [role=listitem]:not(:last-child) { 7 | margin-bottom: 8px; 8 | } 9 | 10 | h5 { 11 | margin: 0; 12 | font-size: var(--mdl-typography-body-fontSize-md); 13 | font-weight: 500; 14 | color: var(--gray-700); 15 | } 16 | 17 | p { 18 | margin-top: 4px; 19 | margin-bottom: 0; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/addons/mod/imscp/components/index/index.scss: -------------------------------------------------------------------------------- 1 | .addon-mod-imscp-container { 2 | height: 100%; 3 | display: flex; 4 | flex-direction: column; 5 | } 6 | core-iframe { 7 | flex-basis: 100%; 8 | } 9 | -------------------------------------------------------------------------------- /src/addons/mod/imscp/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "deploymenterror": "Content package error!", 3 | "modulenameplural": "IMS content packages", 4 | "showmoduledescription": "Show description", 5 | "toc": "TOC" 6 | } 7 | -------------------------------------------------------------------------------- /src/addons/mod/lti/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "errorgetlti": "Error getting module data.", 3 | "errorinvalidlaunchurl": "The launch URL is not valid.", 4 | "launchactivity": "Launch the activity", 5 | "modulenameplural": "External tools" 6 | } 7 | -------------------------------------------------------------------------------- /src/addons/mod/page/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "errorwhileloadingthepage": "Error while loading the page content.", 3 | "modulenameplural": "Pages" 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/mod/quiz/accessrules/offlineattempts/component/addon-mod-quiz-access-offline-attempts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

{{ 'core.settings.synchronization' | translate }}

4 |

{{ 'addon.mod_quiz.confirmcontinueoffline' | translate:{$a: syncTimeReadable} }}

5 |
6 |
7 | -------------------------------------------------------------------------------- /src/addons/mod/quiz/accessrules/timelimit/component/addon-mod-quiz-access-time-limit.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

{{ 'addon.mod_quiz.confirmstartheader' | translate }}

4 |

{{ 'addon.mod_quiz.confirmstart' | translate:{$a: readableTimeLimit} }}

5 |
6 |
7 | -------------------------------------------------------------------------------- /src/addons/mod/quiz/components/attempt-state/attempt-state.html: -------------------------------------------------------------------------------- 1 | 2 | @if (finishedOffline) { 3 | 7 | -------------------------------------------------------------------------------- /src/addons/mod/quiz/components/attempt-state/attempt-state.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | :host { 4 | 5 | ion-badge { 6 | display: inline-flex; 7 | align-items: center; 8 | 9 | ion-icon { 10 | @include margin-horizontal(0px, var(--mdl-spacing-1)); 11 | } 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/addons/mod/quiz/components/connection-error/connection-error.html: -------------------------------------------------------------------------------- 1 | 2 | {{ "addon.mod_quiz.connectionerror" | translate }} 3 | 4 | -------------------------------------------------------------------------------- /src/addons/mod/quiz/components/connection-error/connection-error.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | background-color: var(--danger-tint); 3 | 4 | .item { 5 | --background: var(--danger-tint); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/addons/mod/quiz/components/navigation-modal/navigation-modal.scss: -------------------------------------------------------------------------------- 1 | ion-item.core-question-blocked, 2 | ion-item.core-question-complete, 3 | ion-item.core-question-answersaved, 4 | ion-item.core-question-requiresgrading { 5 | --background: var(--core-question-saved-color-bg); 6 | } 7 | -------------------------------------------------------------------------------- /src/addons/mod/quiz/components/question-card/question-card.scss: -------------------------------------------------------------------------------- 1 | .addon-mod_quiz-question-note p { 2 | margin-top: 2px; 3 | margin-bottom: 2px; 4 | text-align: end; 5 | font-weight: normal; 6 | font-size: var(--mdl-typography-fontSize-md); 7 | } 8 | -------------------------------------------------------------------------------- /src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_27.png -------------------------------------------------------------------------------- /src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_42.png -------------------------------------------------------------------------------- /src/addons/mod/resource/components/index/index.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | :host { 4 | .addon-mod_resource-outdated { 5 | @include padding(4px, 0px, 0px, 0px); 6 | 7 | ion-icon { 8 | font-size: var(--mdl-typography-icon-fontSize-lg); 9 | } 10 | } 11 | 12 | .addon-mod_resource-afterlink { 13 | font-size: var(--text-size); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/addons/mod/resource/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "errorwhileloadingthecontent": "Error while loading the content.", 3 | "modifieddate": "Modified {{$a}}", 4 | "modulenameplural": "Files", 5 | "openthefile": "Open", 6 | "resourcestatusoutdated": "This file has changed since you last opened it.", 7 | "resourcestatusoutdatedconfirm": "There is a newer version of this file. To see it, please connect your device to the internet.", 8 | "uploadeddate": "Uploaded {{$a}}" 9 | } 10 | -------------------------------------------------------------------------------- /src/addons/mod/scorm/components/index/index.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | :host { 4 | .addon-mod_scorm-attempt-summary ion-item > p { 5 | font-size: var(--text-size); 6 | } 7 | 8 | .addon-mod_scorm-toc ion-icon { 9 | @include margin(4px, 8px, null, null); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/addons/mod/scorm/components/toc/toc.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | .addon-mod_scorm-toc ion-icon { 4 | @include margin(4px, 8px, null, null); 5 | } 6 | -------------------------------------------------------------------------------- /src/addons/mod/scorm/tests/behat/snapshots/test-appearance-options-of-scorm-activity-in-app-apply-width-and-height-when-using-new-window-mode_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/scorm/tests/behat/snapshots/test-appearance-options-of-scorm-activity-in-app-apply-width-and-height-when-using-new-window-mode_10.png -------------------------------------------------------------------------------- /src/addons/mod/scorm/tests/behat/snapshots/test-appearance-options-of-scorm-activity-in-app-apply-width-and-height-when-using-new-window-mode_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/scorm/tests/behat/snapshots/test-appearance-options-of-scorm-activity-in-app-apply-width-and-height-when-using-new-window-mode_16.png -------------------------------------------------------------------------------- /src/addons/mod/scorm/tests/behat/snapshots/test-appearance-options-of-scorm-activity-in-app-apply-width-and-height-when-using-new-window-mode_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/scorm/tests/behat/snapshots/test-appearance-options-of-scorm-activity-in-app-apply-width-and-height-when-using-new-window-mode_22.png -------------------------------------------------------------------------------- /src/addons/mod/scorm/tests/behat/snapshots/test-single-activity-of-scorm-type-in-app-single-activity-scorm_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/addons/mod/scorm/tests/behat/snapshots/test-single-activity-of-scorm-type-in-app-single-activity-scorm_9.png -------------------------------------------------------------------------------- /src/addons/mod/survey/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "cannotsubmitsurvey": "Sorry, there was a problem submitting your survey. Please try again.", 3 | "errorgetsurvey": "Error getting survey data.", 4 | "ifoundthat": "I found that", 5 | "ipreferthat": "I prefer that", 6 | "modulenameplural": "Surveys", 7 | "responses": "Responses", 8 | "results": "Results", 9 | "surveycompletednograph": "You have completed this survey." 10 | } 11 | -------------------------------------------------------------------------------- /src/addons/mod/url/components/index/index.scss: -------------------------------------------------------------------------------- 1 | .addon-mod_url-embedded-url { 2 | height: 100%; 3 | display: contents; 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/mod/url/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "accessurl": "Access the URL", 3 | "modulenameplural": "URLs", 4 | "pointingtourl": "URL that the resource points to." 5 | } 6 | -------------------------------------------------------------------------------- /src/addons/mod/workshop/assessment/accumulative/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "dimensioncommentfor": "Comment for {{$a}}", 3 | "dimensiongradefor": "Grade for {{$a}}", 4 | "dimensionnumber": "Aspect {{$a}}", 5 | "mustchoosegrade": "You have to select a grade for this aspect" 6 | } 7 | -------------------------------------------------------------------------------- /src/addons/mod/workshop/assessment/comments/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "dimensioncommentfor": "Comment for {{$a}}", 3 | "dimensionnumber": "Aspect {{$a}}" 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/mod/workshop/assessment/numerrors/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "dimensioncommentfor": "Comment for {{$a}}", 3 | "dimensiongradefor": "Grade for {{$a}}", 4 | "dimensionnumber": "Assertion {{$a}}" 5 | } 6 | -------------------------------------------------------------------------------- /src/addons/mod/workshop/assessment/rubric/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "dimensionnumber": "Criterion {{$a}}", 3 | "mustchooseone": "You have to select one of these items" 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/mod/workshop/components/submission/submission.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | p.addon-overriden-grade { 3 | color: var(--success); 4 | } 5 | 6 | p.addon-has-overriden-grade { 7 | color: var(--danger); 8 | text-decoration: line-through; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/addons/notifications/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "allownotifications": "Allow notifications", 3 | "errorgetnotifications": "Error getting notifications.", 4 | "markallread": "Mark all as read", 5 | "notificationpreferences": "Notification preferences", 6 | "notifications": "Notifications", 7 | "playsound": "Play sound", 8 | "therearentnotificationsyet": "There are no notifications.", 9 | "typeofnotification": "Type of notification", 10 | "unreadnotification": "Unread notification: {{$a}}" 11 | } 12 | -------------------------------------------------------------------------------- /src/addons/notifications/pages/settings/settings.scss: -------------------------------------------------------------------------------- 1 | .addon-notifications-table-content ion-row { 2 | min-height: 35px; 3 | } 4 | 5 | ion-item-divider, ion-card-header { 6 | border-top: 1px solid var(--stroke); 7 | } 8 | -------------------------------------------------------------------------------- /src/addons/privatefiles/components/file-actions/file-actions.scss: -------------------------------------------------------------------------------- 1 | hr { 2 | background: var(--gray-300); 3 | } 4 | 5 | ion-thumbnail { 6 | --size: 1.5rem; 7 | margin-inline-end: 0.5rem; 8 | } 9 | -------------------------------------------------------------------------------- /src/addons/privatefiles/components/file/file.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | ion-checkbox { 3 | flex: none; 4 | width: 3rem; 5 | } 6 | 7 | ion-item.item.item-file { 8 | &.file-selected { 9 | --ion-item-background: var(--primary-tint); 10 | } 11 | 12 | --inner-border-width: 0 !important; 13 | } 14 | 15 | ion-ripple-effect { 16 | z-index: 1; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/addons/privatefiles/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "couldnotloadfiles": "The list of files could not be loaded.", 3 | "emptyfilelist": "There are no files to show.", 4 | "erroruploadnotworking": "Unfortunately it is currently not possible to upload files to your site.", 5 | "files": "Files", 6 | "privatefiles": "Private files", 7 | "sitefiles": "Site files" 8 | } 9 | -------------------------------------------------------------------------------- /src/addons/privatefiles/pages/index/index.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | :host { 4 | --addons-privatefiles-index-select-all-shadow: 0px 8px 10px 0px #282828; 5 | 6 | .addons-privatefiles-index-select-all { 7 | box-shadow: var(--addons-privatefiles-index-select-all-shadow); 8 | z-index: 3; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/addons/qbehaviour/informationitem/component/addon-qbehaviour-informationitem.html: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /src/addons/qtype/ddimageortext/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pleasedraganimagetoeachdropregion": "Your answer is not complete; please drag an item to each drop region." 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/qtype/ddmarker/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pleasedragatleastonemarker": "Your answer is not complete; you must place at least one marker on the image." 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/qtype/essay/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "maxwordlimitboundary": "The word limit for this question is {{$a.limit}} words and you are attempting to submit {{$a.count}} words. Please shorten your response and try again.", 3 | "minwordlimitboundary": "This question requires a response of at least {{$a.limit}} words and you are attempting to submit {{$a.count}} words. Please expand your response and try again." 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/qtype/gapselect/component/gapselect.scss: -------------------------------------------------------------------------------- 1 | // Style gapselect content a bit. Most of these styles are copied from Moodle. 2 | :host ::ng-deep { 3 | p { 4 | margin: 0 0 .5em; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/addons/qtype/gapselect/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pleaseputananswerineachbox": "Please put an answer in each box." 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/qtype/match/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pleaseananswerallparts": "Please answer all parts of the question." 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/qtype/multianswer/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pleaseananswerallparts": "Please answer all parts of the question." 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/qtype/multichoice/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pleaseselectananswer": "Please select an answer.", 3 | "pleaseselectatleastoneanswer": "Please select at least one answer." 4 | } 5 | -------------------------------------------------------------------------------- /src/addons/qtype/numerical/component/numerical.scss: -------------------------------------------------------------------------------- 1 | .flex-row { 2 | width: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/qtype/numerical/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "invalidnumber": "You must enter a valid number.", 3 | "invalidnumbernounit": "You must enter a valid number. Do not include a unit in your response.", 4 | "pleaseenterananswer": "Please enter an answer.", 5 | "unitnotselected": "You must select a unit." 6 | } 7 | -------------------------------------------------------------------------------- /src/addons/qtype/ordering/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "moved": "{{$a.item}} moved. New position: {{$a.position}} of {{$a.total}}." 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/qtype/shortanswer/component/shortanswer.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | .core-correct-icon { 3 | margin-top: 14px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/addons/qtype/shortanswer/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pleaseenterananswer": "Please enter an answer." 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/qtype/truefalse/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "pleaseselectananswer": "Please select an answer." 3 | } 4 | -------------------------------------------------------------------------------- /src/addons/report/insights/lang.json: -------------------------------------------------------------------------------- 1 | { 2 | "actionsaved": "Your feedback of '{{$a}}' has been saved.", 3 | "fixedack": "Accept", 4 | "incorrectlyflagged": "Incorrectly flagged", 5 | "notapplicable": "Not applicable", 6 | "notuseful": "Not useful", 7 | "useful": "Useful" 8 | } 9 | -------------------------------------------------------------------------------- /src/addons/storagemanager/pages/courses-storage/courses-storage.scss: -------------------------------------------------------------------------------- 1 | ion-item.courses, 2 | ion-item.total { 3 | .item-heading { 4 | font-weight: bold; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/addons/userprofilefield/checkbox/component/checkbox.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | :host { 4 | --text-overflow: initial; 5 | --white-space: normal; 6 | 7 | .item-heading { 8 | white-space: normal; 9 | } 10 | 11 | ion-label { 12 | @include padding-horizontal(null, .5rem); 13 | 14 | .label-text { 15 | text-overflow: var(--text-overflow); 16 | white-space: var(--white-space); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/addons/userprofilefield/menu/component/menu.scss: -------------------------------------------------------------------------------- 1 | .item-heading { 2 | white-space: normal; 3 | } 4 | -------------------------------------------------------------------------------- /src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/brands/facebook-f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/brands/google-drive.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/brands/windows.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/regular/face-meh-blank.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/regular/square-full.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/regular/window-minimize.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/0.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/angle-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/angle-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/angle-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/angle-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/bookmark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/border-all.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/box.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/bread-slice.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/caret-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/caret-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/caret-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/caret-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/cheese.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/chevron-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/chevron-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/chevron-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/chevron-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/circle-chevron-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/circle-chevron-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/circle-chevron-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/circle-chevron-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/circle-dot.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/circle-exclamation.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/circle-half-stroke.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/circle-minus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/circle-stop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/circle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/clock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/computer-mouse.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/d.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/diamond.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/dice-one.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/divide.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/door-closed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/e.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/ellipsis-vertical.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/ellipsis.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/equals.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/exclamation.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/face-meh-blank.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/face-surprise.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/folder-closed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/gauge-simple.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/genderless.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/greater-than.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/grip-lines-vertical.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/grip-lines.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/h.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/i.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/industry.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/info.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/italic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/j.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/l.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/laptop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/less-than.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/location-arrow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/location-dot.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/location-pin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/lock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/message.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/minus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/mobile-button.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/mobile-screen-button.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/mobile.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/mound.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/n.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/neuter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/note-sticky.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/o.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/p.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/paragraph.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/pause.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/play.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/plus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/record-vinyl.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/shield.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/slash.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/sort-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/sort-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/spoon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/square-full.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/square-minus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/square.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/star-half.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/stop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/t.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/table-cells-large.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/table-columns.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/table.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/tablet-button.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/tablet-screen-button.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/tablet.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/tag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/tarp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/toggle-on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/tv.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/u.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/user-large.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/v.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/volume-off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/window-maximize.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/window-minimize.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/y.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/font-awesome/solid/z.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/fonts/moodle/moodle/agg-sum.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/fonts/moodle/moodle/item.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/assets/icon/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/icon/favicon.png -------------------------------------------------------------------------------- /src/assets/icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/icon/icon.png -------------------------------------------------------------------------------- /src/assets/img/completion/completion-auto-n-override.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/completion/completion-auto-n.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/img/completion/completion-manual-n-override.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/img/completion/completion-manual-n.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/img/files_legacy/archive-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/archive-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/audio-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/audio-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/calc-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/calc-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/chart-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/chart-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/database-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/database-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/document-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/document-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/draw-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/draw-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/eps-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/eps-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/epub-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/epub-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/flash-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/flash-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/folder-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/folder-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/gif-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/gif-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/h5p-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/h5p-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/image-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/image-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/impress-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/impress-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/isf-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/isf-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/markup-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/markup-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/math-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/math-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/moodle-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/moodle-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/oth-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/oth-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/pdf-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/pdf-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/powerpoint-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/powerpoint-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/psd-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/psd-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/publisher-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/publisher-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/sourcecode-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/sourcecode-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/spreadsheet-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/spreadsheet-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/text-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/text-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/unknown-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/unknown-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/video-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/video-64.png -------------------------------------------------------------------------------- /src/assets/img/files_legacy/writer-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/files_legacy/writer-64.png -------------------------------------------------------------------------------- /src/assets/img/icons/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/icons/calendar.png -------------------------------------------------------------------------------- /src/assets/img/icons/empty.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/img/login/faq_qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/login/faq_qrcode.png -------------------------------------------------------------------------------- /src/assets/img/login/faq_url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/login/faq_url.png -------------------------------------------------------------------------------- /src/assets/img/login_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/login_logo.png -------------------------------------------------------------------------------- /src/assets/img/mod_40/folder.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/img/mod_40/resource.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/img/mod_40/scorm.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/assets/img/top_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/top_logo.png -------------------------------------------------------------------------------- /src/assets/img/user-avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moodlehq/moodleapp/be9ff2d96f4e1f1fc89e38ff68116b71e326ed22/src/assets/img/user-avatar.png -------------------------------------------------------------------------------- /src/core/components/attachments/attachments.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | :host { 4 | core-loading { 5 | --loading-inline-min-height: 60px; 6 | } 7 | 8 | .core-attachments { 9 | @include margin-horizontal(null, var(--mdl-spacing-3)); 10 | 11 | &-header { 12 | ion-icon { 13 | @include margin-horizontal(null, var(--mdl-spacing-3)); 14 | font-size: var(--mdl-typography-icon-fontSize-sm); 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/core/components/button-with-spinner/button-with-spinner.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | font-size: 1.4rem; 3 | display: flex; 4 | flex-flow: row; 5 | align-items: center; 6 | justify-content: space-around; 7 | align-content: center; 8 | min-height: var(--a11y-sizing-minTargetSize); 9 | min-width: var(--a11y-sizing-minTargetSize); 10 | position: relative; 11 | 12 | > * { 13 | position: absolute; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/core/components/button-with-spinner/core-button-with-spinner.html: -------------------------------------------------------------------------------- 1 | @if (loading) { 2 | 3 | } @else { 4 |
5 | 6 |
7 | } 8 | -------------------------------------------------------------------------------- /src/core/components/chart/chart.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: block; 3 | 4 | canvas { 5 | max-width: 500px; 6 | margin: 0 auto; 7 | min-width: 300px; 8 | min-height: 300px; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/core/components/chart/core-chart.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | @if (chart) { 4 | 5 | @for (data of legendItems; track data.text) { 6 | 7 | 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/core/components/chrono/core-chrono.html: -------------------------------------------------------------------------------- 1 | {{ time / 1000 | coreSecondsToHMS:hours }} 2 | -------------------------------------------------------------------------------- /src/core/components/context-menu/context-menu-popover.scss: -------------------------------------------------------------------------------- 1 | @use "theme/globals" as *; 2 | 3 | ion-list { 4 | padding: 0; 5 | } 6 | -------------------------------------------------------------------------------- /src/core/components/context-menu/core-context-menu.html: -------------------------------------------------------------------------------- 1 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /src/core/components/course-image/course-image.html: -------------------------------------------------------------------------------- 1 | @if (course().courseimage) { 2 | 3 | 4 | 5 | } @else { 6 |