From accaa74a177040ef722be3c04aabc455ab8a4625 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20Klabbers?= Date: Thu, 22 Nov 2018 14:22:19 +0100 Subject: [PATCH] finally got background processing to work --- js/dist/admin.js.map | 2 +- js/src/admin/utils/ExtensionRepository.js | 1 + src/Listeners/SyncWasSet.php | 2 +- src/Providers/ConsoleProvider.php | 16 ++++++++++------ 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/js/dist/admin.js.map b/js/dist/admin.js.map index 6e006b4..29756de 100644 --- a/js/dist/admin.js.map +++ b/js/dist/admin.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@flagrow/bazaar/webpack/bootstrap","webpack://@flagrow/bazaar/./admin.js","webpack://@flagrow/bazaar/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flagrow/bazaar/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flagrow/bazaar/./src/admin/addBazaarPage.js","webpack://@flagrow/bazaar/./src/admin/addTasksPage.js","webpack://@flagrow/bazaar/./src/admin/components/BazaarLoader.js","webpack://@flagrow/bazaar/./src/admin/components/BazaarPage.js","webpack://@flagrow/bazaar/./src/admin/components/BazaarPageHeader.js","webpack://@flagrow/bazaar/./src/admin/components/CustomCheckbox.js","webpack://@flagrow/bazaar/./src/admin/components/ExtensionList.js","webpack://@flagrow/bazaar/./src/admin/components/ExtensionListItem.js","webpack://@flagrow/bazaar/./src/admin/components/ExtensionSearch.js","webpack://@flagrow/bazaar/./src/admin/components/TaskListItem.js","webpack://@flagrow/bazaar/./src/admin/components/TasksPage.js","webpack://@flagrow/bazaar/./src/admin/index.js","webpack://@flagrow/bazaar/./src/admin/modals/BazaarConnectModal.js","webpack://@flagrow/bazaar/./src/admin/modals/BazaarSettingsModal.js","webpack://@flagrow/bazaar/./src/admin/modals/DashboardModal.js","webpack://@flagrow/bazaar/./src/admin/modals/FilePermissionsModal.js","webpack://@flagrow/bazaar/./src/admin/modals/MemoryLimitModal.js","webpack://@flagrow/bazaar/./src/admin/models/Extension.js","webpack://@flagrow/bazaar/./src/admin/models/Task.js","webpack://@flagrow/bazaar/./src/admin/utils/ExtensionRepository.js","webpack://@flagrow/bazaar/./src/admin/utils/TaskRepository.js","webpack://@flagrow/bazaar/./src/admin/utils/debounce.js","webpack://@flagrow/bazaar/./src/admin/utils/popupPromise.js","webpack://@flagrow/bazaar/external \"flarum.core.compat['Component']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['Model']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['app']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/AdminLinkButton']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/AdminNav']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Badge']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Button']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Dropdown']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/LinkButton']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Modal']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Placeholder']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/SettingsModal']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Switch']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['extend']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['helpers/fullTime']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['helpers/humanTime']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['helpers/icon']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/ItemList']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/computed']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/extract']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/extractText']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/mixin']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/saveSettings']\""],"names":["app","routes","path","component","extensionSettings","m","route","extend","prototype","items","add","href","icon","children","translator","trans","description","BazaarLoader","view","error","props","loading","className","hidden","onclick","location","reload","target","config","BazaarPage","init","current","authorized","data","settings","length","connected","prop","params","repository","extensionList","search","onsubmit","updateResults","bind","update","render","stickyParams","sort","param","q","filter","BazaarPageHeader","header","buttons","concat","pagesButtons","settingsButton","requirementsButtons","connectedButtons","modal","show","memory_limit_met","memory_limit","memory_requested","file_permissions","components","push","flagrowHost","routeName","links","title","active","CustomCheckbox","attrs","Object","assign","state","type","iconName","disabled","onchange","getButtonContent","ExtensionList","moreResults","resultMeta","extensions","refresh","pages_current","total","pages_total","loadMore","text","map","extension","key","package","clear","loadResults","then","results","parseResults","redraw","offset","requestParams","page","include","join","store","find","apply","payload","next","meta","lazyRedraw","out","sortMap","window","$","relevance","ExtensionListItem","isInitialized","tooltip","container","controls","controlItems","toArray","badges","enabled","installed","outdated","pending","favorited","flarumCompatibilityCurrent","id","name","split","downloads","favorites","installed_version","highest_version","favoriteExtension","discuss_link","open","landing_link","favoriteTrans","can_uninstall","uninstallExtension","can_enable","enableExtension","updateExtension","can_disable","disableExtension","can_install","installExtension","premium","canCheckout","premiumExtensionSubscribe","canSafelyUnsubscribe","premiumExtensionUnsubscribe","flarumCompatibilityNext","flarumCompatibilityLatest","subscribed","new","ExtensionSearch","updateDebounce","value","oninput","withAttr","term","placeholder","isToggled","checked","toggleFilter","is","indexOf","i","splice","TaskListItem","extended","task","status","created_at","command","started_at","finished_at","output","TasksPage","loadNextPage","loader","taskGroups","group","tasks","currentGroup","today","Date","setHours","forEach","taskDate","initializers","models","addBazaarPage","addTasksPage","BazaarConnectModal","content","host","connect","popup","request","method","url","forum","attribute","response","redirect","close","BazaarSettingsModal","form","for","setting","a","bidi","DashboardModal","syncing","updateSetting","submitButton","saveSettings","FilePermissionsModal","permissions","paths","MemoryLimitModal","required","limit","Extension","license","locale","flarum_id","canUnsubscribe","Task","ExtensionRepository","requestError","timeout","updateExtensionInRepository","catch","installFailure","resetNavigation","uninstallFailure","favorite","buy","waitForUrl","alert","toggleExtension","getExtensionIndex","findIndex","ext","createRecord","nextPageUrl","result","newTasks","func","wait","immediate","context","args","arguments","later","callNow","clearTimeout","setTimeout","width","height","$window","deferred","interval","setInterval","closed","clearInterval","reject","document","URL","resolve","e","promise"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import {extend} from 'flarum/extend';\nimport app from 'flarum/app';\nimport AdminNav from 'flarum/components/AdminNav';\nimport AdminLinkButton from 'flarum/components/AdminLinkButton';\nimport BazaarPage from './components/BazaarPage';\n\nexport default function () {\n // create the route\n app.routes['flagrow-bazaar'] = {path: '/flagrow/bazaar', component: BazaarPage.component()};\n // settings toggle on native extensions page\n app.extensionSettings['flagrow-bazaar'] = () => m.route(app.route('flagrow-bazaar'));\n // Add tab to admin menu\n extend(AdminNav.prototype, 'items', items => {\n items.add('flagrow-bazaar', AdminLinkButton.component({\n href: app.route('flagrow-bazaar'),\n icon: 'fas fa-shopping-bag',\n children: app.translator.trans('flagrow-bazaar.admin.nav.title'),\n description: app.translator.trans('flagrow-bazaar.admin.nav.description')\n }));\n });\n}\n","import {extend} from 'flarum/extend';\nimport app from 'flarum/app';\nimport TasksPage from './components/TasksPage';\n\nexport default function () {\n app.routes['flagrow-bazaar-tasks'] = {path: '/flagrow/bazaar/tasks', component: TasksPage.component()};\n}\n","import Component from 'flarum/Component';\nimport icon from \"flarum/helpers/icon\";\nimport Button from 'flarum/components/Button';\nimport LinkButton from 'flarum/components/LinkButton';\n\nexport default class BazaarLoader extends Component {\n\n view() {\n const error = this.props.loading() === 'error';\n\n return m('div', {\n className: 'Bazaar--Loader ' + (error ? 'Error' : null),\n hidden: this.props.loading() === false\n }, [\n m('.Loader-modal', [\n m('.Loader-icon', icon(error ? 'fas fa-exclamation-triangle' : 'fas fa-shopping-bag')),\n m('div', [\n m('p', app.translator.trans(error ? 'flagrow-bazaar.admin.loader.error' : 'flagrow-bazaar.admin.loader.is_loading')),\n error ? [\n Button.component({\n className: 'Button Button--block',\n icon: 'fas fa-sync',\n onclick: () => location.reload(),\n children: app.translator.trans('flagrow-bazaar.admin.loader.refresh')\n }),\n Button.component({\n className: 'Button Button--block',\n icon: 'fas fa-times',\n onclick: () => this.props.loading(false),\n children: app.translator.trans('flagrow-bazaar.admin.loader.close')\n }),\n LinkButton.component({\n className: 'Button Button--block',\n icon: 'fas fa-bug',\n href: 'https://github.com/flagrow/bazaar/issues',\n target: '_blank',\n config: {}, // Disable internal Mithril routing\n children: app.translator.trans('flagrow-bazaar.admin.loader.report_issue')\n }),\n ] : null\n ])\n ])\n ])\n }\n}\n","import Component from \"flarum/Component\";\nimport ExtensionRepository from \"../utils/ExtensionRepository\";\nimport ExtensionList from \"./ExtensionList\";\nimport ExtensionSearch from \"./ExtensionSearch\";\nimport BazaarPageHeader from './BazaarPageHeader';\n\n\nexport default class BazaarPage extends Component {\n init() {\n app.current = this;\n\n this.authorized = (app.data.settings['flagrow.bazaar.api_token'] || '').length > 0;\n this.connected = app.data.settings['flagrow.bazaar.connected'] && app.data.settings['flagrow.bazaar.connected'] !== '0';\n this.loading = m.prop(true);\n\n this.params = this.params();\n\n this.repository = new ExtensionRepository(this.loading);\n\n this.extensionList = new ExtensionList({\n params: this.params,\n loading: this.loading,\n repository: this.repository,\n connected: this.connected,\n authorized: this.authorized\n });\n\n this.search = ExtensionSearch.component({params: this.params, onsubmit: this.updateResults.bind(this)});\n }\n\n updateResults(params) {\n this.params = params;\n\n this.extensionList.update(params);\n }\n\n view() {\n return m('div', {className: 'Bazaar Extensions'}, [\n BazaarPageHeader.component({\n connected: this.connected\n }),\n m('div', {className: 'ExtensionsPage-list'}, [\n m('div', {className: 'container'}, [\n this.search,\n this.extensionList.render()\n ])\n ]),\n ]);\n }\n\n /**\n * Get URL parameters that stick between filter changes.\n *\n * @return {Object}\n */\n stickyParams() {\n return {\n sort: m.route.param('sort'),\n q: m.route.param('q')\n };\n }\n\n\n /**\n * Get parameters to pass to the DiscussionList component.\n *\n * @return {Object}\n */\n params() {\n const params = this.stickyParams();\n\n params.filter = m.route.param('filter');\n\n return params;\n }\n}\n","import app from 'flarum/app';\nimport Component from 'flarum/Component';\nimport LinkButton from 'flarum/components/LinkButton';\nimport Button from 'flarum/components/Button';\nimport FilePermissionsModal from '../modals/FilePermissionsModal';\nimport MemoryLimitModal from '../modals/MemoryLimitModal';\nimport BazaarConnectModal from '../modals/BazaarConnectModal';\nimport BazaarSettingsModal from '../modals/BazaarSettingsModal';\nimport DashboardModal from '../modals/DashboardModal';\n\nexport default class BazaarPageHeader extends Component {\n view() {\n return (\n
\n
\n {this.header()}\n
\n
\n );\n }\n\n header() {\n let buttons = [].concat(\n this.pagesButtons(),\n this.settingsButton(),\n this.requirementsButtons(),\n this.connectedButtons(),\n );\n\n return m('div', {className: 'ButtonGroup'}, buttons);\n }\n\n settingsButton() {\n return [\n Button.component({\n className: 'Button Button--icon',\n icon: 'fas fa-cog',\n onclick: () => app.modal.show(new BazaarSettingsModal)\n })\n ];\n }\n /**\n * Loads a list of buttons that give insight in the state of this installation.\n * @returns {Array}\n */\n requirementsButtons() {\n let memory_limit_met = app.data.settings['flagrow.bazaar.php.memory_limit-met'] || false;\n let memory_limit = app.data.settings['flagrow.bazaar.php.memory_limit'];\n let memory_requested = app.data.settings['flagrow.bazaar.php.memory_requested'];\n let file_permissions = app.data.settings['flagrow.bazaar.file-permissions'] || [];\n\n let components = [];\n\n if (!memory_limit_met) {\n components.push(\n Button.component({\n className: 'Button Button--icon Requirement-MemoryLimit',\n icon: 'fas fa-signal',\n onclick: () => app.modal.show(new MemoryLimitModal({memory_requested, memory_limit}))\n })\n );\n }\n\n if (file_permissions.length > 0) {\n components.push(Button.component({\n className: 'Button Button--icon Requirement-FilePermissions',\n icon: 'fas fa-hdd',\n onclick: () => app.modal.show(new FilePermissionsModal({file_permissions}))\n }));\n }\n\n return components;\n }\n\n connectedButtons() {\n let connected = this.props.connected;\n let flagrowHost = app.data.settings['flagrow.bazaar.flagrow-host'] || 'https://flagrow.io';\n\n if (connected) {\n return [\n Button.component({\n className: 'Button Button--icon Connected',\n icon: 'fas fa-plug',\n onclick: () => app.modal.show(new DashboardModal({\n flagrowHost\n }))\n }),\n ]\n }\n\n return [\n Button.component({\n className: 'Button Button--icon Connect',\n icon: 'fas fa-plug',\n onclick: () => app.modal.show(new BazaarConnectModal({flagrowHost}))\n }),\n ]\n }\n\n pagesButtons() {\n // Sometimes no route has been set as the current one\n if (typeof app.current === 'undefined') {\n return null;\n }\n\n const routeName = app.current.props.routeName;\n let links = [];\n\n links.push(LinkButton.component({\n className: 'Button Button--icon',\n icon: 'fas fa-shopping-bag',\n href: app.route('flagrow-bazaar'),\n title: app.translator.trans('flagrow-bazaar.admin.header.extensions'),\n active: routeName === 'flagrow-bazaar'\n }));\n\n links.push(LinkButton.component({\n className: 'Button Button--icon',\n icon: 'fas fa-history',\n href: app.route('flagrow-bazaar-tasks'),\n title: app.translator.trans('flagrow-bazaar.admin.header.tasks'),\n active: routeName === 'flagrow-bazaar-tasks'\n }));\n\n return links;\n }\n}\n","import Button from \"flarum/components/Button\";\nimport icon from 'flarum/helpers/icon';\nimport extract from 'flarum/utils/extract';\nimport extractText from 'flarum/utils/extractText';\n\nexport default class CustomCheckbox extends Button {\n view() {\n const attrs = Object.assign({}, this.props);\n\n delete attrs.state;\n delete attrs.children;\n\n attrs.className = attrs.className || '';\n attrs.type = attrs.type || 'button';\n\n if (this.props.state) attrs.className += ' active';\n\n // If nothing else is provided, we use the textual button content as tooltip\n if (!attrs.title && this.props.children) {\n attrs.title = extractText(this.props.children);\n }\n\n const iconName = extract(attrs, 'icon');\n if (iconName) attrs.className += ' hasIcon';\n\n const loading = extract(attrs, 'loading');\n if (attrs.disabled || loading) {\n attrs.className += ' disabled' + (loading ? ' loading' : '');\n delete attrs.onclick;\n }\n\n return (\n \n );\n }\n\n /**\n * Run a callback when the state of the checkbox is changed.\n *\n * @param {Boolean} checked\n * @protected\n */\n onchange() {\n if (this.props.onchange) this.props.onchange(! this.props.state, this);\n }\n}\n","import Component from 'flarum/Component';\nimport Button from 'flarum/components/Button';\nimport ExtensionListItem from './ExtensionListItem';\nimport BazaarLoader from \"./BazaarLoader\";\nimport Placeholder from 'flarum/components/Placeholder';\n\nexport default class ExtensionList extends Component {\n init() {\n /**\n * Whether or not discussion results are loading.\n *\n * @type {Boolean}\n */\n this.loading = this.props.loading;\n\n /**\n * Whether or not there are more results that can be loaded.\n *\n * @type {Boolean}\n */\n this.moreResults = false;\n this.resultMeta = {};\n\n // this.repository = new ExtensionRepository(this.loading);\n\n /**\n * The discussions in the discussion list.\n *\n * @type {Extension[]}\n */\n this.extensions = [];\n\n this.refresh();\n }\n\n\n\n view() {\n let loading;\n\n if (this.loading()) {\n loading = BazaarLoader.component({loading: this.loading});\n } else if (this.moreResults) {\n loading = [\n Button.component({\n children: app.translator.trans('flagrow-bazaar.admin.page.button.more', {current: this.resultMeta.pages_current + 1, total: this.resultMeta.pages_total}),\n className: 'Button Button--primary',\n onclick: this.loadMore.bind(this)\n })\n ];\n }\n\n if (this.extensions.length === 0 && !this.loading) {\n let text = app.translator.trans('flagrow-bazaar.admin.page.state.no_results_available');\n\n if (! this.props.authorized) {\n text = app.translator.trans('flagrow-bazaar.admin.page.state.not_authorized');\n }\n\n return (\n
\n {Placeholder.component({text})}\n
\n );\n }\n\n return (\n
\n
\n {this.extensions.map(extension => {\n return ExtensionListItem.component({\n extension: extension,\n repository: this.props.repository,\n connected: this.props.connected,\n key: extension.package(),\n });\n })}\n
\n
\n {loading}\n
\n
\n );\n }\n\n update(params) {\n this.props.params = params;\n\n this.refresh();\n }\n\n /**\n * Clear and reload the discussion list.\n *\n * @public\n */\n refresh(clear = true) {\n if (clear) {\n this.loading(true);\n this.extensions = [];\n }\n\n return this.loadResults().then(\n results => {\n this.extensions = [];\n this.parseResults(results);\n },\n () => {\n this.loading(false);\n m.redraw();\n }\n );\n }\n\n /**\n * Load a new page of discussion results.\n *\n * @param {Integer} offset The index to start the page at.\n * @return {Promise}\n */\n loadResults(offset) {\n const params = this.requestParams();\n params.page = {offset};\n params.include = params.include.join(',');\n\n return app.store.find('bazaar/extensions', params);\n }\n\n /**\n * Parse results and append them to the discussion list.\n *\n * @param {Extension[]} results\n * @return {Extension[]}\n */\n parseResults(results) {\n [].push.apply(this.extensions, results);\n\n this.loading(false);\n this.moreResults = !!results.payload.links.next;\n this.resultMeta = results.payload.meta || {};\n\n m.lazyRedraw();\n\n return results;\n }\n\n /**\n * Load the next page of discussion results.\n *\n * @public\n */\n loadMore() {\n this.loading(true);\n\n this.loadResults(this.extensions.length)\n .then(this.parseResults.bind(this));\n }\n\n /**\n * Get the parameters that should be passed in the API request to get\n * discussion results.\n *\n * @return {Object}\n * @api\n */\n requestParams() {\n const params = this.props.params;\n const out = {include: [], filter: {}};\n\n out.sort = this.sortMap()[params.sort];\n\n if (params.q) {\n out.filter.q = params.q;\n }\n\n if (params.filter) {\n out.filter = window.$.param(params.filter);\n }\n\n return out;\n }\n\n /**\n * Get a map of sort keys (which appear in the URL, and are used for\n * translation) to the API sort value that they represent.\n *\n * @return {Object}\n */\n sortMap() {\n const map = {};\n\n if (this.props.params.q) {\n map.relevance = '';\n }\n\n return map;\n }\n}\n","import Component from \"flarum/Component\";\nimport icon from \"flarum/helpers/icon\";\nimport ItemList from \"flarum/utils/ItemList\";\nimport Button from \"flarum/components/Button\";\nimport Dropdown from \"flarum/components/Dropdown\";\nimport Badge from 'flarum/components/Badge';\n\nexport default class ExtensionListItem extends Component {\n config(isInitialized) {\n if (isInitialized) return;\n\n // Be careful to always use a `key` with this component or this mis-align the tooltips if items are added or removed\n if (this.props.extension.description()) this.$('.ExtensionIcon').tooltip({container: 'body'});\n }\n\n view() {\n const extension = this.props.extension;\n const connected = this.props.connected || false;\n const controls = this.controlItems(extension, connected).toArray();\n const badges = this.badges(extension).toArray();\n const repository = this.props.repository;\n\n return
0 ? 'hasControls' : '') +\n (extension.favorited() ? 'favorited' : '') +\n (extension.flarumCompatibilityCurrent() ? ' compatible' : 'incompatible')\n } key={extension.id()} data-id={extension.id()}>\n \n {extension.icon() ? icon('fas fa-' + extension.icon().name) : ''}\n \n
\n
    \n {badges}\n
\n \n\n
\n {extension.description()}\n
\n\n
\n
{app.translator.trans('flagrow-bazaar.admin.page.extension.vendor')}
\n
{extension.package().split('/')[0]}
\n
\n
\n
{app.translator.trans('flagrow-bazaar.admin.page.extension.downloads')}
\n
{extension.downloads()}
\n
\n
\n
{app.translator.trans('flagrow-bazaar.admin.page.extension.favorites')}
\n
{extension.favorites()}
\n
\n {extension.installed_version() ? (\n
\n
{app.translator.trans('flagrow-bazaar.admin.page.extension.installed_version')}
\n
{extension.installed_version()}
\n
\n ) : ''}\n
\n
{app.translator.trans('flagrow-bazaar.admin.page.extension.highest_version')}
\n
{extension.highest_version()}
\n
\n
\n {connected ? (\n repository.favoriteExtension(extension)}>\n \n ) : ''}\n {extension.discuss_link() ? (\n window.open(extension.discuss_link())}>\n \n ) : ''}\n {extension.landing_link() ? (\n window.open(extension.landing_link())}>\n \n ) : ''}\n \n {controls}\n \n
\n
\n
;\n }\n\n controlItems(extension, connected) {\n const items = new ItemList();\n const repository = this.props.repository;\n\n const favoriteTrans = extension.favorited() ? 'flagrow-bazaar.admin.page.button.remove_favorite_button' : 'flagrow-bazaar.admin.page.button.favorite_button';\n\n if (connected) {\n items.add('favorite', Button.component({\n icon: 'fas fa-heart',\n children: app.translator.trans(favoriteTrans),\n onclick: () => {\n repository.favoriteExtension(extension);\n }\n }));\n }\n\n if (! extension.pending()) {\n if (extension.enabled() && app.extensionSettings[name]) {\n items.add('settings', Button.component({\n icon: 'fas fa-cog',\n children: app.translator.trans('core.admin.extensions.settings_button'),\n onclick: app.extensionSettings[name]\n }));\n }\n\n if (extension.can_uninstall()) {\n items.add('uninstall', Button.component({\n icon: 'fas fa-minus-square',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.uninstall'),\n onclick: () => {\n repository.uninstallExtension(extension);\n }\n }));\n }\n\n if (extension.can_enable()) {\n items.add('enable', Button.component({\n icon: 'fas fa-check-square',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.enable'),\n onclick: () => {\n repository.enableExtension(extension);\n }\n }));\n }\n\n if (extension.installed() && extension.outdated()) {\n items.add('update', Button.component({\n icon: 'fas fa-level-up',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.update'),\n onclick: () => {\n repository.updateExtension(extension);\n }\n }));\n }\n\n if (extension.can_disable()) {\n items.add('disable', Button.component({\n icon: 'fas fa-square',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.disable'),\n onclick: () => {\n repository.disableExtension(extension);\n }\n }));\n }\n\n if (extension.can_install()) {\n items.add('install', Button.component({\n icon: 'fas fa-plus-square',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.install'),\n onclick: () => {\n repository.installExtension(extension);\n }\n }));\n }\n }\n\n if (extension.premium() && !connected) {\n items.add('subscribe', Button.component({\n disabled: true,\n icon: 'fas fa-shopping-cart',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.connect_to_subscribe'),\n }));\n }\n\n if (extension.canCheckout() && connected) {\n items.add('subscribe', Button.component({\n icon: 'fas fa-shopping-cart',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.subscribe'),\n onclick: () => {\n repository.premiumExtensionSubscribe(extension);\n }\n }));\n }\n\n if (extension.canSafelyUnsubscribe() && connected) {\n items.add('unsubscribe', Button.component({\n icon: 'fas fa-ban',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.unsubscribe'),\n onclick: () => {\n repository.premiumExtensionUnsubscribe(extension);\n }\n }));\n }\n\n return items;\n }\n\n /**\n * Get the Badge components that apply to this discussion.\n *\n * @return {ItemList}\n * @public\n */\n badges(extension) {\n const items = new ItemList();\n\n if (!extension.flarumCompatibilityNext()) {\n items.add('nextIncompatible', )\n }\n if (!extension.flarumCompatibilityLatest()) {\n items.add('latestIncompatible', )\n }\n if (!extension.flarumCompatibilityCurrent()) {\n items.add('incompatible', )\n }\n if (extension.subscribed()) {\n items.add('subscribed', );\n } else if (extension.premium()) {\n items.add('premium', );\n }\n if (extension.pending()) {\n items.add('pending', );\n }\n // if (extension.installed() && extension.outdated()) {\n items.add('outdated', )\n // }\n if (extension.favorited()) {\n items.add('favorited', )\n }\n if (extension.installed() && !extension.enabled()) {\n items.add('installed', )\n }\n if (extension.enabled()) {\n items.add('enabled', )\n }\n\n return items;\n }\n}\n","import Component from \"flarum/Component\";\nimport CustomCheckbox from \"./CustomCheckbox\";\nimport debounce from \"../utils/debounce\";\n\nexport default class ExtensionSearch extends Component {\n init() {\n this.updateDebounce = debounce(() => {\n if (this.props.onsubmit) this.props.onsubmit(this.props.params);\n }, 500);\n }\n\n view() {\n return m('div', [\n m('fieldset', {className: 'ExtensionSearch'},\n m('input[type=text].FormControl', {\n value: this.props.params.q || '',\n oninput: m.withAttr('value', term => this.search(term)),\n placeholder: app.translator.trans('flagrow-bazaar.admin.search.placeholder'),\n })\n ),\n m('div', {className: 'ExtensionFilters ButtonGroup'}, [\n CustomCheckbox.component({\n icon: 'fas fa-level-up',\n className: 'Button hasIcon',\n state: this.isToggled('update'),\n onchange: (checked) => this.toggleFilter('update', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_update')\n }),\n CustomCheckbox.component({\n icon: 'fas fa-circle-notch',\n className: 'Button hasIcon',\n state: this.isToggled('pending'),\n onchange: (checked) => this.toggleFilter('pending', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_pending')\n }),\n CustomCheckbox.component({\n icon: 'fas fa-plus-square',\n className: 'Button hasIcon',\n state: this.isToggled('installed'),\n onchange: (checked) => this.toggleFilter('installed', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_installed')\n }),\n this.connected ? [\n CustomCheckbox.component({\n icon: 'fas fa-heart',\n className: 'Button hasIcon',\n state: this.isToggled('favorited'),\n onchange: (checked) => this.toggleFilter('favorited', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_favorited')\n }),\n CustomCheckbox.component({\n icon: 'fas fa-shopping-cart',\n className: 'Button hasIcon',\n state: this.isToggled('subscribed'),\n onchange: (checked) => this.toggleFilter('subscribed', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_subscribed')\n }),\n ] : '',\n CustomCheckbox.component({\n icon: 'fas fa-certificate',\n className: 'Button hasIcon',\n state: this.isToggled('premium'),\n onchange: (checked) => this.toggleFilter('premium', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_premium')\n }),\n ])\n ])\n }\n\n isToggled(name) {\n const filter = this.props.params.filter || {};\n const is = filter.is || [];\n\n return is.indexOf(name) >= 0;\n }\n\n toggleFilter(name, checked) {\n let filter = this.props.params.filter || {};\n let is = filter.is || [];\n\n const i = is.indexOf(name);\n\n if (checked && i === -1) {\n is.push(name);\n } else if (!checked && i >= 0) {\n is.splice(i, 1);\n }\n\n filter.is = is;\n\n this.props.params.filter = filter;\n\n this.updateDebounce();\n }\n\n search(term) {\n this.props.params.q = term;\n\n this.updateDebounce();\n }\n}\n","import app from 'flarum/app';\nimport Component from \"flarum/Component\";\nimport icon from \"flarum/helpers/icon\";\nimport Button from \"flarum/components/Button\";\nimport humanTime from 'flarum/helpers/humanTime';\nimport fullTime from 'flarum/helpers/fullTime';\n\nexport default class TaskListItem extends Component {\n init() {\n this.extended = m.prop(false);\n }\n\n view() {\n const task = this.props.task;\n const iconName = (function() {\n switch (task.status()) {\n case 'success':\n return 'fas fa-check';\n case 'exception':\n return 'fas fa-exclamation';\n case 'working':\n return 'fas fa-spinner';\n }\n return 'fas fa-clock';\n })();\n\n // We need to wrap items in a tbody because Mithril 0.2 and therefore flarum/Component does not allow a list of vnodes to be returned from a view\n // And we can't wrap in anything else without breaking the table\n // Having multiple does not seem to be too much an issue https://stackoverflow.com/a/3076790/3133038\n return (\n \n \n { humanTime(task.created_at()) }\n
{ icon(iconName) }
\n \n { app.translator.trans('flagrow-bazaar.admin.page.task.command.' + task.command(), {extension: ({ task.package() })}) }\n \n \n { Button.component({\n icon: 'fas fa-plus',\n className: 'Button',\n onclick: () => { this.extended(!this.extended()); }\n }) }\n \n \n { this.extended() ? (\n \n \n
\n
{ app.translator.trans('flagrow-bazaar.admin.page.task.attribute.created_at') }
\n
{ fullTime(task.created_at()) }
\n
\n
\n
{ app.translator.trans('flagrow-bazaar.admin.page.task.attribute.started_at') }
\n
{ fullTime(task.started_at()) }
\n
\n
\n
{ app.translator.trans('flagrow-bazaar.admin.page.task.attribute.finished_at') }
\n
{ fullTime(task.finished_at()) }
\n
\n

{ app.translator.trans('flagrow-bazaar.admin.page.task.header.output') }

\n
{ task.output() }
\n \n \n ) : null}\n \n );\n }\n}\n","import app from 'flarum/app';\nimport Component from 'flarum/Component';\nimport TaskRepository from './../utils/TaskRepository';\nimport BazaarPageHeader from './BazaarPageHeader';\nimport TaskListItem from './TaskListItem';\nimport BazaarLoader from './BazaarLoader';\n\nexport default class TasksPage extends Component {\n init() {\n // Used in the header\n app.current = this;\n\n this.loading = m.prop(false);\n this.repository = new TaskRepository(this.loading);\n this.repository.loadNextPage();\n this.loader = BazaarLoader.component({loading: this.loading});\n this.connected = app.data.settings['flagrow.bazaar.connected'] && app.data.settings['flagrow.bazaar.connected'] !== '0';\n }\n\n view() {\n return (\n
\n {BazaarPageHeader.component({connected: this.connected})}\n\n
\n
\n { this.taskGroups().map(\n group => group.tasks.length ? (\n
\n

{ group.title }

\n \n \n \n \n \n \n \n \n \n { group.tasks.map(\n task => m(TaskListItem, {task: task})\n ) }\n
{ app.translator.trans('flagrow-bazaar.admin.page.task.header.time') }{ app.translator.trans('flagrow-bazaar.admin.page.task.header.status') }{ app.translator.trans('flagrow-bazaar.admin.page.task.header.command') }{ app.translator.trans('flagrow-bazaar.admin.page.task.header.details') }
\n
\n ) : null\n ) }\n
\n
\n { this.loader }\n
\n );\n }\n\n /**\n * Split tasks into three groups: today, this month and older\n */\n taskGroups() {\n let taskGroups = [\n {\n title: app.translator.trans('flagrow-bazaar.admin.page.task.group.today'),\n tasks: []\n },\n {\n title: app.translator.trans('flagrow-bazaar.admin.page.task.group.lastmonth'),\n tasks: []\n },\n {\n title: app.translator.trans('flagrow-bazaar.admin.page.task.group.older'),\n tasks: []\n }\n ];\n let currentGroup = 0;\n\n // Milliseconds from 1 January 1970 00:00:00 UTC\n const today = (new Date()).setHours(0,0,0,0);\n\n this.repository.tasks().forEach(task => {\n // Milliseconds from 1 January 1970 00:00:00 UTC\n const taskDate = new Date(task.created_at()).setHours(0,0,0,0);\n\n switch (currentGroup) {\n case 0:\n if (taskDate === today) {\n taskGroups[currentGroup].tasks.push(task);\n } else {\n currentGroup++;\n }\n break;\n case 1:\n // Check if the date is within the last 30 days\n if ((today - taskDate) / (1000 * 3600 * 24) <= 30) {\n taskGroups[currentGroup].tasks.push(task);\n } else {\n currentGroup++;\n }\n break;\n default:\n taskGroups[currentGroup].tasks.push(task);\n }\n });\n\n return taskGroups;\n }\n}\n","import { extend } from 'flarum/extend';\nimport app from 'flarum/app';\nimport Extension from './models/Extension';\nimport Task from './models/Task';\nimport addBazaarPage from './addBazaarPage';\nimport addTasksPage from './addTasksPage';\n\napp.initializers.add('flagrow-bazaar', app => {\n app.store.models['bazaar-extensions'] = Extension;\n app.store.models['bazaar-tasks'] = Task;\n\n addBazaarPage();\n addTasksPage();\n});\n","import Modal from \"flarum/components/Modal\";\nimport Button from \"flarum/components/Button\";\n\nexport default class BazaarConnectModal extends Modal {\n className() {\n return 'FilePermissionsModal';\n }\n\n title() {\n return app.translator.trans('flagrow-bazaar.admin.modal.connect-bazaar.title');\n }\n\n content() {\n let flagrowHost = this.props.flagrowHost;\n\n return m('div', {className: 'Modal-body'}, [\n m('p', app.translator.trans('flagrow-bazaar.admin.modal.connect-bazaar.description', {host: flagrowHost})),\n m('div', {className: \"App-primaryControl\"}, [\n Button.component({\n type: 'submit',\n className: 'Button Button--primary Button--block',\n disabled: false,\n icon: 'check',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.connect')\n })\n ])\n ]\n );\n }\n\n connect() {\n var popup = window.open();\n\n app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/bazaar/connect'\n }).then(response => {\n if (response && response.redirect) {\n popup.location = response.redirect;\n } else {\n popup.close()\n }\n });\n }\n\n /**\n * Handle the modal form's submit event.\n *\n * @param {Event} e\n */\n onsubmit() {\n this.connect();\n }\n}\n","import app from 'flarum/app';\nimport SettingsModal from 'flarum/components/SettingsModal';\nimport Switch from 'flarum/components/Switch';\n\nexport default class BazaarSettingsModal extends SettingsModal {\n\n title() {\n return app.translator.trans('flagrow-bazaar.admin.modal.settings.title');\n }\n\n form() {\n return [\n m('div', { className: 'Form-group' }, [\n m('label', { for: 'use-cron' }, app.translator.trans('flagrow-bazaar.admin.modal.settings.field.use_cron_for_tasks.label')),\n Switch.component({\n state: this.setting('flagrow.bazaar.use_cron_for_tasks')(),\n onchange: this.setting('flagrow.bazaar.use_cron_for_tasks'),\n children: app.translator.trans('flagrow-bazaar.admin.modal.settings.field.use_cron_for_tasks.toggle')\n }),\n m('span', app.translator.trans('flagrow-bazaar.admin.modal.settings.field.use_cron_for_tasks.description', {\n a: \n }))\n ]),\n m('div', { className: 'Form-group' }, [\n m('label', { for: 'bazaar-api-token' }, app.translator.trans('flagrow-bazaar.admin.modal.settings.field.token.label')),\n m('input', {\n id: 'bazaar-api-token',\n className: 'FormControl',\n bidi: this.setting('flagrow.bazaar.api_token')\n }),\n m('span', app.translator.trans('flagrow-bazaar.admin.modal.settings.field.token.description'))\n ])\n ];\n }\n}\n","import Switch from 'flarum/components/Switch';\nimport SettingsModal from 'flarum/components/SettingsModal';\nimport saveSettings from 'flarum/utils/saveSettings';\nimport Button from 'flarum/components/Button';\n\nexport default class DashboardModal extends SettingsModal {\n title() {\n return app.translator.trans('flagrow-bazaar.admin.modal.dashboard.title');\n }\n\n form() {\n const flagrowHost = this.props.flagrowHost;\n const syncing = this.setting('flagrow.bazaar.sync', false);\n\n return m('div', { className: 'Modal-body' }, [\n m('p', app.translator.trans('flagrow-bazaar.admin.modal.dashboard.sync.description', { host: flagrowHost })),\n Switch.component({\n state: (syncing() === true || syncing() == 1),\n onchange: this.updateSetting.bind(this, syncing, 'flagrow.bazaar.sync'),\n children: app.translator.trans('flagrow-bazaar.admin.modal.dashboard.sync.switch', { host: flagrowHost })\n }),\n ]\n );\n }\n\n submitButton() {\n const flagrowHost = this.props.flagrowHost;\n return m('div', {className: 'ButtonGroup'}, [\n Button.component({\n className: 'Button Connected',\n icon: 'dashboard',\n children: app.translator.trans('flagrow-bazaar.admin.modal.dashboard.visit-remote-dashboard'),\n onclick: () => window.open(flagrowHost + '/home')\n })\n ]);\n }\n\n /**\n * Updates setting in database.\n * @param prop\n * @param setting\n * @param value\n */\n updateSetting(prop, setting, value) {\n saveSettings({\n [setting]: value\n });\n\n prop(value);\n }\n}\n","import Modal from \"flarum/components/Modal\";\n\nexport default class FilePermissionsModal extends Modal {\n className() {\n return 'FilePermissionsModal';\n }\n\n title() {\n return app.translator.trans('flagrow-bazaar.admin.modal.requirements.file-permissions.title');\n }\n\n content() {\n var permissions = this.props.file_permissions;\n var paths = [];\n\n permissions.forEach(path => {\n paths.push(m('li', m('span', {className: 'code'}, path)))\n })\n\n return m('div', {className: 'Modal-body'}, [\n m('p', app.translator.trans(\n 'flagrow-bazaar.admin.modal.requirements.file-permissions.description',\n {a: }\n )),\n m('ul', paths)\n ]\n );\n }\n}\n","import Modal from \"flarum/components/Modal\";\n\nexport default class MemoryLimitModal extends Modal {\n className() {\n return 'MemoryLimitModal';\n }\n\n title() {\n return app.translator.trans('flagrow-bazaar.admin.modal.requirements.php-memory_limit.title');\n }\n\n content() {\n let memory_requested = this.props.memory_requested;\n let memory_limit = this.props.memory_limit;\n\n return m(\n 'div',\n {className: 'Modal-body'},\n app.translator.trans(\n 'flagrow-bazaar.admin.modal.requirements.php-memory_limit.description',\n {\n required: memory_requested,\n limit: memory_limit,\n a: \n }\n )\n );\n }\n}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\nimport computed from 'flarum/utils/computed';\n\nexport default class Extension extends mixin(Model, {\n package: Model.attribute('package'),\n title: Model.attribute('title'),\n description: Model.attribute('description'),\n license: Model.attribute('license'),\n icon: Model.attribute('icon'),\n locale: Model.attribute('locale'),\n\n discuss_link: Model.attribute('discuss_link'),\n landing_link: Model.attribute('landing_link'),\n\n downloads: Model.attribute('downloads'),\n\n installed: Model.attribute('installed'),\n enabled: Model.attribute('enabled'),\n pending: Model.attribute('pending'),\n installed_version: Model.attribute('installed_version'),\n highest_version: Model.attribute('highest_version'),\n outdated: Model.attribute('outdated'),\n\n flarum_id: Model.attribute('flarum_id'),\n\n premium: Model.attribute('premium'),\n subscribed: Model.attribute('subscribed'),\n\n // Install/uninstall\n // Extension is available if it's either non-premium or premium & subscribed\n can_install: computed('installed', 'premium', 'subscribed', 'flarumCompatibilityCurrent', (installed, premium, subscribed, flarumCompatibilityCurrent) => !installed && flarumCompatibilityCurrent && (!premium || subscribed)),\n can_uninstall: computed('installed', 'enabled', (installed, enabled) => installed && !enabled),\n\n // Enable/disable\n can_enable: computed('installed', 'enabled', (installed, enabled) => installed && !enabled),\n can_disable: computed('installed', 'enabled', (installed, enabled) => installed && enabled),\n\n canCheckout: Model.attribute('canCheckout'),\n canUnsubscribe: Model.attribute('canUnsubscribe'),\n canSafelyUnsubscribe: computed('canUnsubscribe', 'installed', (canUnsubscribe, installed) => canUnsubscribe && !installed),\n\n favorites: Model.attribute('favorites'),\n favorited: Model.attribute('favorited'),\n\n flarumCompatibilityLatest: Model.attribute('flarumCompatibilityLatest'),\n flarumCompatibilityNext: Model.attribute('flarumCompatibilityNext'),\n flarumCompatibilityCurrent: Model.attribute('flarumCompatibilityCurrent'),\n}) {}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class Task extends mixin(Model, {\n status: Model.attribute('status'),\n command: Model.attribute('command'),\n package: Model.attribute('package'),\n output: Model.attribute('output'),\n created_at: Model.attribute('created_at'),\n started_at: Model.attribute('started_at'),\n finished_at: Model.attribute('finished_at')\n}) {}\n","import app from \"flarum/app\";\nimport popupPromise from './popupPromise';\n\nexport default class ExtensionRepository {\n constructor(loading) {\n this.extensions = m.prop([]);\n this.loading = loading;\n }\n\n /**\n * Handles a request error\n */\n requestError() {\n // If an error occured, we can clear the loading overlay\n // The error means it's not processing anymore\n this.loading('error');\n\n // Depending on how fast the \"Oops! Something went wrong\" popup appears,\n // the loading change is not taken into account. Use redraw to force remove the overlay\n m.redraw();\n }\n\n /**\n * Install an extension.\n * @param extension\n */\n installExtension(extension) {\n this.loading(true);\n\n app.request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/bazaar/extensions',\n timeout: 0,\n data: {\n id: extension.id()\n }\n }).then(response => {\n this.updateExtensionInRepository(response)\n }).catch(() => this.requestError());\n }\n\n /**\n * Handles an installation failure.\n * @param extension\n */\n installFailure(extension) {\n this.resetNavigation();\n this.loadNextPage();\n }\n\n /**\n * Uninstall an extension.\n * @param extension\n */\n uninstallExtension(extension) {\n this.loading(true);\n\n app.request({\n method: 'DELETE',\n timeout: 0,\n url: app.forum.attribute('apiUrl') + '/bazaar/extensions/' + extension.id()\n }).then(response => {\n this.updateExtensionInRepository(response)\n }).catch(() => this.requestError());\n }\n\n /**\n * Handles an uninstall failure.\n * @param extension\n */\n uninstallFailure(extension) {\n this.resetNavigation();\n this.loadNextPage();\n }\n\n /**\n * Processing (de-) favoriting extensions.\n * @param extension\n */\n favoriteExtension(extension) {\n this.loading(true);\n\n app.request({\n method: 'post',\n url: app.forum.attribute('apiUrl') + '/bazaar/extensions/' + extension.id() + '/favorite',\n data: {\n favorite: extension.favorited() != true\n }\n }).then(response => {\n this.updateExtensionInRepository(response)\n }).catch(() => this.requestError());\n }\n\n premiumExtensionSubscribe(extension, buy = true) {\n //this.loading(true);\n\n const popup = popupPromise({\n url: app.forum.attribute('apiUrl') + '/bazaar/redirect/' + (buy ? '' : 'un') + 'subscribe/' + extension.id(),\n waitForUrl: app.forum.attribute('apiUrl') + '/bazaar/callback/subscription',\n });\n\n popup.then(() => {\n window.location.reload();\n }).catch(() => {\n alert(app.translator.trans('flagrow-bazaar.admin.page.extension.subscribe_check_failed'));\n });\n }\n\n premiumExtensionUnsubscribe(extension) {\n this.premiumExtensionSubscribe(extension, false);\n }\n\n /**\n * Updates an extension.\n * @param extension\n */\n updateExtension(extension) {\n this.loading(true);\n\n app.request({\n url: app.forum.attribute('apiUrl') + '/bazaar/extensions/' + extension.id(),\n timeout: 0,\n method: 'PATCH'\n }).then(response => {\n this.updateExtensionInRepository(response)\n }).then(() => {\n location.reload();\n }).catch(() => this.requestError());\n }\n\n /**\n * Toggles an extension (enable or disable).\n * @param extension\n */\n toggleExtension(extension) {\n this.loading(true);\n\n const enabled = extension.enabled();\n\n app.request({\n url: app.forum.attribute('apiUrl') + '/bazaar/extensions/' + extension.id() + '/toggle',\n method: 'PATCH',\n data: {enabled: !enabled}\n }).then(response => {\n this.updateExtensionInRepository(response)\n }).catch(() => this.requestError());\n }\n\n /**\n * Disable an extension.\n * @param extension\n */\n disableExtension(extension) {\n this.toggleExtension(extension);\n }\n\n /**\n * Enable an extension.\n * @param extension\n */\n enableExtension(extension) {\n this.toggleExtension(extension);\n }\n\n /**\n * Loads the index of this extension in the extensions array.\n * @param extension\n * @returns {number}\n */\n getExtensionIndex(extension) {\n return this.extensions().findIndex(ext => ext.id() == extension.id());\n }\n\n /**\n * Updates an extension and takes care of updating its state in the extension page too.\n * @param extension\n * @param property\n * @param value\n */\n updateExtensionInRepository(response) {\n this.loading(false);\n\n let extension = app.store.createRecord('bazaar-extensions', response.data);\n this.extensions()[this.getExtensionIndex(extension)] = extension;\n m.redraw();\n }\n}\n","import app from 'flarum/app';\n\nexport default class ExtensionRepository {\n constructor(loading) {\n this.tasks = m.prop([]);\n this.nextPageUrl = null;\n this.loading = loading;\n this.resetNavigation();\n }\n\n loadNextPage() {\n if (this.loading() || !this.nextPageUrl) {\n return;\n }\n\n this.loading(true);\n\n app.request({\n method: 'GET',\n url: this.nextPageUrl\n }).then(result => {\n const newTasks = result.data.map(data => app.store.createRecord('bazaar-tasks', data));\n this.tasks(newTasks);\n this.nextPageUrl = null;\n this.loading(false);\n\n m.redraw();\n });\n }\n\n resetNavigation() {\n this.loading(false);\n this.nextPageUrl = app.forum.attribute('apiUrl') + '/bazaar/tasks';\n this.tasks([]);\n }\n\n}\n","/**\n * Based on _.debounce from underscore.js\n * Copyright (c) 2009-2017 Jeremy Ashkenas, DocumentCloud and Investigative\n * @see https://davidwalsh.name/javascript-debounce-function\n *\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n */\nexport default function (func, wait, immediate) {\n let timeout;\n return function () {\n let context = this, args = arguments;\n let later = function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n let callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n","export default function(settings = {})\n{\n const url = settings.url || '/';\n const waitForUrl = settings.waitForUrl || null;\n const width = settings.width || 600;\n const height = settings.height || 400;\n const $window = $(window);\n\n // The new Promise polyfill of Mithril v1 is a lot better\n const deferred = m.deferred();\n\n const popup = window.open(url, 'bazaarPopup',\n `width=${width},` +\n `height=${height},` +\n `top=${$window.height() / 2 - height / 2},` +\n `left=${$window.width() / 2 - width / 2},` +\n 'status=no,scrollbars=no,resizable=no');\n\n const interval = window.setInterval(() => {\n try {\n if (popup.closed) {\n window.clearInterval(interval);\n deferred.reject();\n } else if (popup.document.URL === waitForUrl) {\n window.clearInterval(interval);\n popup.close();\n deferred.resolve();\n }\n } catch (e) {\n // Ignore errors, these will be cross-origin exceptions\n }\n }, 500);\n\n return deferred.promise;\n}\n","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['app'];","module.exports = flarum.core.compat['components/AdminLinkButton'];","module.exports = flarum.core.compat['components/AdminNav'];","module.exports = flarum.core.compat['components/Badge'];","module.exports = flarum.core.compat['components/Button'];","module.exports = flarum.core.compat['components/Dropdown'];","module.exports = flarum.core.compat['components/LinkButton'];","module.exports = flarum.core.compat['components/Modal'];","module.exports = flarum.core.compat['components/Placeholder'];","module.exports = flarum.core.compat['components/SettingsModal'];","module.exports = flarum.core.compat['components/Switch'];","module.exports = flarum.core.compat['extend'];","module.exports = flarum.core.compat['helpers/fullTime'];","module.exports = flarum.core.compat['helpers/humanTime'];","module.exports = flarum.core.compat['helpers/icon'];","module.exports = flarum.core.compat['utils/ItemList'];","module.exports = flarum.core.compat['utils/computed'];","module.exports = flarum.core.compat['utils/extract'];","module.exports = flarum.core.compat['utils/extractText'];","module.exports = flarum.core.compat['utils/mixin'];","module.exports = flarum.core.compat['utils/saveSettings'];"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@flagrow/bazaar/webpack/bootstrap","webpack://@flagrow/bazaar/./admin.js","webpack://@flagrow/bazaar/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flagrow/bazaar/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flagrow/bazaar/./src/admin/addBazaarPage.js","webpack://@flagrow/bazaar/./src/admin/addTasksPage.js","webpack://@flagrow/bazaar/./src/admin/components/BazaarLoader.js","webpack://@flagrow/bazaar/./src/admin/components/BazaarPage.js","webpack://@flagrow/bazaar/./src/admin/components/BazaarPageHeader.js","webpack://@flagrow/bazaar/./src/admin/components/CustomCheckbox.js","webpack://@flagrow/bazaar/./src/admin/components/ExtensionList.js","webpack://@flagrow/bazaar/./src/admin/components/ExtensionListItem.js","webpack://@flagrow/bazaar/./src/admin/components/ExtensionSearch.js","webpack://@flagrow/bazaar/./src/admin/components/TaskListItem.js","webpack://@flagrow/bazaar/./src/admin/components/TasksPage.js","webpack://@flagrow/bazaar/./src/admin/index.js","webpack://@flagrow/bazaar/./src/admin/modals/BazaarConnectModal.js","webpack://@flagrow/bazaar/./src/admin/modals/BazaarSettingsModal.js","webpack://@flagrow/bazaar/./src/admin/modals/DashboardModal.js","webpack://@flagrow/bazaar/./src/admin/modals/FilePermissionsModal.js","webpack://@flagrow/bazaar/./src/admin/modals/MemoryLimitModal.js","webpack://@flagrow/bazaar/./src/admin/models/Extension.js","webpack://@flagrow/bazaar/./src/admin/models/Task.js","webpack://@flagrow/bazaar/./src/admin/utils/ExtensionRepository.js","webpack://@flagrow/bazaar/./src/admin/utils/TaskRepository.js","webpack://@flagrow/bazaar/./src/admin/utils/debounce.js","webpack://@flagrow/bazaar/./src/admin/utils/popupPromise.js","webpack://@flagrow/bazaar/external \"flarum.core.compat['Component']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['Model']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['app']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/AdminLinkButton']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/AdminNav']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Badge']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Button']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Dropdown']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/LinkButton']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Modal']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Placeholder']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/SettingsModal']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['components/Switch']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['extend']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['helpers/fullTime']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['helpers/humanTime']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['helpers/icon']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/ItemList']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/computed']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/extract']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/extractText']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/mixin']\"","webpack://@flagrow/bazaar/external \"flarum.core.compat['utils/saveSettings']\""],"names":["app","routes","path","component","extensionSettings","m","route","extend","prototype","items","add","href","icon","children","translator","trans","description","BazaarLoader","view","error","props","loading","className","hidden","onclick","location","reload","target","config","BazaarPage","init","current","authorized","data","settings","length","connected","prop","params","repository","extensionList","search","onsubmit","updateResults","bind","update","render","stickyParams","sort","param","q","filter","BazaarPageHeader","header","buttons","concat","pagesButtons","settingsButton","requirementsButtons","connectedButtons","modal","show","memory_limit_met","memory_limit","memory_requested","file_permissions","components","push","flagrowHost","routeName","links","title","active","CustomCheckbox","attrs","Object","assign","state","type","iconName","disabled","onchange","getButtonContent","ExtensionList","moreResults","resultMeta","extensions","refresh","pages_current","total","pages_total","loadMore","text","map","extension","key","package","clear","loadResults","then","results","parseResults","redraw","offset","requestParams","page","include","join","store","find","apply","payload","next","meta","lazyRedraw","out","sortMap","window","$","relevance","ExtensionListItem","isInitialized","tooltip","container","controls","controlItems","toArray","badges","enabled","installed","outdated","pending","favorited","flarumCompatibilityCurrent","id","name","split","downloads","favorites","installed_version","highest_version","favoriteExtension","discuss_link","open","landing_link","favoriteTrans","can_uninstall","uninstallExtension","can_enable","enableExtension","updateExtension","can_disable","disableExtension","can_install","installExtension","premium","canCheckout","premiumExtensionSubscribe","canSafelyUnsubscribe","premiumExtensionUnsubscribe","flarumCompatibilityNext","flarumCompatibilityLatest","subscribed","new","ExtensionSearch","updateDebounce","value","oninput","withAttr","term","placeholder","isToggled","checked","toggleFilter","is","indexOf","i","splice","TaskListItem","extended","task","status","created_at","command","started_at","finished_at","output","TasksPage","loadNextPage","loader","taskGroups","group","tasks","currentGroup","today","Date","setHours","forEach","taskDate","initializers","models","addBazaarPage","addTasksPage","BazaarConnectModal","content","host","connect","popup","request","method","url","forum","attribute","response","redirect","close","BazaarSettingsModal","form","for","setting","a","bidi","DashboardModal","syncing","updateSetting","submitButton","saveSettings","FilePermissionsModal","permissions","paths","MemoryLimitModal","required","limit","Extension","license","locale","flarum_id","canUnsubscribe","Task","ExtensionRepository","requestError","timeout","updateExtensionInRepository","catch","installFailure","resetNavigation","uninstallFailure","favorite","buy","waitForUrl","alert","toggleExtension","getExtensionIndex","findIndex","ext","createRecord","nextPageUrl","result","newTasks","func","wait","immediate","context","args","arguments","later","callNow","clearTimeout","setTimeout","width","height","$window","deferred","interval","setInterval","closed","clearInterval","reject","document","URL","resolve","e","promise"],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;;AClFA;AAAA;AAAA,wC;;;;;;;;;;;;ACAA;AAAA;AAAe;AACf;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,C;;;;;;;;;;;;AChBA;AAAA;AAAe;AACf;AACA;AACA;AACA,C;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA,+DAAe,YAAY;AACvB;AACAA,EAAA,iDAAG,CAACC,MAAJ,CAAW,gBAAX,IAA+B;AAACC,QAAI,EAAE,iBAAP;AAA0BC,aAAS,EAAE,8DAAU,CAACA,SAAX;AAArC,GAA/B,CAFuB,CAGvB;;AACAH,EAAA,iDAAG,CAACI,iBAAJ,CAAsB,gBAAtB,IAA0C;AAAA,WAAMC,CAAC,CAACC,KAAF,CAAQ,iDAAG,CAACA,KAAJ,CAAU,gBAAV,CAAR,CAAN;AAAA,GAA1C,CAJuB,CAKvB;;;AACAC,EAAA,4DAAM,CAAC,iEAAQ,CAACC,SAAV,EAAqB,OAArB,EAA8B,UAAAC,KAAK,EAAI;AACzCA,SAAK,CAACC,GAAN,CAAU,gBAAV,EAA4B,wEAAe,CAACP,SAAhB,CAA0B;AAClDQ,UAAI,EAAE,iDAAG,CAACL,KAAJ,CAAU,gBAAV,CAD4C;AAElDM,UAAI,EAAE,qBAF4C;AAGlDC,cAAQ,EAAE,iDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,gCAArB,CAHwC;AAIlDC,iBAAW,EAAE,iDAAG,CAACF,UAAJ,CAAeC,KAAf,CAAqB,sCAArB;AAJqC,KAA1B,CAA5B;AAMH,GAPK,CAAN;AAQH,C;;;;;;;;;;;;ACpBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAEe,2EAAY;AACvBf,EAAA,iDAAG,CAACC,MAAJ,CAAW,sBAAX,IAAqC;AAACC,QAAI,EAAE,uBAAP;AAAgCC,aAAS,EAAE,6DAAS,CAACA,SAAV;AAA3C,GAArC;AACH,C;;;;;;;;;;;;;;;;;;;;;;;;ACND;AACA;AACA;AACA;;IAEqBc,Y;;;;;;;;;;;SAEjBC,I,mBAAO;AAAA;;AACH,QAAMC,KAAK,GAAG,KAAKC,KAAL,CAAWC,OAAX,OAAyB,OAAvC;AAEA,WAAOhB,CAAC,CAAC,KAAD,EAAQ;AACZiB,eAAS,EAAE,qBAAqBH,KAAK,GAAG,OAAH,GAAa,IAAvC,CADC;AAEZI,YAAM,EAAE,KAAKH,KAAL,CAAWC,OAAX,OAAyB;AAFrB,KAAR,EAGL,CACChB,CAAC,CAAC,eAAD,EAAkB,CACfA,CAAC,CAAC,cAAD,EAAiB,0DAAI,CAACc,KAAK,GAAG,6BAAH,GAAmC,qBAAzC,CAArB,CADc,EAEfd,CAAC,CAAC,KAAD,EAAQ,CACLA,CAAC,CAAC,GAAD,EAAML,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqBI,KAAK,GAAG,mCAAH,GAAyC,wCAAnE,CAAN,CADI,EAELA,KAAK,GAAG,CACJ,+DAAM,CAAChB,SAAP,CAAiB;AACbmB,eAAS,EAAE,sBADE;AAEbV,UAAI,EAAE,aAFO;AAGbY,aAAO,EAAE;AAAA,eAAMC,QAAQ,CAACC,MAAT,EAAN;AAAA,OAHI;AAIbb,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,qCAArB;AAJG,KAAjB,CADI,EAOJ,+DAAM,CAACZ,SAAP,CAAiB;AACbmB,eAAS,EAAE,sBADE;AAEbV,UAAI,EAAE,cAFO;AAGbY,aAAO,EAAE;AAAA,eAAM,KAAI,CAACJ,KAAL,CAAWC,OAAX,CAAmB,KAAnB,CAAN;AAAA,OAHI;AAIbR,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,mCAArB;AAJG,KAAjB,CAPI,EAaJ,mEAAU,CAACZ,SAAX,CAAqB;AACjBmB,eAAS,EAAE,sBADM;AAEjBV,UAAI,EAAE,YAFW;AAGjBD,UAAI,EAAE,0CAHW;AAIjBgB,YAAM,EAAE,QAJS;AAKjBC,YAAM,EAAE,EALS;AAKL;AACZf,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,0CAArB;AANO,KAArB,CAbI,CAAH,GAqBD,IAvBC,CAAR,CAFc,CAAlB,CADF,CAHK,CAAR;AAiCH,G;;;EAtCqC,uD;;;;;;;;;;;;;;;;;;;;;;;;ACL1C;AACA;AACA;AACA;AACA;;IAGqBc,U;;;;;;;;;;;SACjBC,I,mBAAO;AACH9B,OAAG,CAAC+B,OAAJ,GAAc,IAAd;AAEA,SAAKC,UAAL,GAAkB,CAAChC,GAAG,CAACiC,IAAJ,CAASC,QAAT,CAAkB,0BAAlB,KAAiD,EAAlD,EAAsDC,MAAtD,GAA+D,CAAjF;AACA,SAAKC,SAAL,GAAiBpC,GAAG,CAACiC,IAAJ,CAASC,QAAT,CAAkB,0BAAlB,KAAiDlC,GAAG,CAACiC,IAAJ,CAASC,QAAT,CAAkB,0BAAlB,MAAkD,GAApH;AACA,SAAKb,OAAL,GAAehB,CAAC,CAACgC,IAAF,CAAO,IAAP,CAAf;AAEA,SAAKC,MAAL,GAAc,KAAKA,MAAL,EAAd;AAEA,SAAKC,UAAL,GAAkB,IAAI,kEAAJ,CAAwB,KAAKlB,OAA7B,CAAlB;AAEA,SAAKmB,aAAL,GAAqB,IAAI,sDAAJ,CAAkB;AACnCF,YAAM,EAAE,KAAKA,MADsB;AAEnCjB,aAAO,EAAE,KAAKA,OAFqB;AAGnCkB,gBAAU,EAAE,KAAKA,UAHkB;AAInCH,eAAS,EAAE,KAAKA,SAJmB;AAKnCJ,gBAAU,EAAE,KAAKA;AALkB,KAAlB,CAArB;AAQA,SAAKS,MAAL,GAAc,wDAAe,CAACtC,SAAhB,CAA0B;AAACmC,YAAM,EAAE,KAAKA,MAAd;AAAsBI,cAAQ,EAAE,KAAKC,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB;AAAhC,KAA1B,CAAd;AACH,G;;SAEDD,a,0BAAcL,M,EAAQ;AAClB,SAAKA,MAAL,GAAcA,MAAd;AAEA,SAAKE,aAAL,CAAmBK,MAAnB,CAA0BP,MAA1B;AACH,G;;SAEDpB,I,mBAAO;AACH,WAAOb,CAAC,CAAC,KAAD,EAAQ;AAACiB,eAAS,EAAE;AAAZ,KAAR,EAA0C,CAC9C,yDAAgB,CAACnB,SAAjB,CAA2B;AACvBiC,eAAS,EAAE,KAAKA;AADO,KAA3B,CAD8C,EAI9C/B,CAAC,CAAC,KAAD,EAAQ;AAACiB,eAAS,EAAE;AAAZ,KAAR,EAA4C,CACzCjB,CAAC,CAAC,KAAD,EAAQ;AAACiB,eAAS,EAAE;AAAZ,KAAR,EAAkC,CAC/B,KAAKmB,MAD0B,EAE/B,KAAKD,aAAL,CAAmBM,MAAnB,EAF+B,CAAlC,CADwC,CAA5C,CAJ6C,CAA1C,CAAR;AAWH,G;AAED;;;;;;;SAKAC,Y,2BAAe;AACX,WAAO;AACHC,UAAI,EAAE3C,CAAC,CAACC,KAAF,CAAQ2C,KAAR,CAAc,MAAd,CADH;AAEHC,OAAC,EAAE7C,CAAC,CAACC,KAAF,CAAQ2C,KAAR,CAAc,GAAd;AAFA,KAAP;AAIH,G;AAGD;;;;;;;SAKAX,M,qBAAS;AACL,QAAMA,MAAM,GAAG,KAAKS,YAAL,EAAf;AAEAT,UAAM,CAACa,MAAP,GAAgB9C,CAAC,CAACC,KAAF,CAAQ2C,KAAR,CAAc,QAAd,CAAhB;AAEA,WAAOX,MAAP;AACH,G;;;EAnEmC,uD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IAEqBc,gB;;;;;;;;;;;SACjBlC,I,mBAAO;AACH,WACI;AAAK,eAAS,EAAC;AAAf,OACI;AAAK,eAAS,EAAC;AAAf,OACK,KAAKmC,MAAL,EADL,CADJ,CADJ;AAOH,G;;SAEDA,M,qBAAS;AACL,QAAIC,OAAO,GAAG,GAAGC,MAAH,CACZ,KAAKC,YAAL,EADY,EAEZ,KAAKC,cAAL,EAFY,EAGZ,KAAKC,mBAAL,EAHY,EAIZ,KAAKC,gBAAL,EAJY,CAAd;AAOA,WAAOtD,CAAC,CAAC,KAAD,EAAQ;AAACiB,eAAS,EAAE;AAAZ,KAAR,EAAoCgC,OAApC,CAAR;AACH,G;;SAEDG,c,6BAAiB;AACf,WAAO,CACL,+DAAM,CAACtD,SAAP,CAAiB;AACfmB,eAAS,EAAE,qBADI;AAEfV,UAAI,EAAE,YAFS;AAGfY,aAAO,EAAE;AAAA,eAAM,iDAAG,CAACoC,KAAJ,CAAUC,IAAV,CAAe,IAAI,mEAAJ,EAAf,CAAN;AAAA;AAHM,KAAjB,CADK,CAAP;AAOD,G;AACD;;;;;;SAIAH,mB,kCAAsB;AAClB,QAAII,gBAAgB,GAAG,iDAAG,CAAC7B,IAAJ,CAASC,QAAT,CAAkB,qCAAlB,KAA4D,KAAnF;AACA,QAAI6B,YAAY,GAAG,iDAAG,CAAC9B,IAAJ,CAASC,QAAT,CAAkB,iCAAlB,CAAnB;AACA,QAAI8B,gBAAgB,GAAG,iDAAG,CAAC/B,IAAJ,CAASC,QAAT,CAAkB,qCAAlB,CAAvB;AACA,QAAI+B,gBAAgB,GAAG,iDAAG,CAAChC,IAAJ,CAASC,QAAT,CAAkB,iCAAlB,KAAwD,EAA/E;AAEA,QAAIgC,UAAU,GAAG,EAAjB;;AAEA,QAAI,CAACJ,gBAAL,EAAuB;AACnBI,gBAAU,CAACC,IAAX,CACI,+DAAM,CAAChE,SAAP,CAAiB;AACbmB,iBAAS,EAAE,6CADE;AAEbV,YAAI,EAAE,eAFO;AAGbY,eAAO,EAAE;AAAA,iBAAM,iDAAG,CAACoC,KAAJ,CAAUC,IAAV,CAAe,IAAI,gEAAJ,CAAqB;AAACG,4BAAgB,EAAhBA,gBAAD;AAAmBD,wBAAY,EAAZA;AAAnB,WAArB,CAAf,CAAN;AAAA;AAHI,OAAjB,CADJ;AAOH;;AAED,QAAIE,gBAAgB,CAAC9B,MAAjB,GAA0B,CAA9B,EAAiC;AAC7B+B,gBAAU,CAACC,IAAX,CAAgB,+DAAM,CAAChE,SAAP,CAAiB;AAC7BmB,iBAAS,EAAE,iDADkB;AAE7BV,YAAI,EAAE,YAFuB;AAG7BY,eAAO,EAAE;AAAA,iBAAM,iDAAG,CAACoC,KAAJ,CAAUC,IAAV,CAAe,IAAI,oEAAJ,CAAyB;AAACI,4BAAgB,EAAhBA;AAAD,WAAzB,CAAf,CAAN;AAAA;AAHoB,OAAjB,CAAhB;AAKH;;AAED,WAAOC,UAAP;AACH,G;;SAEDP,gB,+BAAmB;AACf,QAAIvB,SAAS,GAAG,KAAKhB,KAAL,CAAWgB,SAA3B;AACA,QAAIgC,WAAW,GAAG,iDAAG,CAACnC,IAAJ,CAASC,QAAT,CAAkB,6BAAlB,KAAoD,oBAAtE;;AAEA,QAAIE,SAAJ,EAAe;AACX,aAAO,CACH,+DAAM,CAACjC,SAAP,CAAiB;AACbmB,iBAAS,EAAE,+BADE;AAEbV,YAAI,EAAE,aAFO;AAGbY,eAAO,EAAE;AAAA,iBAAM,iDAAG,CAACoC,KAAJ,CAAUC,IAAV,CAAe,IAAI,8DAAJ,CAAmB;AAC7CO,uBAAW,EAAXA;AAD6C,WAAnB,CAAf,CAAN;AAAA;AAHI,OAAjB,CADG,CAAP;AASH;;AAED,WAAO,CACH,+DAAM,CAACjE,SAAP,CAAiB;AACbmB,eAAS,EAAE,6BADE;AAEbV,UAAI,EAAE,aAFO;AAGbY,aAAO,EAAE;AAAA,eAAM,iDAAG,CAACoC,KAAJ,CAAUC,IAAV,CAAe,IAAI,kEAAJ,CAAuB;AAACO,qBAAW,EAAXA;AAAD,SAAvB,CAAf,CAAN;AAAA;AAHI,KAAjB,CADG,CAAP;AAOH,G;;SAEDZ,Y,2BAAe;AACX;AACA,QAAI,OAAO,iDAAG,CAACzB,OAAX,KAAuB,WAA3B,EAAwC;AACpC,aAAO,IAAP;AACH;;AAED,QAAMsC,SAAS,GAAG,iDAAG,CAACtC,OAAJ,CAAYX,KAAZ,CAAkBiD,SAApC;AACA,QAAIC,KAAK,GAAG,EAAZ;AAEAA,SAAK,CAACH,IAAN,CAAW,mEAAU,CAAChE,SAAX,CAAqB;AAC5BmB,eAAS,EAAE,qBADiB;AAE5BV,UAAI,EAAE,qBAFsB;AAG5BD,UAAI,EAAE,iDAAG,CAACL,KAAJ,CAAU,gBAAV,CAHsB;AAI5BiE,WAAK,EAAE,iDAAG,CAACzD,UAAJ,CAAeC,KAAf,CAAqB,wCAArB,CAJqB;AAK5ByD,YAAM,EAAEH,SAAS,KAAK;AALM,KAArB,CAAX;AAQAC,SAAK,CAACH,IAAN,CAAW,mEAAU,CAAChE,SAAX,CAAqB;AAC5BmB,eAAS,EAAE,qBADiB;AAE5BV,UAAI,EAAE,gBAFsB;AAG5BD,UAAI,EAAE,iDAAG,CAACL,KAAJ,CAAU,sBAAV,CAHsB;AAI5BiE,WAAK,EAAE,iDAAG,CAACzD,UAAJ,CAAeC,KAAf,CAAqB,mCAArB,CAJqB;AAK5ByD,YAAM,EAAEH,SAAS,KAAK;AALM,KAArB,CAAX;AAQA,WAAOC,KAAP;AACH,G;;;EAnHyC,uD;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACV9C;AACA;AACA;AACA;;IAEqBG,c;;;;;;;;;;;SACjBvD,I,mBAAO;AACH,QAAMwD,KAAK,GAAGC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKxD,KAAvB,CAAd;AAEA,WAAOsD,KAAK,CAACG,KAAb;AACA,WAAOH,KAAK,CAAC7D,QAAb;AAEA6D,SAAK,CAACpD,SAAN,GAAkBoD,KAAK,CAACpD,SAAN,IAAmB,EAArC;AACAoD,SAAK,CAACI,IAAN,GAAaJ,KAAK,CAACI,IAAN,IAAc,QAA3B;AAEA,QAAI,KAAK1D,KAAL,CAAWyD,KAAf,EAAsBH,KAAK,CAACpD,SAAN,IAAmB,SAAnB,CATnB,CAWH;;AACA,QAAI,CAACoD,KAAK,CAACH,KAAP,IAAgB,KAAKnD,KAAL,CAAWP,QAA/B,EAAyC;AACrC6D,WAAK,CAACH,KAAN,GAAc,+DAAW,CAAC,KAAKnD,KAAL,CAAWP,QAAZ,CAAzB;AACH;;AAED,QAAMkE,QAAQ,GAAG,2DAAO,CAACL,KAAD,EAAQ,MAAR,CAAxB;AACA,QAAIK,QAAJ,EAAcL,KAAK,CAACpD,SAAN,IAAmB,UAAnB;AAEd,QAAMD,OAAO,GAAG,2DAAO,CAACqD,KAAD,EAAQ,SAAR,CAAvB;;AACA,QAAIA,KAAK,CAACM,QAAN,IAAkB3D,OAAtB,EAA+B;AAC3BqD,WAAK,CAACpD,SAAN,IAAmB,eAAeD,OAAO,GAAG,UAAH,GAAgB,EAAtC,CAAnB;AACA,aAAOqD,KAAK,CAAClD,OAAb;AACH;;AAED,WACI,mGAAYkD,KAAZ;AACI,aAAO,EAAE,KAAKO,QAAL,CAAcrC,IAAd,CAAmB,IAAnB;AADb,QAGK,KAAKsC,gBAAL,EAHL,CADJ;AAOH,G;AAED;;;;;;;;SAMAD,Q,uBAAW;AACP,QAAI,KAAK7D,KAAL,CAAW6D,QAAf,EAAyB,KAAK7D,KAAL,CAAW6D,QAAX,CAAoB,CAAE,KAAK7D,KAAL,CAAWyD,KAAjC,EAAwC,IAAxC;AAC5B,G;;;EA3CuC,+D;;;;;;;;;;;;;;;;;;;;;;;;;;ACL5C;AACA;AACA;AACA;AACA;;IAEqBM,a;;;;;;;;;;;SACjBrD,I,mBAAO;AACH;;;;;AAKA,SAAKT,OAAL,GAAe,KAAKD,KAAL,CAAWC,OAA1B;AAEA;;;;;;AAKA,SAAK+D,WAAL,GAAmB,KAAnB;AACA,SAAKC,UAAL,GAAkB,EAAlB,CAdG,CAgBH;;AAEA;;;;;;AAKA,SAAKC,UAAL,GAAkB,EAAlB;AAEA,SAAKC,OAAL;AACH,G;;SAIDrE,I,mBAAO;AAAA;;AACH,QAAIG,OAAJ;;AAEA,QAAI,KAAKA,OAAL,EAAJ,EAAoB;AAChBA,aAAO,GAAG,qDAAY,CAAClB,SAAb,CAAuB;AAACkB,eAAO,EAAE,KAAKA;AAAf,OAAvB,CAAV;AACH,KAFD,MAEO,IAAI,KAAK+D,WAAT,EAAsB;AACzB/D,aAAO,GAAG,CACN,+DAAM,CAAClB,SAAP,CAAiB;AACbU,gBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,uCAArB,EAA8D;AAACgB,iBAAO,EAAE,KAAKsD,UAAL,CAAgBG,aAAhB,GAAgC,CAA1C;AAA6CC,eAAK,EAAE,KAAKJ,UAAL,CAAgBK;AAApE,SAA9D,CADG;AAEbpE,iBAAS,EAAE,wBAFE;AAGbE,eAAO,EAAE,KAAKmE,QAAL,CAAc/C,IAAd,CAAmB,IAAnB;AAHI,OAAjB,CADM,CAAV;AAOH;;AAED,QAAI,KAAK0C,UAAL,CAAgBnD,MAAhB,KAA2B,CAA3B,IAAgC,CAAC,KAAKd,OAA1C,EAAmD;AAC/C,UAAIuE,IAAI,GAAG5F,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,sDAArB,CAAX;;AAEA,UAAI,CAAE,KAAKK,KAAL,CAAWY,UAAjB,EAA6B;AACzB4D,YAAI,GAAG5F,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,gDAArB,CAAP;AACH;;AAED,aACI;AAAK,iBAAS,EAAC;AAAf,SACK,oEAAW,CAACZ,SAAZ,CAAsB;AAACyF,YAAI,EAAJA;AAAD,OAAtB,CADL,CADJ;AAKH;;AAED,WACI;AAAK,eAAS,EAAC;AAAf,OACI;AAAK,eAAS,EAAC;AAAf,OACK,KAAKN,UAAL,CAAgBO,GAAhB,CAAoB,UAAAC,SAAS,EAAI;AAC9B,aAAO,0DAAiB,CAAC3F,SAAlB,CAA4B;AAC3B2F,iBAAS,EAAEA,SADgB;AAE3BvD,kBAAU,EAAE,KAAI,CAACnB,KAAL,CAAWmB,UAFI;AAG3BH,iBAAS,EAAE,KAAI,CAAChB,KAAL,CAAWgB,SAHK;AAI3B2D,WAAG,EAAED,SAAS,CAACE,OAAV;AAJsB,OAA5B,CAAP;AAMH,KAPA,CADL,CADJ,EAWI;AAAK,eAAS,EAAC;AAAf,OACK3E,OADL,CAXJ,CADJ;AAiBH,G;;SAEDwB,M,mBAAOP,M,EAAQ;AACX,SAAKlB,KAAL,CAAWkB,MAAX,GAAoBA,MAApB;AAEA,SAAKiD,OAAL;AACH,G;AAED;;;;;;;SAKAA,O,oBAAQU,K,EAAc;AAAA;;AAAA,QAAdA,KAAc;AAAdA,WAAc,GAAN,IAAM;AAAA;;AAClB,QAAIA,KAAJ,EAAW;AACP,WAAK5E,OAAL,CAAa,IAAb;AACA,WAAKiE,UAAL,GAAkB,EAAlB;AACH;;AAED,WAAO,KAAKY,WAAL,GAAmBC,IAAnB,CACH,UAAAC,OAAO,EAAI;AACP,YAAI,CAACd,UAAL,GAAkB,EAAlB;;AACA,YAAI,CAACe,YAAL,CAAkBD,OAAlB;AACH,KAJE,EAKH,YAAM;AACF,YAAI,CAAC/E,OAAL,CAAa,KAAb;;AACAhB,OAAC,CAACiG,MAAF;AACH,KARE,CAAP;AAUH,G;AAED;;;;;;;;SAMAJ,W,wBAAYK,M,EAAQ;AAChB,QAAMjE,MAAM,GAAG,KAAKkE,aAAL,EAAf;AACAlE,UAAM,CAACmE,IAAP,GAAc;AAACF,YAAM,EAANA;AAAD,KAAd;AACAjE,UAAM,CAACoE,OAAP,GAAiBpE,MAAM,CAACoE,OAAP,CAAeC,IAAf,CAAoB,GAApB,CAAjB;AAEA,WAAO3G,GAAG,CAAC4G,KAAJ,CAAUC,IAAV,CAAe,mBAAf,EAAoCvE,MAApC,CAAP;AACH,G;AAED;;;;;;;;SAMA+D,Y,yBAAaD,O,EAAS;AAClB,OAAGjC,IAAH,CAAQ2C,KAAR,CAAc,KAAKxB,UAAnB,EAA+Bc,OAA/B;AAEA,SAAK/E,OAAL,CAAa,KAAb;AACA,SAAK+D,WAAL,GAAmB,CAAC,CAACgB,OAAO,CAACW,OAAR,CAAgBzC,KAAhB,CAAsB0C,IAA3C;AACA,SAAK3B,UAAL,GAAkBe,OAAO,CAACW,OAAR,CAAgBE,IAAhB,IAAwB,EAA1C;AAEA5G,KAAC,CAAC6G,UAAF;AAEA,WAAOd,OAAP;AACH,G;AAED;;;;;;;SAKAT,Q,uBAAW;AACP,SAAKtE,OAAL,CAAa,IAAb;AAEA,SAAK6E,WAAL,CAAiB,KAAKZ,UAAL,CAAgBnD,MAAjC,EACKgE,IADL,CACU,KAAKE,YAAL,CAAkBzD,IAAlB,CAAuB,IAAvB,CADV;AAEH,G;AAED;;;;;;;;;SAOA4D,a,4BAAgB;AACZ,QAAMlE,MAAM,GAAG,KAAKlB,KAAL,CAAWkB,MAA1B;AACA,QAAM6E,GAAG,GAAG;AAACT,aAAO,EAAE,EAAV;AAAcvD,YAAM,EAAE;AAAtB,KAAZ;AAEAgE,OAAG,CAACnE,IAAJ,GAAW,KAAKoE,OAAL,GAAe9E,MAAM,CAACU,IAAtB,CAAX;;AAEA,QAAIV,MAAM,CAACY,CAAX,EAAc;AACViE,SAAG,CAAChE,MAAJ,CAAWD,CAAX,GAAeZ,MAAM,CAACY,CAAtB;AACH;;AAED,QAAIZ,MAAM,CAACa,MAAX,EAAmB;AACfgE,SAAG,CAAChE,MAAJ,GAAakE,MAAM,CAACC,CAAP,CAASrE,KAAT,CAAeX,MAAM,CAACa,MAAtB,CAAb;AACH;;AAED,WAAOgE,GAAP;AACH,G;AAED;;;;;;;;SAMAC,O,sBAAU;AACN,QAAMvB,GAAG,GAAG,EAAZ;;AAEA,QAAI,KAAKzE,KAAL,CAAWkB,MAAX,CAAkBY,CAAtB,EAAyB;AACrB2C,SAAG,CAAC0B,SAAJ,GAAgB,EAAhB;AACH;;AAED,WAAO1B,GAAP;AACH,G;;;EA9LsC,uD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACN3C;AACA;AACA;AACA;AACA;AACA;;IAEqB2B,iB;;;;;;;;;;;SACjB5F,M,mBAAO6F,a,EAAe;AAClB,QAAIA,aAAJ,EAAmB,OADD,CAGlB;;AACA,QAAI,KAAKrG,KAAL,CAAW0E,SAAX,CAAqB9E,WAArB,EAAJ,EAAwC,KAAKsG,CAAL,CAAO,gBAAP,EAAyBI,OAAzB,CAAiC;AAACC,eAAS,EAAE;AAAZ,KAAjC;AAC3C,G;;SAEDzG,I,mBAAO;AACH,QAAM4E,SAAS,GAAG,KAAK1E,KAAL,CAAW0E,SAA7B;AACA,QAAM1D,SAAS,GAAG,KAAKhB,KAAL,CAAWgB,SAAX,IAAwB,KAA1C;AACA,QAAMwF,QAAQ,GAAG,KAAKC,YAAL,CAAkB/B,SAAlB,EAA6B1D,SAA7B,EAAwC0F,OAAxC,EAAjB;AACA,QAAMC,MAAM,GAAG,KAAKA,MAAL,CAAYjC,SAAZ,EAAuBgC,OAAvB,EAAf;AACA,QAAMvF,UAAU,GAAG,KAAKnB,KAAL,CAAWmB,UAA9B;AAEA,WAAO;AAAK,eAAS,EACjB,gBACCuD,SAAS,CAACkC,OAAV,KAAsB,UAAtB,GAAmC,WADpC,KAEClC,SAAS,CAACmC,SAAV,KAAwB,YAAxB,GAAuC,cAFxC,KAGCnC,SAAS,CAACoC,QAAV,KAAuB,WAAvB,GAAqC,EAHtC,KAICpC,SAAS,CAACqC,OAAV,KAAsB,UAAtB,GAAmC,EAJpC,KAKCP,QAAQ,CAACzF,MAAT,GAAkB,CAAlB,GAAsB,aAAtB,GAAsC,EALvC,KAMC2D,SAAS,CAACsC,SAAV,KAAwB,WAAxB,GAAsC,EANvC,KAOCtC,SAAS,CAACuC,0BAAV,KAAyC,aAAzC,GAAyD,cAP1D,CADG;AASL,SAAG,EAAEvC,SAAS,CAACwC,EAAV,EATA;AASgB,iBAASxC,SAAS,CAACwC,EAAV;AATzB,OAUH;AAAM,eAAS,EAAC,gBAAhB;AAAiC,WAAK,EAAExC,SAAS,CAAClF,IAAV,MAAoB,EAA5D;AAAgE,WAAK,EAAEkF,SAAS,CAAC9E,WAAV;AAAvE,OACG8E,SAAS,CAAClF,IAAV,KAAmB,0DAAI,CAAC,YAAYkF,SAAS,CAAClF,IAAV,GAAiB2H,IAA9B,CAAvB,GAA6D,EADhE,CAVG,EAaH;AAAK,eAAS,EAAC;AAAf,OACI;AAAI,eAAS,EAAC;AAAd,OACKR,MADL,CADJ,EAII;AAAO,eAAS,EAAC;AAAjB,OACKjC,SAAS,CAACvB,KAAV,MAAqBuB,SAAS,CAACE,OAAV,EAD1B,CAJJ,EAQI;AAAK,eAAS,EAAC;AAAf,OACKF,SAAS,CAAC9E,WAAV,EADL,CARJ,EAYI;AAAK,eAAS,EAAC;AAAf,OACI;AAAK,eAAS,EAAC;AAAf,OAAuB;AAAG,eAAS,EAAC;AAAb,MAAvB,OAAwDhB,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,4CAArB,CAAxD,CADJ,EAEI;AAAK,eAAS,EAAC;AAAf,OAAwB+E,SAAS,CAACE,OAAV,GAAoBwC,KAApB,CAA0B,GAA1B,EAA+B,CAA/B,CAAxB,CAFJ,CAZJ,EAgBI;AAAK,eAAS,EAAC;AAAf,OACI;AAAK,eAAS,EAAC;AAAf,OAAuB;AAAG,WAAK,EAAC;AAAT,MAAvB,OAAwDxI,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,+CAArB,CAAxD,CADJ,EAEI;AAAK,eAAS,EAAC;AAAf,OAAwB+E,SAAS,CAAC2C,SAAV,EAAxB,CAFJ,CAhBJ,EAoBI;AAAK,eAAS,EAAC;AAAf,OACI;AAAK,eAAS,EAAC;AAAf,OAAuB;AAAG,eAAS,EAAC;AAAb,MAAvB,OAAyDzI,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,+CAArB,CAAzD,CADJ,EAEI;AAAK,eAAS,EAAC;AAAf,OAAwB+E,SAAS,CAAC4C,SAAV,EAAxB,CAFJ,CApBJ,EAwBK5C,SAAS,CAAC6C,iBAAV,KACG;AAAK,eAAS,EAAC;AAAf,OACI;AAAK,eAAS,EAAC;AAAf,OAAwB3I,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,uDAArB,CAAxB,CADJ,EAEI;AAAK,eAAS,EAAC;AAAf,OAAwB+E,SAAS,CAAC6C,iBAAV,EAAxB,CAFJ,CADH,GAKG,EA7BR,EA8BI;AAAK,eAAS,EAAC;AAAf,OACI;AAAK,eAAS,EAAC;AAAf,OAAwB3I,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,qDAArB,CAAxB,CADJ,EAEI;AAAK,eAAS,EAAC;AAAf,OAAwB+E,SAAS,CAAC8C,eAAV,EAAxB,CAFJ,CA9BJ,EAkCI;AAAK,eAAS,EAAC;AAAf,OACKxG,SAAS,GACN,EAAC,+DAAD;AACI,eAAS,EAAC,2CADd;AAEI,UAAI,EAAE,CAAC0D,SAAS,CAACsC,SAAV,KAAwB,KAAxB,GAAgC,KAAjC,IAA0C,WAFpD;AAGI,aAAO,EAAE;AAAA,eAAM7F,UAAU,CAACsG,iBAAX,CAA6B/C,SAA7B,CAAN;AAAA;AAHb,MADM,GAMN,EAPR,EAQKA,SAAS,CAACgD,YAAV,KACG,EAAC,+DAAD;AACI,eAAS,EAAC,kCADd;AAEI,UAAI,EAAC,iBAFT;AAGI,aAAO,EAAE;AAAA,eAAMzB,MAAM,CAAC0B,IAAP,CAAYjD,SAAS,CAACgD,YAAV,EAAZ,CAAN;AAAA;AAHb,MADH,GAMG,EAdR,EAeKhD,SAAS,CAACkD,YAAV,KACG,EAAC,+DAAD;AACI,eAAS,EAAC,kCADd;AAEI,UAAI,EAAC,mBAFT;AAGI,aAAO,EAAE;AAAA,eAAM3B,MAAM,CAAC0B,IAAP,CAAYjD,SAAS,CAACkD,YAAV,EAAZ,CAAN;AAAA;AAHb,MADH,GAMG,EArBR,EAsBI,EAAC,iEAAD;AACI,qBAAe,EAAC,kCADpB;AAEI,mBAAa,EAAC,sBAFlB;AAGI,UAAI,EAAC;AAHT,OAIKpB,QAJL,CAtBJ,CAlCJ,CAbG,CAAP;AA8EH,G;;SAEDC,Y,yBAAa/B,S,EAAW1D,S,EAAW;AAC/B,QAAM3B,KAAK,GAAG,IAAI,4DAAJ,EAAd;AACA,QAAM8B,UAAU,GAAG,KAAKnB,KAAL,CAAWmB,UAA9B;AAEA,QAAM0G,aAAa,GAAGnD,SAAS,CAACsC,SAAV,KAAwB,yDAAxB,GAAoF,kDAA1G;;AAEA,QAAIhG,SAAJ,EAAe;AACX3B,WAAK,CAACC,GAAN,CAAU,UAAV,EAAsB,+DAAM,CAACP,SAAP,CAAiB;AACnCS,YAAI,EAAE,cAD6B;AAEnCC,gBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqBkI,aAArB,CAFyB;AAGnCzH,eAAO,EAAE,mBAAM;AACXe,oBAAU,CAACsG,iBAAX,CAA6B/C,SAA7B;AACH;AALkC,OAAjB,CAAtB;AAOH;;AAED,QAAI,CAAEA,SAAS,CAACqC,OAAV,EAAN,EAA2B;AACvB,UAAIrC,SAAS,CAACkC,OAAV,MAAuBhI,GAAG,CAACI,iBAAJ,CAAsBmI,IAAtB,CAA3B,EAAwD;AACpD9H,aAAK,CAACC,GAAN,CAAU,UAAV,EAAsB,+DAAM,CAACP,SAAP,CAAiB;AACnCS,cAAI,EAAE,YAD6B;AAEnCC,kBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,uCAArB,CAFyB;AAGnCS,iBAAO,EAAExB,GAAG,CAACI,iBAAJ,CAAsBmI,IAAtB;AAH0B,SAAjB,CAAtB;AAKH;;AAED,UAAIzC,SAAS,CAACoD,aAAV,EAAJ,EAA+B;AAC3BzI,aAAK,CAACC,GAAN,CAAU,WAAV,EAAuB,+DAAM,CAACP,SAAP,CAAiB;AACpCS,cAAI,EAAE,qBAD8B;AAEpCC,kBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,4CAArB,CAF0B;AAGpCS,iBAAO,EAAE,mBAAM;AACXe,sBAAU,CAAC4G,kBAAX,CAA8BrD,SAA9B;AACH;AALmC,SAAjB,CAAvB;AAOH;;AAED,UAAIA,SAAS,CAACsD,UAAV,EAAJ,EAA4B;AACxB3I,aAAK,CAACC,GAAN,CAAU,QAAV,EAAoB,+DAAM,CAACP,SAAP,CAAiB;AACjCS,cAAI,EAAE,qBAD2B;AAEjCC,kBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,yCAArB,CAFuB;AAGjCS,iBAAO,EAAE,mBAAM;AACXe,sBAAU,CAAC8G,eAAX,CAA2BvD,SAA3B;AACH;AALgC,SAAjB,CAApB;AAOH;;AAED,UAAIA,SAAS,CAACmC,SAAV,MAAyBnC,SAAS,CAACoC,QAAV,EAA7B,EAAmD;AAC/CzH,aAAK,CAACC,GAAN,CAAU,QAAV,EAAoB,+DAAM,CAACP,SAAP,CAAiB;AACjCS,cAAI,EAAE,iBAD2B;AAEjCC,kBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,yCAArB,CAFuB;AAGjCS,iBAAO,EAAE,mBAAM;AACXe,sBAAU,CAAC+G,eAAX,CAA2BxD,SAA3B;AACH;AALgC,SAAjB,CAApB;AAOH;;AAED,UAAIA,SAAS,CAACyD,WAAV,EAAJ,EAA6B;AACzB9I,aAAK,CAACC,GAAN,CAAU,SAAV,EAAqB,+DAAM,CAACP,SAAP,CAAiB;AAClCS,cAAI,EAAE,eAD4B;AAElCC,kBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,0CAArB,CAFwB;AAGlCS,iBAAO,EAAE,mBAAM;AACXe,sBAAU,CAACiH,gBAAX,CAA4B1D,SAA5B;AACH;AALiC,SAAjB,CAArB;AAOH;;AAED,UAAIA,SAAS,CAAC2D,WAAV,EAAJ,EAA6B;AACzBhJ,aAAK,CAACC,GAAN,CAAU,SAAV,EAAqB,+DAAM,CAACP,SAAP,CAAiB;AAClCS,cAAI,EAAE,oBAD4B;AAElCC,kBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,0CAArB,CAFwB;AAGlCS,iBAAO,EAAE,mBAAM;AACXe,sBAAU,CAACmH,gBAAX,CAA4B5D,SAA5B;AACH;AALiC,SAAjB,CAArB;AAOH;AACJ;;AAED,QAAIA,SAAS,CAAC6D,OAAV,MAAuB,CAACvH,SAA5B,EAAuC;AACnC3B,WAAK,CAACC,GAAN,CAAU,WAAV,EAAuB,+DAAM,CAACP,SAAP,CAAiB;AACpC6E,gBAAQ,EAAE,IAD0B;AAEpCpE,YAAI,EAAE,sBAF8B;AAGpCC,gBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,uDAArB;AAH0B,OAAjB,CAAvB;AAKH;;AAED,QAAI+E,SAAS,CAAC8D,WAAV,MAA2BxH,SAA/B,EAA0C;AACtC3B,WAAK,CAACC,GAAN,CAAU,WAAV,EAAuB,+DAAM,CAACP,SAAP,CAAiB;AACpCS,YAAI,EAAE,sBAD8B;AAEpCC,gBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,4CAArB,CAF0B;AAGpCS,eAAO,EAAE,mBAAM;AACXe,oBAAU,CAACsH,yBAAX,CAAqC/D,SAArC;AACH;AALmC,OAAjB,CAAvB;AAOH;;AAED,QAAIA,SAAS,CAACgE,oBAAV,MAAoC1H,SAAxC,EAAmD;AAC/C3B,WAAK,CAACC,GAAN,CAAU,aAAV,EAAyB,+DAAM,CAACP,SAAP,CAAiB;AACtCS,YAAI,EAAE,YADgC;AAEtCC,gBAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,8CAArB,CAF4B;AAGtCS,eAAO,EAAE,mBAAM;AACXe,oBAAU,CAACwH,2BAAX,CAAuCjE,SAAvC;AACH;AALqC,OAAjB,CAAzB;AAOH;;AAED,WAAOrF,KAAP;AACH,G;AAED;;;;;;;;SAMAsH,M,mBAAOjC,S,EAAW;AACd,QAAMrF,KAAK,GAAG,IAAI,4DAAJ,EAAd;;AAEA,QAAI,CAACqF,SAAS,CAACkE,uBAAV,EAAL,EAA0C;AACtCvJ,WAAK,CAACC,GAAN,CAAU,kBAAV,EAA8B,EAAC,8DAAD;AAAO,YAAI,EAAC,oBAAZ;AACvB,YAAI,EAAC,kBADkB;AAEvB,aAAK,EAAEV,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,uDAArB;AAFgB,QAA9B;AAGH;;AACD,QAAI,CAAC+E,SAAS,CAACmE,yBAAV,EAAL,EAA4C;AACxCxJ,WAAK,CAACC,GAAN,CAAU,oBAAV,EAAgC,EAAC,8DAAD;AAAO,YAAI,EAAC,2BAAZ;AAC3B,YAAI,EAAC,oBADsB;AAE3B,aAAK,EAAEV,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,yDAArB;AAFoB,QAAhC;AAGH;;AACD,QAAI,CAAC+E,SAAS,CAACuC,0BAAV,EAAL,EAA6C;AACzC5H,WAAK,CAACC,GAAN,CAAU,cAAV,EAA0B,EAAC,8DAAD;AAAO,YAAI,EAAC,6BAAZ;AACrB,YAAI,EAAC,cADgB;AAErB,aAAK,EAAEV,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,kDAArB;AAFc,QAA1B;AAGH;;AACD,QAAI+E,SAAS,CAACoE,UAAV,EAAJ,EAA4B;AACxBzJ,WAAK,CAACC,GAAN,CAAU,YAAV,EAAwB,EAAC,8DAAD;AAAO,YAAI,EAAC,sBAAZ;AACpB,YAAI,EAAC,YADe;AAEpB,aAAK,EAAEV,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,gDAArB;AAFa,QAAxB;AAGH,KAJD,MAIO,IAAI+E,SAAS,CAAC6D,OAAV,EAAJ,EAAyB;AAC5BlJ,WAAK,CAACC,GAAN,CAAU,SAAV,EAAqB,EAAC,8DAAD;AAAO,YAAI,EAAC,oBAAZ;AACjB,YAAI,EAAC,SADY;AAEjB,aAAK,EAAEV,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,6CAArB;AAFU,QAArB;AAGH;;AACD,QAAI+E,SAAS,CAACqC,OAAV,EAAJ,EAAyB;AACrB1H,WAAK,CAACC,GAAN,CAAU,SAAV,EAAqB,EAAC,8DAAD;AAAO,YAAI,EAAC,6BAAZ;AACjB,YAAI,EAAC,SADY;AAEjB,aAAK,EAAEV,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,6CAArB;AAFU,QAArB;AAGH,KA/Ba,CAgCd;;;AACIN,SAAK,CAACC,GAAN,CAAU,UAAV,EAAsB,EAAC,8DAAD;AAAO,UAAI,EAAC,0BAAZ;AAClB,UAAI,EAAC,UADa;AAElB,WAAK,EAAEV,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,8CAArB,EAAqE;AAACoJ,WAAG,EAAErE,SAAS,CAAC8C,eAAV;AAAN,OAArE;AAFW,MAAtB,EAjCU,CAoCd;;AACA,QAAI9C,SAAS,CAACsC,SAAV,EAAJ,EAA2B;AACvB3H,WAAK,CAACC,GAAN,CAAU,WAAV,EAAuB,EAAC,8DAAD;AAAO,YAAI,EAAC,cAAZ;AACnB,YAAI,EAAC,WADc;AAEnB,aAAK,EAAEV,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,+CAArB;AAFY,QAAvB;AAGH;;AACD,QAAI+E,SAAS,CAACmC,SAAV,MAAyB,CAACnC,SAAS,CAACkC,OAAV,EAA9B,EAAmD;AAC/CvH,WAAK,CAACC,GAAN,CAAU,WAAV,EAAuB,EAAC,8DAAD;AAAO,YAAI,EAAC,oBAAZ;AACnB,YAAI,EAAC,WADc;AAEnB,aAAK,EAAEV,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,+CAArB;AAFY,QAAvB;AAGH;;AACD,QAAI+E,SAAS,CAACkC,OAAV,EAAJ,EAAyB;AACrBvH,WAAK,CAACC,GAAN,CAAU,SAAV,EAAqB,EAAC,8DAAD;AAAO,YAAI,EAAC,qBAAZ;AACjB,YAAI,EAAC,SADY;AAEjB,aAAK,EAAEV,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,6CAArB;AAFU,QAArB;AAGH;;AAED,WAAON,KAAP;AACH,G;;;EAtQ0C,uD;;;;;;;;;;;;;;;;;;;;;;ACP/C;AACA;AACA;;IAEqB2J,e;;;;;;;;;;;SACjBtI,I,mBAAO;AAAA;;AACH,SAAKuI,cAAL,GAAsB,+DAAQ,CAAC,YAAM;AACjC,UAAI,KAAI,CAACjJ,KAAL,CAAWsB,QAAf,EAAyB,KAAI,CAACtB,KAAL,CAAWsB,QAAX,CAAoB,KAAI,CAACtB,KAAL,CAAWkB,MAA/B;AAC5B,KAF6B,EAE3B,GAF2B,CAA9B;AAGH,G;;SAEDpB,I,mBAAO;AAAA;;AACH,WAAOb,CAAC,CAAC,KAAD,EAAQ,CACZA,CAAC,CAAC,UAAD,EAAa;AAACiB,eAAS,EAAE;AAAZ,KAAb,EACGjB,CAAC,CAAC,8BAAD,EAAiC;AAC9BiK,WAAK,EAAE,KAAKlJ,KAAL,CAAWkB,MAAX,CAAkBY,CAAlB,IAAuB,EADA;AAE9BqH,aAAO,EAAElK,CAAC,CAACmK,QAAF,CAAW,OAAX,EAAoB,UAAAC,IAAI;AAAA,eAAI,MAAI,CAAChI,MAAL,CAAYgI,IAAZ,CAAJ;AAAA,OAAxB,CAFqB;AAG9BC,iBAAW,EAAE1K,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,yCAArB;AAHiB,KAAjC,CADJ,CADW,EAQZV,CAAC,CAAC,KAAD,EAAQ;AAACiB,eAAS,EAAE;AAAZ,KAAR,EAAqD,CAClD,uDAAc,CAACnB,SAAf,CAAyB;AACrBS,UAAI,EAAE,iBADe;AAErBU,eAAS,EAAE,gBAFU;AAGrBuD,WAAK,EAAE,KAAK8F,SAAL,CAAe,QAAf,CAHc;AAIrB1F,cAAQ,EAAE,kBAAC2F,OAAD;AAAA,eAAa,MAAI,CAACC,YAAL,CAAkB,QAAlB,EAA4BD,OAA5B,CAAb;AAAA,OAJW;AAKrB/J,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,2CAArB;AALW,KAAzB,CADkD,EAQlD,uDAAc,CAACZ,SAAf,CAAyB;AACrBS,UAAI,EAAE,qBADe;AAErBU,eAAS,EAAE,gBAFU;AAGrBuD,WAAK,EAAE,KAAK8F,SAAL,CAAe,SAAf,CAHc;AAIrB1F,cAAQ,EAAE,kBAAC2F,OAAD;AAAA,eAAa,MAAI,CAACC,YAAL,CAAkB,SAAlB,EAA6BD,OAA7B,CAAb;AAAA,OAJW;AAKrB/J,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,4CAArB;AALW,KAAzB,CARkD,EAelD,uDAAc,CAACZ,SAAf,CAAyB;AACrBS,UAAI,EAAE,oBADe;AAErBU,eAAS,EAAE,gBAFU;AAGrBuD,WAAK,EAAE,KAAK8F,SAAL,CAAe,WAAf,CAHc;AAIrB1F,cAAQ,EAAE,kBAAC2F,OAAD;AAAA,eAAa,MAAI,CAACC,YAAL,CAAkB,WAAlB,EAA+BD,OAA/B,CAAb;AAAA,OAJW;AAKrB/J,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,8CAArB;AALW,KAAzB,CAfkD,EAsBlD,KAAKqB,SAAL,GAAiB,CACb,uDAAc,CAACjC,SAAf,CAAyB;AACrBS,UAAI,EAAE,cADe;AAErBU,eAAS,EAAE,gBAFU;AAGrBuD,WAAK,EAAE,KAAK8F,SAAL,CAAe,WAAf,CAHc;AAIrB1F,cAAQ,EAAE,kBAAC2F,OAAD;AAAA,eAAa,MAAI,CAACC,YAAL,CAAkB,WAAlB,EAA+BD,OAA/B,CAAb;AAAA,OAJW;AAKrB/J,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,8CAArB;AALW,KAAzB,CADa,EAQb,uDAAc,CAACZ,SAAf,CAAyB;AACrBS,UAAI,EAAE,sBADe;AAErBU,eAAS,EAAE,gBAFU;AAGrBuD,WAAK,EAAE,KAAK8F,SAAL,CAAe,YAAf,CAHc;AAIrB1F,cAAQ,EAAE,kBAAC2F,OAAD;AAAA,eAAa,MAAI,CAACC,YAAL,CAAkB,YAAlB,EAAgCD,OAAhC,CAAb;AAAA,OAJW;AAKrB/J,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,+CAArB;AALW,KAAzB,CARa,CAAjB,GAeI,EArC8C,EAsClD,uDAAc,CAACZ,SAAf,CAAyB;AACrBS,UAAI,EAAE,oBADe;AAErBU,eAAS,EAAE,gBAFU;AAGrBuD,WAAK,EAAE,KAAK8F,SAAL,CAAe,SAAf,CAHc;AAIrB1F,cAAQ,EAAE,kBAAC2F,OAAD;AAAA,eAAa,MAAI,CAACC,YAAL,CAAkB,SAAlB,EAA6BD,OAA7B,CAAb;AAAA,OAJW;AAKrB/J,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,4CAArB;AALW,KAAzB,CAtCkD,CAArD,CARW,CAAR,CAAR;AAuDH,G;;SAED4J,S,sBAAUpC,I,EAAM;AACZ,QAAMpF,MAAM,GAAG,KAAK/B,KAAL,CAAWkB,MAAX,CAAkBa,MAAlB,IAA4B,EAA3C;AACA,QAAM2H,EAAE,GAAG3H,MAAM,CAAC2H,EAAP,IAAa,EAAxB;AAEA,WAAOA,EAAE,CAACC,OAAH,CAAWxC,IAAX,KAAoB,CAA3B;AACH,G;;SAEDsC,Y,yBAAatC,I,EAAMqC,O,EAAS;AACxB,QAAIzH,MAAM,GAAG,KAAK/B,KAAL,CAAWkB,MAAX,CAAkBa,MAAlB,IAA4B,EAAzC;AACA,QAAI2H,EAAE,GAAG3H,MAAM,CAAC2H,EAAP,IAAa,EAAtB;AAEA,QAAME,CAAC,GAAGF,EAAE,CAACC,OAAH,CAAWxC,IAAX,CAAV;;AAEA,QAAIqC,OAAO,IAAII,CAAC,KAAK,CAAC,CAAtB,EAAyB;AACrBF,QAAE,CAAC3G,IAAH,CAAQoE,IAAR;AACH,KAFD,MAEO,IAAI,CAACqC,OAAD,IAAYI,CAAC,IAAI,CAArB,EAAwB;AAC3BF,QAAE,CAACG,MAAH,CAAUD,CAAV,EAAa,CAAb;AACH;;AAED7H,UAAM,CAAC2H,EAAP,GAAYA,EAAZ;AAEA,SAAK1J,KAAL,CAAWkB,MAAX,CAAkBa,MAAlB,GAA2BA,MAA3B;AAEA,SAAKkH,cAAL;AACH,G;;SAED5H,M,mBAAOgI,I,EAAM;AACT,SAAKrJ,KAAL,CAAWkB,MAAX,CAAkBY,CAAlB,GAAsBuH,IAAtB;AAEA,SAAKJ,cAAL;AACH,G;;;EA/FwC,uD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJ7C;AACA;AACA;AACA;AACA;AACA;;IAEqBa,Y;;;;;;;;;;;SACjBpJ,I,mBAAO;AACH,SAAKqJ,QAAL,GAAgB9K,CAAC,CAACgC,IAAF,CAAO,KAAP,CAAhB;AACH,G;;SAEDnB,I,mBAAO;AAAA;;AACH,QAAMkK,IAAI,GAAG,KAAKhK,KAAL,CAAWgK,IAAxB;;AACA,QAAMrG,QAAQ,GAAI,YAAW;AACzB,cAAQqG,IAAI,CAACC,MAAL,EAAR;AACI,aAAK,SAAL;AACI,iBAAO,cAAP;;AACJ,aAAK,WAAL;AACI,iBAAO,oBAAP;;AACJ,aAAK,SAAL;AACI,iBAAO,gBAAP;AANR;;AAQA,aAAO,cAAP;AACH,KAVgB,EAAjB,CAFG,CAcH;AACA;AACA;;;AACA,WACI;AAAO,eAAS,EAAG,yBAAyBD,IAAI,CAACC,MAAL;AAA5C,OACI,cACI;AAAI,eAAS,EAAC;AAAd,OAA8B,+DAAS,CAACD,IAAI,CAACE,UAAL,EAAD,CAAvC,CADJ,EAEI;AAAI,eAAS,EAAC,eAAd;AAA8B,WAAK,EAAG,iDAAG,CAACxK,UAAJ,CAAeC,KAAf,CAAqB,4CAA4CqK,IAAI,CAACC,MAAL,OAAkB,IAAlB,GAAyBD,IAAI,CAACC,MAAL,EAAzB,GAAyC,SAArF,CAArB;AAAtC,OAA8J;AAAK,eAAS,EAAC;AAAf,OAA0B,0DAAI,CAACtG,QAAD,CAA9B,CAA9J,CAFJ,EAGI;AAAI,eAAS,EAAC;AAAd,OACM,iDAAG,CAACjE,UAAJ,CAAeC,KAAf,CAAqB,4CAA4CqK,IAAI,CAACG,OAAL,EAAjE,EAAiF;AAACzF,eAAS,EAAG,kBAAUsF,IAAI,CAACpF,OAAL,EAAV;AAAb,KAAjF,CADN,CAHJ,EAMI;AAAI,eAAS,EAAC;AAAd,OACM,+DAAM,CAAC7F,SAAP,CAAiB;AACfS,UAAI,EAAE,aADS;AAEfU,eAAS,EAAE,QAFI;AAGfE,aAAO,EAAE,mBAAM;AAAE,aAAI,CAAC2J,QAAL,CAAc,CAAC,KAAI,CAACA,QAAL,EAAf;AAAkC;AAHpC,KAAjB,CADN,CANJ,CADJ,EAeM,KAAKA,QAAL,KACE,cACI;AAAI,eAAS,EAAC,eAAd;AAA8B,aAAO,EAAC;AAAtC,OACI,cACI,cAAM,iDAAG,CAACrK,UAAJ,CAAeC,KAAf,CAAqB,qDAArB,CAAN,CADJ,EAEI,cAAM,8DAAQ,CAACqK,IAAI,CAACE,UAAL,EAAD,CAAd,CAFJ,CADJ,EAKI,cACI,cAAM,iDAAG,CAACxK,UAAJ,CAAeC,KAAf,CAAqB,qDAArB,CAAN,CADJ,EAEI,cAAM,8DAAQ,CAACqK,IAAI,CAACI,UAAL,EAAD,CAAd,CAFJ,CALJ,EASI,cACI,cAAM,iDAAG,CAAC1K,UAAJ,CAAeC,KAAf,CAAqB,sDAArB,CAAN,CADJ,EAEI,cAAM,8DAAQ,CAACqK,IAAI,CAACK,WAAL,EAAD,CAAd,CAFJ,CATJ,EAaI,aAAK,iDAAG,CAAC3K,UAAJ,CAAeC,KAAf,CAAqB,8CAArB,CAAL,CAbJ,EAcI;AAAK,eAAS,EAAC;AAAf,OAA0BqK,IAAI,CAACM,MAAL,EAA1B,CAdJ,CADJ,CADF,GAmBE,IAlCR,CADJ;AAsCH,G;;;EA5DqC,uD;;;;;;;;;;;;;;;;;;;;;;;;;;ACP1C;AACA;AACA;AACA;AACA;AACA;;IAEqBC,S;;;;;;;;;;;SACjB7J,I,mBAAO;AACH;AACA9B,IAAA,iDAAG,CAAC+B,OAAJ,GAAc,IAAd;AAEA,SAAKV,OAAL,GAAehB,CAAC,CAACgC,IAAF,CAAO,KAAP,CAAf;AACA,SAAKE,UAAL,GAAkB,IAAI,6DAAJ,CAAmB,KAAKlB,OAAxB,CAAlB;AACA,SAAKkB,UAAL,CAAgBqJ,YAAhB;AACA,SAAKC,MAAL,GAAc,qDAAY,CAAC1L,SAAb,CAAuB;AAACkB,aAAO,EAAE,KAAKA;AAAf,KAAvB,CAAd;AACA,SAAKe,SAAL,GAAiB,iDAAG,CAACH,IAAJ,CAASC,QAAT,CAAkB,0BAAlB,KAAiD,iDAAG,CAACD,IAAJ,CAASC,QAAT,CAAkB,0BAAlB,MAAkD,GAApH;AACH,G;;SAEDhB,I,mBAAO;AACH,WACI;AAAK,eAAS,EAAC;AAAf,OACK,yDAAgB,CAACf,SAAjB,CAA2B;AAACiC,eAAS,EAAE,KAAKA;AAAjB,KAA3B,CADL,EAGI;AAAK,eAAS,EAAC;AAAf,OACI;AAAK,eAAS,EAAC;AAAf,OACM,KAAK0J,UAAL,GAAkBjG,GAAlB,CACE,UAAAkG,KAAK;AAAA,aAAIA,KAAK,CAACC,KAAN,CAAY7J,MAAZ,GACL,eACI,cAAM4J,KAAK,CAACxH,KAAZ,CADJ,EAEI;AAAO,iBAAS,EAAC;AAAjB,SACI,iBACA,cACI;AAAI,iBAAS,EAAC;AAAd,SAA8B,iDAAG,CAACzD,UAAJ,CAAeC,KAAf,CAAqB,4CAArB,CAA9B,CADJ,EAEI;AAAI,iBAAS,EAAC;AAAd,SAAgC,iDAAG,CAACD,UAAJ,CAAeC,KAAf,CAAqB,8CAArB,CAAhC,CAFJ,EAGI,cAAM,iDAAG,CAACD,UAAJ,CAAeC,KAAf,CAAqB,+CAArB,CAAN,CAHJ,EAII;AAAI,iBAAS,EAAC;AAAd,SAAiC,iDAAG,CAACD,UAAJ,CAAeC,KAAf,CAAqB,+CAArB,CAAjC,CAJJ,CADA,CADJ,EASMgL,KAAK,CAACC,KAAN,CAAYnG,GAAZ,CACE,UAAAuF,IAAI;AAAA,eAAI/K,CAAC,CAAC,qDAAD,EAAe;AAAC+K,cAAI,EAAEA;AAAP,SAAf,CAAL;AAAA,OADN,CATN,CAFJ,CADK,GAiBL,IAjBC;AAAA,KADP,CADN,CADJ,CAHJ,EA2BM,KAAKS,MA3BX,CADJ;AA+BH,G;AAED;;;;;SAGAC,U,yBAAa;AACT,QAAIA,UAAU,GAAG,CACb;AACIvH,WAAK,EAAE,iDAAG,CAACzD,UAAJ,CAAeC,KAAf,CAAqB,4CAArB,CADX;AAEIiL,WAAK,EAAE;AAFX,KADa,EAKb;AACIzH,WAAK,EAAE,iDAAG,CAACzD,UAAJ,CAAeC,KAAf,CAAqB,gDAArB,CADX;AAEIiL,WAAK,EAAE;AAFX,KALa,EASb;AACIzH,WAAK,EAAE,iDAAG,CAACzD,UAAJ,CAAeC,KAAf,CAAqB,4CAArB,CADX;AAEIiL,WAAK,EAAE;AAFX,KATa,CAAjB;AAcA,QAAIC,YAAY,GAAG,CAAnB,CAfS,CAiBT;;AACA,QAAMC,KAAK,GAAI,IAAIC,IAAJ,EAAD,CAAaC,QAAb,CAAsB,CAAtB,EAAwB,CAAxB,EAA0B,CAA1B,EAA4B,CAA5B,CAAd;AAEA,SAAK7J,UAAL,CAAgByJ,KAAhB,GAAwBK,OAAxB,CAAgC,UAAAjB,IAAI,EAAI;AACpC;AACA,UAAMkB,QAAQ,GAAG,IAAIH,IAAJ,CAASf,IAAI,CAACE,UAAL,EAAT,EAA4Bc,QAA5B,CAAqC,CAArC,EAAuC,CAAvC,EAAyC,CAAzC,EAA2C,CAA3C,CAAjB;;AAEA,cAAQH,YAAR;AACI,aAAK,CAAL;AACI,cAAIK,QAAQ,KAAKJ,KAAjB,EAAwB;AACpBJ,sBAAU,CAACG,YAAD,CAAV,CAAyBD,KAAzB,CAA+B7H,IAA/B,CAAoCiH,IAApC;AACH,WAFD,MAEO;AACHa,wBAAY;AACf;;AACD;;AACJ,aAAK,CAAL;AACI;AACA,cAAI,CAACC,KAAK,GAAGI,QAAT,KAAsB,OAAO,IAAP,GAAc,EAApC,KAA2C,EAA/C,EAAmD;AAC/CR,sBAAU,CAACG,YAAD,CAAV,CAAyBD,KAAzB,CAA+B7H,IAA/B,CAAoCiH,IAApC;AACH,WAFD,MAEO;AACHa,wBAAY;AACf;;AACD;;AACJ;AACIH,oBAAU,CAACG,YAAD,CAAV,CAAyBD,KAAzB,CAA+B7H,IAA/B,CAAoCiH,IAApC;AAjBR;AAmBH,KAvBD;AAyBA,WAAOU,UAAP;AACH,G;;;EA/FkC,uD;;;;;;;;;;;;;;ACPvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA,iDAAG,CAACS,YAAJ,CAAiB7L,GAAjB,CAAqB,gBAArB,EAAuC,UAAAV,GAAG,EAAI;AAC1CA,KAAG,CAAC4G,KAAJ,CAAU4F,MAAV,CAAiB,mBAAjB,IAAwC,yDAAxC;AACAxM,KAAG,CAAC4G,KAAJ,CAAU4F,MAAV,CAAiB,cAAjB,IAAmC,oDAAnC;AAEAC,EAAA,8DAAa;AACbC,EAAA,6DAAY;AACf,CAND,E;;;;;;;;;;;;;;;;;;;;ACPA;AACA;;IAEqBC,kB;;;;;;;;;;;SACjBrL,S,wBAAY;AACR,WAAO,sBAAP;AACH,G;;SAEDiD,K,oBAAQ;AACJ,WAAOvE,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,iDAArB,CAAP;AACH,G;;SAED6L,O,sBAAU;AACN,QAAIxI,WAAW,GAAG,KAAKhD,KAAL,CAAWgD,WAA7B;AAEA,WAAO/D,CAAC,CAAC,KAAD,EAAQ;AAACiB,eAAS,EAAE;AAAZ,KAAR,EAAmC,CACnCjB,CAAC,CAAC,GAAD,EAAML,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,uDAArB,EAA8E;AAAC8L,UAAI,EAAEzI;AAAP,KAA9E,CAAN,CADkC,EAEnC/D,CAAC,CAAC,KAAD,EAAQ;AAACiB,eAAS,EAAE;AAAZ,KAAR,EAA2C,CACxC,+DAAM,CAACnB,SAAP,CAAiB;AACb2E,UAAI,EAAE,QADO;AAEbxD,eAAS,EAAE,sCAFE;AAGb0D,cAAQ,EAAE,KAHG;AAIbpE,UAAI,EAAE,OAJO;AAKbC,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,0CAArB;AALG,KAAjB,CADwC,CAA3C,CAFkC,CAAnC,CAAR;AAaH,G;;SAED+L,O,sBAAU;AACN,QAAIC,KAAK,GAAG1F,MAAM,CAAC0B,IAAP,EAAZ;AAEA/I,OAAG,CAACgN,OAAJ,CAAY;AACRC,YAAM,EAAE,KADA;AAERC,SAAG,EAAElN,GAAG,CAACmN,KAAJ,CAAUC,SAAV,CAAoB,QAApB,IAAgC;AAF7B,KAAZ,EAGGjH,IAHH,CAGQ,UAAAkH,QAAQ,EAAI;AAChB,UAAIA,QAAQ,IAAIA,QAAQ,CAACC,QAAzB,EAAmC;AAC/BP,aAAK,CAACtL,QAAN,GAAiB4L,QAAQ,CAACC,QAA1B;AACH,OAFD,MAEO;AACHP,aAAK,CAACQ,KAAN;AACH;AACJ,KATD;AAUH,G;AAED;;;;;;;SAKA7K,Q,uBAAW;AACP,SAAKoK,OAAL;AACH,G;;;EAjD2C,8D;;;;;;;;;;;;;;;;;;;;;;;;ACHhD;AACA;AACA;;IAEqBU,mB;;;;;;;;;;;SAEnBjJ,K,oBAAQ;AACN,WAAO,iDAAG,CAACzD,UAAJ,CAAeC,KAAf,CAAqB,2CAArB,CAAP;AACD,G;;SAED0M,I,mBAAO;AACL,WAAO,CACLpN,CAAC,CAAC,KAAD,EAAQ;AAAEiB,eAAS,EAAE;AAAb,KAAR,EAAqC,CACpCjB,CAAC,CAAC,OAAD,EAAU;AAAEqN,SAAG,EAAE;AAAP,KAAV,EAA+B,iDAAG,CAAC5M,UAAJ,CAAeC,KAAf,CAAqB,oEAArB,CAA/B,CADmC,EAEpC,+DAAM,CAACZ,SAAP,CAAiB;AACf0E,WAAK,EAAE,KAAK8I,OAAL,CAAa,mCAAb,GADQ;AAEf1I,cAAQ,EAAE,KAAK0I,OAAL,CAAa,mCAAb,CAFK;AAGf9M,cAAQ,EAAE,iDAAG,CAACC,UAAJ,CAAeC,KAAf,CAAqB,qEAArB;AAHK,KAAjB,CAFoC,EAOpCV,CAAC,CAAC,MAAD,EAAS,iDAAG,CAACS,UAAJ,CAAeC,KAAf,CAAqB,0EAArB,EAAiG;AACzG6M,OAAC,EAAE;AAAG,YAAI,EAAC,6DAAR;AAAsE,cAAM,EAAC;AAA7E;AADsG,KAAjG,CAAT,CAPmC,CAArC,CADI,EAYLvN,CAAC,CAAC,KAAD,EAAQ;AAAEiB,eAAS,EAAE;AAAb,KAAR,EAAqC,CACpCjB,CAAC,CAAC,OAAD,EAAU;AAAEqN,SAAG,EAAE;AAAP,KAAV,EAAuC,iDAAG,CAAC5M,UAAJ,CAAeC,KAAf,CAAqB,uDAArB,CAAvC,CADmC,EAEpCV,CAAC,CAAC,OAAD,EAAU;AACTiI,QAAE,EAAE,kBADK;AAEThH,eAAS,EAAE,aAFF;AAGTuM,UAAI,EAAE,KAAKF,OAAL,CAAa,0BAAb;AAHG,KAAV,CAFmC,EAOpCtN,CAAC,CAAC,MAAD,EAAS,iDAAG,CAACS,UAAJ,CAAeC,KAAf,CAAqB,6DAArB,CAAT,CAPmC,CAArC,CAZI,CAAP;AAsBD,G;;;EA7B8C,sE;;;;;;;;;;;;;;;;;;;;;;;;;;ACJjD;AACA;AACA;AACA;;IAEqB+M,c;;;;;;;;;;;SACnBvJ,K,oBAAQ;AACN,WAAOvE,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,4CAArB,CAAP;AACD,G;;SAED0M,I,mBAAO;AACL,QAAMrJ,WAAW,GAAG,KAAKhD,KAAL,CAAWgD,WAA/B;AACA,QAAM2J,OAAO,GAAG,KAAKJ,OAAL,CAAa,qBAAb,EAAoC,KAApC,CAAhB;AAEA,WAAOtN,CAAC,CAAC,KAAD,EAAQ;AAAEiB,eAAS,EAAE;AAAb,KAAR,EAAqC,CACzCjB,CAAC,CAAC,GAAD,EAAML,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,uDAArB,EAA8E;AAAE8L,UAAI,EAAEzI;AAAR,KAA9E,CAAN,CADwC,EAEzC,+DAAM,CAACjE,SAAP,CAAiB;AACf0E,WAAK,EAAGkJ,OAAO,OAAO,IAAd,IAAsBA,OAAO,MAAM,CAD5B;AAEf9I,cAAQ,EAAE,KAAK+I,aAAL,CAAmBpL,IAAnB,CAAwB,IAAxB,EAA8BmL,OAA9B,EAAuC,qBAAvC,CAFK;AAGflN,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,kDAArB,EAAyE;AAAE8L,YAAI,EAAEzI;AAAR,OAAzE;AAHK,KAAjB,CAFyC,CAArC,CAAR;AASD,G;;SAED6J,Y,2BAAe;AACb,QAAM7J,WAAW,GAAG,KAAKhD,KAAL,CAAWgD,WAA/B;AACA,WAAO/D,CAAC,CAAC,KAAD,EAAQ;AAACiB,eAAS,EAAE;AAAZ,KAAR,EAAoC,CAC1C,+DAAM,CAACnB,SAAP,CAAiB;AACfmB,eAAS,EAAE,kBADI;AAEfV,UAAI,EAAE,WAFS;AAGfC,cAAQ,EAAEb,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,6DAArB,CAHK;AAIfS,aAAO,EAAE;AAAA,eAAM6F,MAAM,CAAC0B,IAAP,CAAY3E,WAAW,GAAG,OAA1B,CAAN;AAAA;AAJM,KAAjB,CAD0C,CAApC,CAAR;AAQD,G;AAED;;;;;;;;SAMA4J,a,0BAAc3L,I,EAAMsL,O,EAASrD,K,EAAO;AAAA;;AAClC4D,IAAA,gEAAY,oCACTP,OADS,IACCrD,KADD,iBAAZ;AAIAjI,QAAI,CAACiI,KAAD,CAAJ;AACD,G;;;EA5CyC,sE;;;;;;;;;;;;;;;;;;;;ACL5C;;IAEqB6D,oB;;;;;;;;;;;SACjB7M,S,wBAAY;AACR,WAAO,sBAAP;AACH,G;;SAEDiD,K,oBAAQ;AACJ,WAAOvE,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,gEAArB,CAAP;AACH,G;;SAED6L,O,sBAAU;AACN,QAAIwB,WAAW,GAAG,KAAKhN,KAAL,CAAW6C,gBAA7B;AACA,QAAIoK,KAAK,GAAG,EAAZ;AAEAD,eAAW,CAAC/B,OAAZ,CAAoB,UAAAnM,IAAI,EAAI;AACxBmO,WAAK,CAAClK,IAAN,CAAW9D,CAAC,CAAC,IAAD,EAAOA,CAAC,CAAC,MAAD,EAAS;AAACiB,iBAAS,EAAE;AAAZ,OAAT,EAA8BpB,IAA9B,CAAR,CAAZ;AACH,KAFD;AAIA,WAAOG,CAAC,CAAC,KAAD,EAAQ;AAACiB,eAAS,EAAE;AAAZ,KAAR,EAAmC,CACnCjB,CAAC,CAAC,GAAD,EAAML,GAAG,CAACc,UAAJ,CAAeC,KAAf,CACH,sEADG,EAEH;AAAC6M,OAAC,EAAE;AAAG,YAAI,EAAC,yDAAR;AAAkE,cAAM,EAAC;AAAzE;AAAJ,KAFG,CAAN,CADkC,EAKnCvN,CAAC,CAAC,IAAD,EAAOgO,KAAP,CALkC,CAAnC,CAAR;AAQH,G;;;EAzB6C,8D;;;;;;;;;;;;;;;;;;;;ACFlD;;IAEqBC,gB;;;;;;;;;;;SACjBhN,S,wBAAY;AACR,WAAO,kBAAP;AACH,G;;SAEDiD,K,oBAAQ;AACJ,WAAOvE,GAAG,CAACc,UAAJ,CAAeC,KAAf,CAAqB,gEAArB,CAAP;AACH,G;;SAED6L,O,sBAAU;AACN,QAAI5I,gBAAgB,GAAG,KAAK5C,KAAL,CAAW4C,gBAAlC;AACA,QAAID,YAAY,GAAG,KAAK3C,KAAL,CAAW2C,YAA9B;AAEA,WAAO1D,CAAC,CACJ,KADI,EAEJ;AAACiB,eAAS,EAAE;AAAZ,KAFI,EAGJtB,GAAG,CAACc,UAAJ,CAAeC,KAAf,CACI,sEADJ,EAEI;AACIwN,cAAQ,EAAEvK,gBADd;AAEIwK,WAAK,EAAEzK,YAFX;AAGI6J,OAAC,EAAE;AAAG,YAAI,EAAC,yDAAR;AAAkE,cAAM,EAAC;AAAzE;AAHP,KAFJ,CAHI,CAAR;AAYH,G;;;EAzByC,8D;;;;;;;;;;;;;;;;;;;;;;;;ACF9C;AACA;AACA;;IAEqBa,S;;;;;;;;;;EAAkB,yDAAK,CAAC,mDAAD,EAAQ;AAChDzI,SAAO,EAAE,mDAAK,CAACoH,SAAN,CAAgB,SAAhB,CADuC;AAEhD7I,OAAK,EAAE,mDAAK,CAAC6I,SAAN,CAAgB,OAAhB,CAFyC;AAGhDpM,aAAW,EAAE,mDAAK,CAACoM,SAAN,CAAgB,aAAhB,CAHmC;AAIhDsB,SAAO,EAAE,mDAAK,CAACtB,SAAN,CAAgB,SAAhB,CAJuC;AAKhDxM,MAAI,EAAE,mDAAK,CAACwM,SAAN,CAAgB,MAAhB,CAL0C;AAMhDuB,QAAM,EAAE,mDAAK,CAACvB,SAAN,CAAgB,QAAhB,CANwC;AAQhDtE,cAAY,EAAE,mDAAK,CAACsE,SAAN,CAAgB,cAAhB,CARkC;AAShDpE,cAAY,EAAE,mDAAK,CAACoE,SAAN,CAAgB,cAAhB,CATkC;AAWhD3E,WAAS,EAAE,mDAAK,CAAC2E,SAAN,CAAgB,WAAhB,CAXqC;AAahDnF,WAAS,EAAE,mDAAK,CAACmF,SAAN,CAAgB,WAAhB,CAbqC;AAchDpF,SAAO,EAAE,mDAAK,CAACoF,SAAN,CAAgB,SAAhB,CAduC;AAehDjF,SAAO,EAAE,mDAAK,CAACiF,SAAN,CAAgB,SAAhB,CAfuC;AAgBhDzE,mBAAiB,EAAE,mDAAK,CAACyE,SAAN,CAAgB,mBAAhB,CAhB6B;AAiBhDxE,iBAAe,EAAE,mDAAK,CAACwE,SAAN,CAAgB,iBAAhB,CAjB+B;AAkBhDlF,UAAQ,EAAE,mDAAK,CAACkF,SAAN,CAAgB,UAAhB,CAlBsC;AAoBhDwB,WAAS,EAAE,mDAAK,CAACxB,SAAN,CAAgB,WAAhB,CApBqC;AAsBhDzD,SAAO,EAAE,mDAAK,CAACyD,SAAN,CAAgB,SAAhB,CAtBuC;AAuBhDlD,YAAU,EAAE,mDAAK,CAACkD,SAAN,CAAgB,YAAhB,CAvBoC;AAyBhD;AACA;AACA3D,aAAW,EAAE,4DAAQ,CAAC,WAAD,EAAc,SAAd,EAAyB,YAAzB,EAAuC,4BAAvC,EAAqE,UAACxB,SAAD,EAAY0B,OAAZ,EAAqBO,UAArB,EAAiC7B,0BAAjC;AAAA,WAAgE,CAACJ,SAAD,IAAcI,0BAAd,KAA6C,CAACsB,OAAD,IAAYO,UAAzD,CAAhE;AAAA,GAArE,CA3B2B;AA4BhDhB,eAAa,EAAE,4DAAQ,CAAC,WAAD,EAAc,SAAd,EAAyB,UAACjB,SAAD,EAAYD,OAAZ;AAAA,WAAwBC,SAAS,IAAI,CAACD,OAAtC;AAAA,GAAzB,CA5ByB;AA8BhD;AACAoB,YAAU,EAAE,4DAAQ,CAAC,WAAD,EAAc,SAAd,EAAyB,UAACnB,SAAD,EAAYD,OAAZ;AAAA,WAAwBC,SAAS,IAAI,CAACD,OAAtC;AAAA,GAAzB,CA/B4B;AAgChDuB,aAAW,EAAE,4DAAQ,CAAC,WAAD,EAAc,SAAd,EAAyB,UAACtB,SAAD,EAAYD,OAAZ;AAAA,WAAwBC,SAAS,IAAID,OAArC;AAAA,GAAzB,CAhC2B;AAkChD4B,aAAW,EAAE,mDAAK,CAACwD,SAAN,CAAgB,aAAhB,CAlCmC;AAmChDyB,gBAAc,EAAE,mDAAK,CAACzB,SAAN,CAAgB,gBAAhB,CAnCgC;AAoChDtD,sBAAoB,EAAE,4DAAQ,CAAC,gBAAD,EAAmB,WAAnB,EAAgC,UAAC+E,cAAD,EAAiB5G,SAAjB;AAAA,WAA+B4G,cAAc,IAAI,CAAC5G,SAAlD;AAAA,GAAhC,CApCkB;AAsChDS,WAAS,EAAE,mDAAK,CAAC0E,SAAN,CAAgB,WAAhB,CAtCqC;AAuChDhF,WAAS,EAAE,mDAAK,CAACgF,SAAN,CAAgB,WAAhB,CAvCqC;AAyChDnD,2BAAyB,EAAE,mDAAK,CAACmD,SAAN,CAAgB,2BAAhB,CAzCqB;AA0ChDpD,yBAAuB,EAAE,mDAAK,CAACoD,SAAN,CAAgB,yBAAhB,CA1CuB;AA2ChD/E,4BAA0B,EAAE,mDAAK,CAAC+E,SAAN,CAAgB,4BAAhB;AA3CoB,CAAR,C;;;;;;;;;;;;;;;;;;;;;;ACJ5C;AACA;;IAEqB0B,I;;;;;;;;;;EAAa,yDAAK,CAAC,mDAAD,EAAQ;AAC3CzD,QAAM,EAAE,mDAAK,CAAC+B,SAAN,CAAgB,QAAhB,CADmC;AAE3C7B,SAAO,EAAE,mDAAK,CAAC6B,SAAN,CAAgB,SAAhB,CAFkC;AAG3CpH,SAAO,EAAE,mDAAK,CAACoH,SAAN,CAAgB,SAAhB,CAHkC;AAI3C1B,QAAM,EAAE,mDAAK,CAAC0B,SAAN,CAAgB,QAAhB,CAJmC;AAK3C9B,YAAU,EAAE,mDAAK,CAAC8B,SAAN,CAAgB,YAAhB,CAL+B;AAM3C5B,YAAU,EAAE,mDAAK,CAAC4B,SAAN,CAAgB,YAAhB,CAN+B;AAO3C3B,aAAW,EAAE,mDAAK,CAAC2B,SAAN,CAAgB,aAAhB;AAP8B,CAAR,C;;;;;;;;;;;;;;ACHvC;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;IAEqB2B,mB;;;AACjB,+BAAY1N,OAAZ,EAAqB;AACjB,SAAKiE,UAAL,GAAkBjF,CAAC,CAACgC,IAAF,CAAO,EAAP,CAAlB;AACA,SAAKhB,OAAL,GAAeA,OAAf;AACH;AAED;;;;;;;SAGA2N,Y,2BAAe;AACX;AACA;AACA,SAAK3N,OAAL,CAAa,OAAb,EAHW,CAKX;AACA;;AACAhB,KAAC,CAACiG,MAAF;AACH,G;AAED;;;;;;SAIAoD,gB,6BAAiB5D,S,EAAW;AAAA;;AACxB,SAAKzE,OAAL,CAAa,IAAb;AAEArB,IAAA,iDAAG,CAACgN,OAAJ,CAAY;AACRC,YAAM,EAAE,MADA;AAERC,SAAG,EAAE,iDAAG,CAACC,KAAJ,CAAUC,SAAV,CAAoB,QAApB,IAAgC,oBAF7B;AAGR6B,aAAO,EAAE,CAHD;AAIRhN,UAAI,EAAE;AACFqG,UAAE,EAAExC,SAAS,CAACwC,EAAV;AADF;AAJE,KAAZ,EAOGnC,IAPH,CAOQ,UAAAkH,QAAQ,EAAI;AAChB,WAAI,CAAC6B,2BAAL,CAAiC7B,QAAjC;AACH,KATD,EASG8B,KATH,CASS;AAAA,aAAM,KAAI,CAACH,YAAL,EAAN;AAAA,KATT;AAUH,G;AAED;;;;;;SAIAI,c,2BAAetJ,S,EAAW;AACtB,SAAKuJ,eAAL;AACA,SAAKzD,YAAL;AACH,G;AAED;;;;;;SAIAzC,kB,+BAAmBrD,S,EAAW;AAAA;;AAC1B,SAAKzE,OAAL,CAAa,IAAb;AAEArB,IAAA,iDAAG,CAACgN,OAAJ,CAAY;AACRC,YAAM,EAAE,QADA;AAERgC,aAAO,EAAE,CAFD;AAGR/B,SAAG,EAAE,iDAAG,CAACC,KAAJ,CAAUC,SAAV,CAAoB,QAApB,IAAgC,qBAAhC,GAAwDtH,SAAS,CAACwC,EAAV;AAHrD,KAAZ,EAIGnC,IAJH,CAIQ,UAAAkH,QAAQ,EAAI;AAChB,YAAI,CAAC6B,2BAAL,CAAiC7B,QAAjC;AACH,KAND,EAMG8B,KANH,CAMS;AAAA,aAAM,MAAI,CAACH,YAAL,EAAN;AAAA,KANT;AAOH,G;AAED;;;;;;SAIAM,gB,6BAAiBxJ,S,EAAW;AACxB,SAAKuJ,eAAL;AACA,SAAKzD,YAAL;AACH,G;AAED;;;;;;SAIA/C,iB,8BAAkB/C,S,EAAW;AAAA;;AACzB,SAAKzE,OAAL,CAAa,IAAb;AAEArB,IAAA,iDAAG,CAACgN,OAAJ,CAAY;AACRC,YAAM,EAAE,MADA;AAERC,SAAG,EAAE,iDAAG,CAACC,KAAJ,CAAUC,SAAV,CAAoB,QAApB,IAAgC,qBAAhC,GAAwDtH,SAAS,CAACwC,EAAV,EAAxD,GAAyE,WAFtE;AAGRrG,UAAI,EAAE;AACFsN,gBAAQ,EAAEzJ,SAAS,CAACsC,SAAV,MAAyB;AADjC;AAHE,KAAZ,EAMGjC,IANH,CAMQ,UAAAkH,QAAQ,EAAI;AAChB,YAAI,CAAC6B,2BAAL,CAAiC7B,QAAjC;AACH,KARD,EAQG8B,KARH,CAQS;AAAA,aAAM,MAAI,CAACH,YAAL,EAAN;AAAA,KART;AASH,G;;SAEDnF,yB,sCAA0B/D,S,EAAW0J,G,EAAY;AAAA,QAAZA,GAAY;AAAZA,SAAY,GAAN,IAAM;AAAA;;AAC7C;AAEA,QAAMzC,KAAK,GAAG,6DAAY,CAAC;AACvBG,SAAG,EAAE,iDAAG,CAACC,KAAJ,CAAUC,SAAV,CAAoB,QAApB,IAAgC,mBAAhC,IAAuDoC,GAAG,GAAG,EAAH,GAAQ,IAAlE,IAA0E,YAA1E,GAAyF1J,SAAS,CAACwC,EAAV,EADvE;AAEvBmH,gBAAU,EAAE,iDAAG,CAACtC,KAAJ,CAAUC,SAAV,CAAoB,QAApB,IAAgC;AAFrB,KAAD,CAA1B;AAKAL,SAAK,CAAC5G,IAAN,CAAW,YAAM;AACbkB,YAAM,CAAC5F,QAAP,CAAgBC,MAAhB;AACH,KAFD,EAEGyN,KAFH,CAES,YAAM;AACXO,WAAK,CAAC,iDAAG,CAAC5O,UAAJ,CAAeC,KAAf,CAAqB,4DAArB,CAAD,CAAL;AACH,KAJD;AAKH,G;;SAEDgJ,2B,wCAA4BjE,S,EAAW;AACnC,SAAK+D,yBAAL,CAA+B/D,SAA/B,EAA0C,KAA1C;AACH,G;AAED;;;;;;SAIAwD,e,4BAAgBxD,S,EAAW;AAAA;;AACvB,SAAKzE,OAAL,CAAa,IAAb;AAEArB,IAAA,iDAAG,CAACgN,OAAJ,CAAY;AACRE,SAAG,EAAE,iDAAG,CAACC,KAAJ,CAAUC,SAAV,CAAoB,QAApB,IAAgC,qBAAhC,GAAwDtH,SAAS,CAACwC,EAAV,EADrD;AAER2G,aAAO,EAAE,CAFD;AAGRhC,YAAM,EAAE;AAHA,KAAZ,EAIG9G,IAJH,CAIQ,UAAAkH,QAAQ,EAAI;AAChB,YAAI,CAAC6B,2BAAL,CAAiC7B,QAAjC;AACH,KAND,EAMGlH,IANH,CAMQ,YAAM;AACV1E,cAAQ,CAACC,MAAT;AACH,KARD,EAQGyN,KARH,CAQS;AAAA,aAAM,MAAI,CAACH,YAAL,EAAN;AAAA,KART;AASH,G;AAED;;;;;;SAIAW,e,4BAAgB7J,S,EAAW;AAAA;;AACvB,SAAKzE,OAAL,CAAa,IAAb;AAEA,QAAM2G,OAAO,GAAGlC,SAAS,CAACkC,OAAV,EAAhB;AAEAhI,IAAA,iDAAG,CAACgN,OAAJ,CAAY;AACRE,SAAG,EAAE,iDAAG,CAACC,KAAJ,CAAUC,SAAV,CAAoB,QAApB,IAAgC,qBAAhC,GAAwDtH,SAAS,CAACwC,EAAV,EAAxD,GAAyE,SADtE;AAER2E,YAAM,EAAE,OAFA;AAGRhL,UAAI,EAAE;AAAC+F,eAAO,EAAE,CAACA;AAAX;AAHE,KAAZ,EAIG7B,IAJH,CAIQ,UAAAkH,QAAQ,EAAI;AAChB,YAAI,CAAC6B,2BAAL,CAAiC7B,QAAjC;AACH,KAND,EAMG8B,KANH,CAMS;AAAA,aAAM,MAAI,CAACH,YAAL,EAAN;AAAA,KANT;AAOH,G;AAED;;;;;;SAIAxF,gB,6BAAiB1D,S,EAAW;AACxB,SAAK6J,eAAL,CAAqB7J,SAArB;AACH,G;AAED;;;;;;SAIAuD,e,4BAAgBvD,S,EAAW;AACvB,SAAK6J,eAAL,CAAqB7J,SAArB;AACH,G;AAED;;;;;;;SAKA8J,iB,8BAAkB9J,S,EAAW;AACzB,WAAO,KAAKR,UAAL,GAAkBuK,SAAlB,CAA4B,UAAAC,GAAG;AAAA,aAAIA,GAAG,CAACxH,EAAJ,MAAYxC,SAAS,CAACwC,EAAV,EAAhB;AAAA,KAA/B,CAAP;AACH,G;AAED;;;;;;;;SAMA4G,2B,wCAA4B7B,Q,EAAU;AAClC,SAAKhM,OAAL,CAAa,KAAb;AAEA,QAAIyE,SAAS,GAAG,iDAAG,CAACc,KAAJ,CAAUmJ,YAAV,CAAuB,mBAAvB,EAA4C1C,QAAQ,CAACpL,IAArD,CAAhB;AACA,SAAKqD,UAAL,GAAkB,KAAKsK,iBAAL,CAAuB9J,SAAvB,CAAlB,IAAuDA,SAAvD;AAEAzF,KAAC,CAACiG,MAAF;AACH,G;;;;;;;;;;;;;;;;;AC1LL;AAAA;AAAA;AAAA;AAAA;;IAEqByI,mB;;;AACjB,+BAAY1N,OAAZ,EAAqB;AACjB,SAAK2K,KAAL,GAAa3L,CAAC,CAACgC,IAAF,CAAO,EAAP,CAAb;AACA,SAAK2N,WAAL,GAAmB,IAAnB;AACA,SAAK3O,OAAL,GAAeA,OAAf;AACA,SAAKgO,eAAL;AACH;;;;SAEDzD,Y,2BAAe;AAAA;;AACX,QAAI,KAAKvK,OAAL,MAAkB,CAAC,KAAK2O,WAA5B,EAAyC;AACrC;AACH;;AAED,SAAK3O,OAAL,CAAa,IAAb;AAEArB,IAAA,iDAAG,CAACgN,OAAJ,CAAY;AACRC,YAAM,EAAE,KADA;AAERC,SAAG,EAAE,KAAK8C;AAFF,KAAZ,EAGG7J,IAHH,CAGQ,UAAA8J,MAAM,EAAI;AACd,UAAMC,QAAQ,GAAGD,MAAM,CAAChO,IAAP,CAAY4D,GAAZ,CAAgB,UAAA5D,IAAI;AAAA,eAAI,iDAAG,CAAC2E,KAAJ,CAAUmJ,YAAV,CAAuB,cAAvB,EAAuC9N,IAAvC,CAAJ;AAAA,OAApB,CAAjB;;AACA,WAAI,CAAC+J,KAAL,CAAWkE,QAAX;;AACA,WAAI,CAACF,WAAL,GAAmB,IAAnB;;AACA,WAAI,CAAC3O,OAAL,CAAa,KAAb;;AAEAhB,OAAC,CAACiG,MAAF;AACH,KAVD;AAWH,G;;SAED+I,e,8BAAkB;AACd,SAAKhO,OAAL,CAAa,KAAb;AACA,SAAK2O,WAAL,GAAmB,iDAAG,CAAC7C,KAAJ,CAAUC,SAAV,CAAoB,QAApB,IAAgC,eAAnD;AACA,SAAKpB,KAAL,CAAW,EAAX;AACH,G;;;;;;;;;;;;;;;;;AClCL;AAAA;;;;;;;;;;AAUe,yEAAUmE,IAAV,EAAgBC,IAAhB,EAAsBC,SAAtB,EAAiC;AAC5C,MAAIpB,OAAJ;AACA,SAAO,YAAY;AACf,QAAIqB,OAAO,GAAG,IAAd;AAAA,QAAoBC,IAAI,GAAGC,SAA3B;;AACA,QAAIC,KAAK,GAAG,SAARA,KAAQ,GAAY;AACpBxB,aAAO,GAAG,IAAV;AACA,UAAI,CAACoB,SAAL,EAAgBF,IAAI,CAACrJ,KAAL,CAAWwJ,OAAX,EAAoBC,IAApB;AACnB,KAHD;;AAIA,QAAIG,OAAO,GAAGL,SAAS,IAAI,CAACpB,OAA5B;AACA0B,gBAAY,CAAC1B,OAAD,CAAZ;AACAA,WAAO,GAAG2B,UAAU,CAACH,KAAD,EAAQL,IAAR,CAApB;AACA,QAAIM,OAAJ,EAAaP,IAAI,CAACrJ,KAAL,CAAWwJ,OAAX,EAAoBC,IAApB;AAChB,GAVD;AAWH;AAAA,C;;;;;;;;;;;;ACvBD;AAAe,yEAASrO,QAAT,EACf;AAAA,MADwBA,QACxB;AADwBA,YACxB,GADmC,EACnC;AAAA;;AACI,MAAMgL,GAAG,GAAGhL,QAAQ,CAACgL,GAAT,IAAgB,GAA5B;AACA,MAAMuC,UAAU,GAAGvN,QAAQ,CAACuN,UAAT,IAAuB,IAA1C;AACA,MAAMoB,KAAK,GAAG3O,QAAQ,CAAC2O,KAAT,IAAkB,GAAhC;AACA,MAAMC,MAAM,GAAG5O,QAAQ,CAAC4O,MAAT,IAAmB,GAAlC;AACA,MAAMC,OAAO,GAAGzJ,CAAC,CAACD,MAAD,CAAjB,CALJ,CAOI;;AACA,MAAM2J,QAAQ,GAAG3Q,CAAC,CAAC2Q,QAAF,EAAjB;AAEA,MAAMjE,KAAK,GAAG1F,MAAM,CAAC0B,IAAP,CAAYmE,GAAZ,EAAiB,aAAjB,EACV,WAAS2D,KAAT,sBACUC,MADV,qBAEOC,OAAO,CAACD,MAAR,KAAmB,CAAnB,GAAuBA,MAAM,GAAG,CAFvC,uBAGQC,OAAO,CAACF,KAAR,KAAkB,CAAlB,GAAsBA,KAAK,GAAG,CAHtC,WAIA,sCALU,CAAd;AAOA,MAAMI,QAAQ,GAAG5J,MAAM,CAAC6J,WAAP,CAAmB,YAAM;AACtC,QAAI;AACA,UAAInE,KAAK,CAACoE,MAAV,EAAkB;AACd9J,cAAM,CAAC+J,aAAP,CAAqBH,QAArB;AACAD,gBAAQ,CAACK,MAAT;AACH,OAHD,MAGO,IAAItE,KAAK,CAACuE,QAAN,CAAeC,GAAf,KAAuB9B,UAA3B,EAAuC;AAC1CpI,cAAM,CAAC+J,aAAP,CAAqBH,QAArB;AACAlE,aAAK,CAACQ,KAAN;AACAyD,gBAAQ,CAACQ,OAAT;AACH;AACJ,KATD,CASE,OAAOC,CAAP,EAAU,CACR;AACH;AACJ,GAbgB,EAad,GAbc,CAAjB;AAeA,SAAOT,QAAQ,CAACU,OAAhB;AACH,C;;;;;;;;;;;AClCD,iD;;;;;;;;;;;ACAA,6C;;;;;;;;;;;ACAA,2C;;;;;;;;;;;ACAA,kE;;;;;;;;;;;ACAA,2D;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,yD;;;;;;;;;;;ACAA,2D;;;;;;;;;;;ACAA,6D;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,8D;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,yD;;;;;;;;;;;ACAA,8C;;;;;;;;;;;ACAA,wD;;;;;;;;;;;ACAA,yD;;;;;;;;;;;ACAA,oD;;;;;;;;;;;ACAA,sD;;;;;;;;;;;ACAA,sD;;;;;;;;;;;ACAA,qD;;;;;;;;;;;ACAA,yD;;;;;;;;;;;ACAA,mD;;;;;;;;;;;ACAA,0D","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./admin.js\");\n","export * from './src/admin';","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import {extend} from 'flarum/extend';\nimport app from 'flarum/app';\nimport AdminNav from 'flarum/components/AdminNav';\nimport AdminLinkButton from 'flarum/components/AdminLinkButton';\nimport BazaarPage from './components/BazaarPage';\n\nexport default function () {\n // create the route\n app.routes['flagrow-bazaar'] = {path: '/flagrow/bazaar', component: BazaarPage.component()};\n // settings toggle on native extensions page\n app.extensionSettings['flagrow-bazaar'] = () => m.route(app.route('flagrow-bazaar'));\n // Add tab to admin menu\n extend(AdminNav.prototype, 'items', items => {\n items.add('flagrow-bazaar', AdminLinkButton.component({\n href: app.route('flagrow-bazaar'),\n icon: 'fas fa-shopping-bag',\n children: app.translator.trans('flagrow-bazaar.admin.nav.title'),\n description: app.translator.trans('flagrow-bazaar.admin.nav.description')\n }));\n });\n}\n","import {extend} from 'flarum/extend';\nimport app from 'flarum/app';\nimport TasksPage from './components/TasksPage';\n\nexport default function () {\n app.routes['flagrow-bazaar-tasks'] = {path: '/flagrow/bazaar/tasks', component: TasksPage.component()};\n}\n","import Component from 'flarum/Component';\nimport icon from \"flarum/helpers/icon\";\nimport Button from 'flarum/components/Button';\nimport LinkButton from 'flarum/components/LinkButton';\n\nexport default class BazaarLoader extends Component {\n\n view() {\n const error = this.props.loading() === 'error';\n\n return m('div', {\n className: 'Bazaar--Loader ' + (error ? 'Error' : null),\n hidden: this.props.loading() === false\n }, [\n m('.Loader-modal', [\n m('.Loader-icon', icon(error ? 'fas fa-exclamation-triangle' : 'fas fa-shopping-bag')),\n m('div', [\n m('p', app.translator.trans(error ? 'flagrow-bazaar.admin.loader.error' : 'flagrow-bazaar.admin.loader.is_loading')),\n error ? [\n Button.component({\n className: 'Button Button--block',\n icon: 'fas fa-sync',\n onclick: () => location.reload(),\n children: app.translator.trans('flagrow-bazaar.admin.loader.refresh')\n }),\n Button.component({\n className: 'Button Button--block',\n icon: 'fas fa-times',\n onclick: () => this.props.loading(false),\n children: app.translator.trans('flagrow-bazaar.admin.loader.close')\n }),\n LinkButton.component({\n className: 'Button Button--block',\n icon: 'fas fa-bug',\n href: 'https://github.com/flagrow/bazaar/issues',\n target: '_blank',\n config: {}, // Disable internal Mithril routing\n children: app.translator.trans('flagrow-bazaar.admin.loader.report_issue')\n }),\n ] : null\n ])\n ])\n ])\n }\n}\n","import Component from \"flarum/Component\";\nimport ExtensionRepository from \"../utils/ExtensionRepository\";\nimport ExtensionList from \"./ExtensionList\";\nimport ExtensionSearch from \"./ExtensionSearch\";\nimport BazaarPageHeader from './BazaarPageHeader';\n\n\nexport default class BazaarPage extends Component {\n init() {\n app.current = this;\n\n this.authorized = (app.data.settings['flagrow.bazaar.api_token'] || '').length > 0;\n this.connected = app.data.settings['flagrow.bazaar.connected'] && app.data.settings['flagrow.bazaar.connected'] !== '0';\n this.loading = m.prop(true);\n\n this.params = this.params();\n\n this.repository = new ExtensionRepository(this.loading);\n\n this.extensionList = new ExtensionList({\n params: this.params,\n loading: this.loading,\n repository: this.repository,\n connected: this.connected,\n authorized: this.authorized\n });\n\n this.search = ExtensionSearch.component({params: this.params, onsubmit: this.updateResults.bind(this)});\n }\n\n updateResults(params) {\n this.params = params;\n\n this.extensionList.update(params);\n }\n\n view() {\n return m('div', {className: 'Bazaar Extensions'}, [\n BazaarPageHeader.component({\n connected: this.connected\n }),\n m('div', {className: 'ExtensionsPage-list'}, [\n m('div', {className: 'container'}, [\n this.search,\n this.extensionList.render()\n ])\n ]),\n ]);\n }\n\n /**\n * Get URL parameters that stick between filter changes.\n *\n * @return {Object}\n */\n stickyParams() {\n return {\n sort: m.route.param('sort'),\n q: m.route.param('q')\n };\n }\n\n\n /**\n * Get parameters to pass to the DiscussionList component.\n *\n * @return {Object}\n */\n params() {\n const params = this.stickyParams();\n\n params.filter = m.route.param('filter');\n\n return params;\n }\n}\n","import app from 'flarum/app';\nimport Component from 'flarum/Component';\nimport LinkButton from 'flarum/components/LinkButton';\nimport Button from 'flarum/components/Button';\nimport FilePermissionsModal from '../modals/FilePermissionsModal';\nimport MemoryLimitModal from '../modals/MemoryLimitModal';\nimport BazaarConnectModal from '../modals/BazaarConnectModal';\nimport BazaarSettingsModal from '../modals/BazaarSettingsModal';\nimport DashboardModal from '../modals/DashboardModal';\n\nexport default class BazaarPageHeader extends Component {\n view() {\n return (\n
\n
\n {this.header()}\n
\n
\n );\n }\n\n header() {\n let buttons = [].concat(\n this.pagesButtons(),\n this.settingsButton(),\n this.requirementsButtons(),\n this.connectedButtons(),\n );\n\n return m('div', {className: 'ButtonGroup'}, buttons);\n }\n\n settingsButton() {\n return [\n Button.component({\n className: 'Button Button--icon',\n icon: 'fas fa-cog',\n onclick: () => app.modal.show(new BazaarSettingsModal)\n })\n ];\n }\n /**\n * Loads a list of buttons that give insight in the state of this installation.\n * @returns {Array}\n */\n requirementsButtons() {\n let memory_limit_met = app.data.settings['flagrow.bazaar.php.memory_limit-met'] || false;\n let memory_limit = app.data.settings['flagrow.bazaar.php.memory_limit'];\n let memory_requested = app.data.settings['flagrow.bazaar.php.memory_requested'];\n let file_permissions = app.data.settings['flagrow.bazaar.file-permissions'] || [];\n\n let components = [];\n\n if (!memory_limit_met) {\n components.push(\n Button.component({\n className: 'Button Button--icon Requirement-MemoryLimit',\n icon: 'fas fa-signal',\n onclick: () => app.modal.show(new MemoryLimitModal({memory_requested, memory_limit}))\n })\n );\n }\n\n if (file_permissions.length > 0) {\n components.push(Button.component({\n className: 'Button Button--icon Requirement-FilePermissions',\n icon: 'fas fa-hdd',\n onclick: () => app.modal.show(new FilePermissionsModal({file_permissions}))\n }));\n }\n\n return components;\n }\n\n connectedButtons() {\n let connected = this.props.connected;\n let flagrowHost = app.data.settings['flagrow.bazaar.flagrow-host'] || 'https://flagrow.io';\n\n if (connected) {\n return [\n Button.component({\n className: 'Button Button--icon Connected',\n icon: 'fas fa-plug',\n onclick: () => app.modal.show(new DashboardModal({\n flagrowHost\n }))\n }),\n ]\n }\n\n return [\n Button.component({\n className: 'Button Button--icon Connect',\n icon: 'fas fa-plug',\n onclick: () => app.modal.show(new BazaarConnectModal({flagrowHost}))\n }),\n ]\n }\n\n pagesButtons() {\n // Sometimes no route has been set as the current one\n if (typeof app.current === 'undefined') {\n return null;\n }\n\n const routeName = app.current.props.routeName;\n let links = [];\n\n links.push(LinkButton.component({\n className: 'Button Button--icon',\n icon: 'fas fa-shopping-bag',\n href: app.route('flagrow-bazaar'),\n title: app.translator.trans('flagrow-bazaar.admin.header.extensions'),\n active: routeName === 'flagrow-bazaar'\n }));\n\n links.push(LinkButton.component({\n className: 'Button Button--icon',\n icon: 'fas fa-history',\n href: app.route('flagrow-bazaar-tasks'),\n title: app.translator.trans('flagrow-bazaar.admin.header.tasks'),\n active: routeName === 'flagrow-bazaar-tasks'\n }));\n\n return links;\n }\n}\n","import Button from \"flarum/components/Button\";\nimport icon from 'flarum/helpers/icon';\nimport extract from 'flarum/utils/extract';\nimport extractText from 'flarum/utils/extractText';\n\nexport default class CustomCheckbox extends Button {\n view() {\n const attrs = Object.assign({}, this.props);\n\n delete attrs.state;\n delete attrs.children;\n\n attrs.className = attrs.className || '';\n attrs.type = attrs.type || 'button';\n\n if (this.props.state) attrs.className += ' active';\n\n // If nothing else is provided, we use the textual button content as tooltip\n if (!attrs.title && this.props.children) {\n attrs.title = extractText(this.props.children);\n }\n\n const iconName = extract(attrs, 'icon');\n if (iconName) attrs.className += ' hasIcon';\n\n const loading = extract(attrs, 'loading');\n if (attrs.disabled || loading) {\n attrs.className += ' disabled' + (loading ? ' loading' : '');\n delete attrs.onclick;\n }\n\n return (\n \n );\n }\n\n /**\n * Run a callback when the state of the checkbox is changed.\n *\n * @param {Boolean} checked\n * @protected\n */\n onchange() {\n if (this.props.onchange) this.props.onchange(! this.props.state, this);\n }\n}\n","import Component from 'flarum/Component';\nimport Button from 'flarum/components/Button';\nimport ExtensionListItem from './ExtensionListItem';\nimport BazaarLoader from \"./BazaarLoader\";\nimport Placeholder from 'flarum/components/Placeholder';\n\nexport default class ExtensionList extends Component {\n init() {\n /**\n * Whether or not discussion results are loading.\n *\n * @type {Boolean}\n */\n this.loading = this.props.loading;\n\n /**\n * Whether or not there are more results that can be loaded.\n *\n * @type {Boolean}\n */\n this.moreResults = false;\n this.resultMeta = {};\n\n // this.repository = new ExtensionRepository(this.loading);\n\n /**\n * The discussions in the discussion list.\n *\n * @type {Extension[]}\n */\n this.extensions = [];\n\n this.refresh();\n }\n\n\n\n view() {\n let loading;\n\n if (this.loading()) {\n loading = BazaarLoader.component({loading: this.loading});\n } else if (this.moreResults) {\n loading = [\n Button.component({\n children: app.translator.trans('flagrow-bazaar.admin.page.button.more', {current: this.resultMeta.pages_current + 1, total: this.resultMeta.pages_total}),\n className: 'Button Button--primary',\n onclick: this.loadMore.bind(this)\n })\n ];\n }\n\n if (this.extensions.length === 0 && !this.loading) {\n let text = app.translator.trans('flagrow-bazaar.admin.page.state.no_results_available');\n\n if (! this.props.authorized) {\n text = app.translator.trans('flagrow-bazaar.admin.page.state.not_authorized');\n }\n\n return (\n
\n {Placeholder.component({text})}\n
\n );\n }\n\n return (\n
\n
\n {this.extensions.map(extension => {\n return ExtensionListItem.component({\n extension: extension,\n repository: this.props.repository,\n connected: this.props.connected,\n key: extension.package(),\n });\n })}\n
\n
\n {loading}\n
\n
\n );\n }\n\n update(params) {\n this.props.params = params;\n\n this.refresh();\n }\n\n /**\n * Clear and reload the discussion list.\n *\n * @public\n */\n refresh(clear = true) {\n if (clear) {\n this.loading(true);\n this.extensions = [];\n }\n\n return this.loadResults().then(\n results => {\n this.extensions = [];\n this.parseResults(results);\n },\n () => {\n this.loading(false);\n m.redraw();\n }\n );\n }\n\n /**\n * Load a new page of discussion results.\n *\n * @param {Integer} offset The index to start the page at.\n * @return {Promise}\n */\n loadResults(offset) {\n const params = this.requestParams();\n params.page = {offset};\n params.include = params.include.join(',');\n\n return app.store.find('bazaar/extensions', params);\n }\n\n /**\n * Parse results and append them to the discussion list.\n *\n * @param {Extension[]} results\n * @return {Extension[]}\n */\n parseResults(results) {\n [].push.apply(this.extensions, results);\n\n this.loading(false);\n this.moreResults = !!results.payload.links.next;\n this.resultMeta = results.payload.meta || {};\n\n m.lazyRedraw();\n\n return results;\n }\n\n /**\n * Load the next page of discussion results.\n *\n * @public\n */\n loadMore() {\n this.loading(true);\n\n this.loadResults(this.extensions.length)\n .then(this.parseResults.bind(this));\n }\n\n /**\n * Get the parameters that should be passed in the API request to get\n * discussion results.\n *\n * @return {Object}\n * @api\n */\n requestParams() {\n const params = this.props.params;\n const out = {include: [], filter: {}};\n\n out.sort = this.sortMap()[params.sort];\n\n if (params.q) {\n out.filter.q = params.q;\n }\n\n if (params.filter) {\n out.filter = window.$.param(params.filter);\n }\n\n return out;\n }\n\n /**\n * Get a map of sort keys (which appear in the URL, and are used for\n * translation) to the API sort value that they represent.\n *\n * @return {Object}\n */\n sortMap() {\n const map = {};\n\n if (this.props.params.q) {\n map.relevance = '';\n }\n\n return map;\n }\n}\n","import Component from \"flarum/Component\";\nimport icon from \"flarum/helpers/icon\";\nimport ItemList from \"flarum/utils/ItemList\";\nimport Button from \"flarum/components/Button\";\nimport Dropdown from \"flarum/components/Dropdown\";\nimport Badge from 'flarum/components/Badge';\n\nexport default class ExtensionListItem extends Component {\n config(isInitialized) {\n if (isInitialized) return;\n\n // Be careful to always use a `key` with this component or this mis-align the tooltips if items are added or removed\n if (this.props.extension.description()) this.$('.ExtensionIcon').tooltip({container: 'body'});\n }\n\n view() {\n const extension = this.props.extension;\n const connected = this.props.connected || false;\n const controls = this.controlItems(extension, connected).toArray();\n const badges = this.badges(extension).toArray();\n const repository = this.props.repository;\n\n return
0 ? 'hasControls' : '') +\n (extension.favorited() ? 'favorited' : '') +\n (extension.flarumCompatibilityCurrent() ? ' compatible' : 'incompatible')\n } key={extension.id()} data-id={extension.id()}>\n \n {extension.icon() ? icon('fas fa-' + extension.icon().name) : ''}\n \n
\n
    \n {badges}\n
\n \n\n
\n {extension.description()}\n
\n\n
\n
{app.translator.trans('flagrow-bazaar.admin.page.extension.vendor')}
\n
{extension.package().split('/')[0]}
\n
\n
\n
{app.translator.trans('flagrow-bazaar.admin.page.extension.downloads')}
\n
{extension.downloads()}
\n
\n
\n
{app.translator.trans('flagrow-bazaar.admin.page.extension.favorites')}
\n
{extension.favorites()}
\n
\n {extension.installed_version() ? (\n
\n
{app.translator.trans('flagrow-bazaar.admin.page.extension.installed_version')}
\n
{extension.installed_version()}
\n
\n ) : ''}\n
\n
{app.translator.trans('flagrow-bazaar.admin.page.extension.highest_version')}
\n
{extension.highest_version()}
\n
\n
\n {connected ? (\n repository.favoriteExtension(extension)}>\n \n ) : ''}\n {extension.discuss_link() ? (\n window.open(extension.discuss_link())}>\n \n ) : ''}\n {extension.landing_link() ? (\n window.open(extension.landing_link())}>\n \n ) : ''}\n \n {controls}\n \n
\n
\n
;\n }\n\n controlItems(extension, connected) {\n const items = new ItemList();\n const repository = this.props.repository;\n\n const favoriteTrans = extension.favorited() ? 'flagrow-bazaar.admin.page.button.remove_favorite_button' : 'flagrow-bazaar.admin.page.button.favorite_button';\n\n if (connected) {\n items.add('favorite', Button.component({\n icon: 'fas fa-heart',\n children: app.translator.trans(favoriteTrans),\n onclick: () => {\n repository.favoriteExtension(extension);\n }\n }));\n }\n\n if (! extension.pending()) {\n if (extension.enabled() && app.extensionSettings[name]) {\n items.add('settings', Button.component({\n icon: 'fas fa-cog',\n children: app.translator.trans('core.admin.extensions.settings_button'),\n onclick: app.extensionSettings[name]\n }));\n }\n\n if (extension.can_uninstall()) {\n items.add('uninstall', Button.component({\n icon: 'fas fa-minus-square',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.uninstall'),\n onclick: () => {\n repository.uninstallExtension(extension);\n }\n }));\n }\n\n if (extension.can_enable()) {\n items.add('enable', Button.component({\n icon: 'fas fa-check-square',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.enable'),\n onclick: () => {\n repository.enableExtension(extension);\n }\n }));\n }\n\n if (extension.installed() && extension.outdated()) {\n items.add('update', Button.component({\n icon: 'fas fa-level-up',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.update'),\n onclick: () => {\n repository.updateExtension(extension);\n }\n }));\n }\n\n if (extension.can_disable()) {\n items.add('disable', Button.component({\n icon: 'fas fa-square',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.disable'),\n onclick: () => {\n repository.disableExtension(extension);\n }\n }));\n }\n\n if (extension.can_install()) {\n items.add('install', Button.component({\n icon: 'fas fa-plus-square',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.install'),\n onclick: () => {\n repository.installExtension(extension);\n }\n }));\n }\n }\n\n if (extension.premium() && !connected) {\n items.add('subscribe', Button.component({\n disabled: true,\n icon: 'fas fa-shopping-cart',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.connect_to_subscribe'),\n }));\n }\n\n if (extension.canCheckout() && connected) {\n items.add('subscribe', Button.component({\n icon: 'fas fa-shopping-cart',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.subscribe'),\n onclick: () => {\n repository.premiumExtensionSubscribe(extension);\n }\n }));\n }\n\n if (extension.canSafelyUnsubscribe() && connected) {\n items.add('unsubscribe', Button.component({\n icon: 'fas fa-ban',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.unsubscribe'),\n onclick: () => {\n repository.premiumExtensionUnsubscribe(extension);\n }\n }));\n }\n\n return items;\n }\n\n /**\n * Get the Badge components that apply to this discussion.\n *\n * @return {ItemList}\n * @public\n */\n badges(extension) {\n const items = new ItemList();\n\n if (!extension.flarumCompatibilityNext()) {\n items.add('nextIncompatible', )\n }\n if (!extension.flarumCompatibilityLatest()) {\n items.add('latestIncompatible', )\n }\n if (!extension.flarumCompatibilityCurrent()) {\n items.add('incompatible', )\n }\n if (extension.subscribed()) {\n items.add('subscribed', );\n } else if (extension.premium()) {\n items.add('premium', );\n }\n if (extension.pending()) {\n items.add('pending', );\n }\n // if (extension.installed() && extension.outdated()) {\n items.add('outdated', )\n // }\n if (extension.favorited()) {\n items.add('favorited', )\n }\n if (extension.installed() && !extension.enabled()) {\n items.add('installed', )\n }\n if (extension.enabled()) {\n items.add('enabled', )\n }\n\n return items;\n }\n}\n","import Component from \"flarum/Component\";\nimport CustomCheckbox from \"./CustomCheckbox\";\nimport debounce from \"../utils/debounce\";\n\nexport default class ExtensionSearch extends Component {\n init() {\n this.updateDebounce = debounce(() => {\n if (this.props.onsubmit) this.props.onsubmit(this.props.params);\n }, 500);\n }\n\n view() {\n return m('div', [\n m('fieldset', {className: 'ExtensionSearch'},\n m('input[type=text].FormControl', {\n value: this.props.params.q || '',\n oninput: m.withAttr('value', term => this.search(term)),\n placeholder: app.translator.trans('flagrow-bazaar.admin.search.placeholder'),\n })\n ),\n m('div', {className: 'ExtensionFilters ButtonGroup'}, [\n CustomCheckbox.component({\n icon: 'fas fa-level-up',\n className: 'Button hasIcon',\n state: this.isToggled('update'),\n onchange: (checked) => this.toggleFilter('update', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_update')\n }),\n CustomCheckbox.component({\n icon: 'fas fa-circle-notch',\n className: 'Button hasIcon',\n state: this.isToggled('pending'),\n onchange: (checked) => this.toggleFilter('pending', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_pending')\n }),\n CustomCheckbox.component({\n icon: 'fas fa-plus-square',\n className: 'Button hasIcon',\n state: this.isToggled('installed'),\n onchange: (checked) => this.toggleFilter('installed', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_installed')\n }),\n this.connected ? [\n CustomCheckbox.component({\n icon: 'fas fa-heart',\n className: 'Button hasIcon',\n state: this.isToggled('favorited'),\n onchange: (checked) => this.toggleFilter('favorited', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_favorited')\n }),\n CustomCheckbox.component({\n icon: 'fas fa-shopping-cart',\n className: 'Button hasIcon',\n state: this.isToggled('subscribed'),\n onchange: (checked) => this.toggleFilter('subscribed', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_subscribed')\n }),\n ] : '',\n CustomCheckbox.component({\n icon: 'fas fa-certificate',\n className: 'Button hasIcon',\n state: this.isToggled('premium'),\n onchange: (checked) => this.toggleFilter('premium', checked),\n children: app.translator.trans('flagrow-bazaar.admin.search.filter_premium')\n }),\n ])\n ])\n }\n\n isToggled(name) {\n const filter = this.props.params.filter || {};\n const is = filter.is || [];\n\n return is.indexOf(name) >= 0;\n }\n\n toggleFilter(name, checked) {\n let filter = this.props.params.filter || {};\n let is = filter.is || [];\n\n const i = is.indexOf(name);\n\n if (checked && i === -1) {\n is.push(name);\n } else if (!checked && i >= 0) {\n is.splice(i, 1);\n }\n\n filter.is = is;\n\n this.props.params.filter = filter;\n\n this.updateDebounce();\n }\n\n search(term) {\n this.props.params.q = term;\n\n this.updateDebounce();\n }\n}\n","import app from 'flarum/app';\nimport Component from \"flarum/Component\";\nimport icon from \"flarum/helpers/icon\";\nimport Button from \"flarum/components/Button\";\nimport humanTime from 'flarum/helpers/humanTime';\nimport fullTime from 'flarum/helpers/fullTime';\n\nexport default class TaskListItem extends Component {\n init() {\n this.extended = m.prop(false);\n }\n\n view() {\n const task = this.props.task;\n const iconName = (function() {\n switch (task.status()) {\n case 'success':\n return 'fas fa-check';\n case 'exception':\n return 'fas fa-exclamation';\n case 'working':\n return 'fas fa-spinner';\n }\n return 'fas fa-clock';\n })();\n\n // We need to wrap items in a tbody because Mithril 0.2 and therefore flarum/Component does not allow a list of vnodes to be returned from a view\n // And we can't wrap in anything else without breaking the table\n // Having multiple does not seem to be too much an issue https://stackoverflow.com/a/3076790/3133038\n return (\n \n \n { humanTime(task.created_at()) }\n
{ icon(iconName) }
\n \n { app.translator.trans('flagrow-bazaar.admin.page.task.command.' + task.command(), {extension: ({ task.package() })}) }\n \n \n { Button.component({\n icon: 'fas fa-plus',\n className: 'Button',\n onclick: () => { this.extended(!this.extended()); }\n }) }\n \n \n { this.extended() ? (\n \n \n
\n
{ app.translator.trans('flagrow-bazaar.admin.page.task.attribute.created_at') }
\n
{ fullTime(task.created_at()) }
\n
\n
\n
{ app.translator.trans('flagrow-bazaar.admin.page.task.attribute.started_at') }
\n
{ fullTime(task.started_at()) }
\n
\n
\n
{ app.translator.trans('flagrow-bazaar.admin.page.task.attribute.finished_at') }
\n
{ fullTime(task.finished_at()) }
\n
\n

{ app.translator.trans('flagrow-bazaar.admin.page.task.header.output') }

\n
{ task.output() }
\n \n \n ) : null}\n \n );\n }\n}\n","import app from 'flarum/app';\nimport Component from 'flarum/Component';\nimport TaskRepository from './../utils/TaskRepository';\nimport BazaarPageHeader from './BazaarPageHeader';\nimport TaskListItem from './TaskListItem';\nimport BazaarLoader from './BazaarLoader';\n\nexport default class TasksPage extends Component {\n init() {\n // Used in the header\n app.current = this;\n\n this.loading = m.prop(false);\n this.repository = new TaskRepository(this.loading);\n this.repository.loadNextPage();\n this.loader = BazaarLoader.component({loading: this.loading});\n this.connected = app.data.settings['flagrow.bazaar.connected'] && app.data.settings['flagrow.bazaar.connected'] !== '0';\n }\n\n view() {\n return (\n
\n {BazaarPageHeader.component({connected: this.connected})}\n\n
\n
\n { this.taskGroups().map(\n group => group.tasks.length ? (\n
\n

{ group.title }

\n \n \n \n \n \n \n \n \n \n { group.tasks.map(\n task => m(TaskListItem, {task: task})\n ) }\n
{ app.translator.trans('flagrow-bazaar.admin.page.task.header.time') }{ app.translator.trans('flagrow-bazaar.admin.page.task.header.status') }{ app.translator.trans('flagrow-bazaar.admin.page.task.header.command') }{ app.translator.trans('flagrow-bazaar.admin.page.task.header.details') }
\n
\n ) : null\n ) }\n
\n
\n { this.loader }\n
\n );\n }\n\n /**\n * Split tasks into three groups: today, this month and older\n */\n taskGroups() {\n let taskGroups = [\n {\n title: app.translator.trans('flagrow-bazaar.admin.page.task.group.today'),\n tasks: []\n },\n {\n title: app.translator.trans('flagrow-bazaar.admin.page.task.group.lastmonth'),\n tasks: []\n },\n {\n title: app.translator.trans('flagrow-bazaar.admin.page.task.group.older'),\n tasks: []\n }\n ];\n let currentGroup = 0;\n\n // Milliseconds from 1 January 1970 00:00:00 UTC\n const today = (new Date()).setHours(0,0,0,0);\n\n this.repository.tasks().forEach(task => {\n // Milliseconds from 1 January 1970 00:00:00 UTC\n const taskDate = new Date(task.created_at()).setHours(0,0,0,0);\n\n switch (currentGroup) {\n case 0:\n if (taskDate === today) {\n taskGroups[currentGroup].tasks.push(task);\n } else {\n currentGroup++;\n }\n break;\n case 1:\n // Check if the date is within the last 30 days\n if ((today - taskDate) / (1000 * 3600 * 24) <= 30) {\n taskGroups[currentGroup].tasks.push(task);\n } else {\n currentGroup++;\n }\n break;\n default:\n taskGroups[currentGroup].tasks.push(task);\n }\n });\n\n return taskGroups;\n }\n}\n","import { extend } from 'flarum/extend';\nimport app from 'flarum/app';\nimport Extension from './models/Extension';\nimport Task from './models/Task';\nimport addBazaarPage from './addBazaarPage';\nimport addTasksPage from './addTasksPage';\n\napp.initializers.add('flagrow-bazaar', app => {\n app.store.models['bazaar-extensions'] = Extension;\n app.store.models['bazaar-tasks'] = Task;\n\n addBazaarPage();\n addTasksPage();\n});\n","import Modal from \"flarum/components/Modal\";\nimport Button from \"flarum/components/Button\";\n\nexport default class BazaarConnectModal extends Modal {\n className() {\n return 'FilePermissionsModal';\n }\n\n title() {\n return app.translator.trans('flagrow-bazaar.admin.modal.connect-bazaar.title');\n }\n\n content() {\n let flagrowHost = this.props.flagrowHost;\n\n return m('div', {className: 'Modal-body'}, [\n m('p', app.translator.trans('flagrow-bazaar.admin.modal.connect-bazaar.description', {host: flagrowHost})),\n m('div', {className: \"App-primaryControl\"}, [\n Button.component({\n type: 'submit',\n className: 'Button Button--primary Button--block',\n disabled: false,\n icon: 'check',\n children: app.translator.trans('flagrow-bazaar.admin.page.button.connect')\n })\n ])\n ]\n );\n }\n\n connect() {\n var popup = window.open();\n\n app.request({\n method: 'GET',\n url: app.forum.attribute('apiUrl') + '/bazaar/connect'\n }).then(response => {\n if (response && response.redirect) {\n popup.location = response.redirect;\n } else {\n popup.close()\n }\n });\n }\n\n /**\n * Handle the modal form's submit event.\n *\n * @param {Event} e\n */\n onsubmit() {\n this.connect();\n }\n}\n","import app from 'flarum/app';\nimport SettingsModal from 'flarum/components/SettingsModal';\nimport Switch from 'flarum/components/Switch';\n\nexport default class BazaarSettingsModal extends SettingsModal {\n\n title() {\n return app.translator.trans('flagrow-bazaar.admin.modal.settings.title');\n }\n\n form() {\n return [\n m('div', { className: 'Form-group' }, [\n m('label', { for: 'use-cron' }, app.translator.trans('flagrow-bazaar.admin.modal.settings.field.use_cron_for_tasks.label')),\n Switch.component({\n state: this.setting('flagrow.bazaar.use_cron_for_tasks')(),\n onchange: this.setting('flagrow.bazaar.use_cron_for_tasks'),\n children: app.translator.trans('flagrow-bazaar.admin.modal.settings.field.use_cron_for_tasks.toggle')\n }),\n m('span', app.translator.trans('flagrow-bazaar.admin.modal.settings.field.use_cron_for_tasks.description', {\n a:
\n }))\n ]),\n m('div', { className: 'Form-group' }, [\n m('label', { for: 'bazaar-api-token' }, app.translator.trans('flagrow-bazaar.admin.modal.settings.field.token.label')),\n m('input', {\n id: 'bazaar-api-token',\n className: 'FormControl',\n bidi: this.setting('flagrow.bazaar.api_token')\n }),\n m('span', app.translator.trans('flagrow-bazaar.admin.modal.settings.field.token.description'))\n ])\n ];\n }\n}\n","import Switch from 'flarum/components/Switch';\nimport SettingsModal from 'flarum/components/SettingsModal';\nimport saveSettings from 'flarum/utils/saveSettings';\nimport Button from 'flarum/components/Button';\n\nexport default class DashboardModal extends SettingsModal {\n title() {\n return app.translator.trans('flagrow-bazaar.admin.modal.dashboard.title');\n }\n\n form() {\n const flagrowHost = this.props.flagrowHost;\n const syncing = this.setting('flagrow.bazaar.sync', false);\n\n return m('div', { className: 'Modal-body' }, [\n m('p', app.translator.trans('flagrow-bazaar.admin.modal.dashboard.sync.description', { host: flagrowHost })),\n Switch.component({\n state: (syncing() === true || syncing() == 1),\n onchange: this.updateSetting.bind(this, syncing, 'flagrow.bazaar.sync'),\n children: app.translator.trans('flagrow-bazaar.admin.modal.dashboard.sync.switch', { host: flagrowHost })\n }),\n ]\n );\n }\n\n submitButton() {\n const flagrowHost = this.props.flagrowHost;\n return m('div', {className: 'ButtonGroup'}, [\n Button.component({\n className: 'Button Connected',\n icon: 'dashboard',\n children: app.translator.trans('flagrow-bazaar.admin.modal.dashboard.visit-remote-dashboard'),\n onclick: () => window.open(flagrowHost + '/home')\n })\n ]);\n }\n\n /**\n * Updates setting in database.\n * @param prop\n * @param setting\n * @param value\n */\n updateSetting(prop, setting, value) {\n saveSettings({\n [setting]: value\n });\n\n prop(value);\n }\n}\n","import Modal from \"flarum/components/Modal\";\n\nexport default class FilePermissionsModal extends Modal {\n className() {\n return 'FilePermissionsModal';\n }\n\n title() {\n return app.translator.trans('flagrow-bazaar.admin.modal.requirements.file-permissions.title');\n }\n\n content() {\n var permissions = this.props.file_permissions;\n var paths = [];\n\n permissions.forEach(path => {\n paths.push(m('li', m('span', {className: 'code'}, path)))\n })\n\n return m('div', {className: 'Modal-body'}, [\n m('p', app.translator.trans(\n 'flagrow-bazaar.admin.modal.requirements.file-permissions.description',\n {a: }\n )),\n m('ul', paths)\n ]\n );\n }\n}\n","import Modal from \"flarum/components/Modal\";\n\nexport default class MemoryLimitModal extends Modal {\n className() {\n return 'MemoryLimitModal';\n }\n\n title() {\n return app.translator.trans('flagrow-bazaar.admin.modal.requirements.php-memory_limit.title');\n }\n\n content() {\n let memory_requested = this.props.memory_requested;\n let memory_limit = this.props.memory_limit;\n\n return m(\n 'div',\n {className: 'Modal-body'},\n app.translator.trans(\n 'flagrow-bazaar.admin.modal.requirements.php-memory_limit.description',\n {\n required: memory_requested,\n limit: memory_limit,\n a: \n }\n )\n );\n }\n}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\nimport computed from 'flarum/utils/computed';\n\nexport default class Extension extends mixin(Model, {\n package: Model.attribute('package'),\n title: Model.attribute('title'),\n description: Model.attribute('description'),\n license: Model.attribute('license'),\n icon: Model.attribute('icon'),\n locale: Model.attribute('locale'),\n\n discuss_link: Model.attribute('discuss_link'),\n landing_link: Model.attribute('landing_link'),\n\n downloads: Model.attribute('downloads'),\n\n installed: Model.attribute('installed'),\n enabled: Model.attribute('enabled'),\n pending: Model.attribute('pending'),\n installed_version: Model.attribute('installed_version'),\n highest_version: Model.attribute('highest_version'),\n outdated: Model.attribute('outdated'),\n\n flarum_id: Model.attribute('flarum_id'),\n\n premium: Model.attribute('premium'),\n subscribed: Model.attribute('subscribed'),\n\n // Install/uninstall\n // Extension is available if it's either non-premium or premium & subscribed\n can_install: computed('installed', 'premium', 'subscribed', 'flarumCompatibilityCurrent', (installed, premium, subscribed, flarumCompatibilityCurrent) => !installed && flarumCompatibilityCurrent && (!premium || subscribed)),\n can_uninstall: computed('installed', 'enabled', (installed, enabled) => installed && !enabled),\n\n // Enable/disable\n can_enable: computed('installed', 'enabled', (installed, enabled) => installed && !enabled),\n can_disable: computed('installed', 'enabled', (installed, enabled) => installed && enabled),\n\n canCheckout: Model.attribute('canCheckout'),\n canUnsubscribe: Model.attribute('canUnsubscribe'),\n canSafelyUnsubscribe: computed('canUnsubscribe', 'installed', (canUnsubscribe, installed) => canUnsubscribe && !installed),\n\n favorites: Model.attribute('favorites'),\n favorited: Model.attribute('favorited'),\n\n flarumCompatibilityLatest: Model.attribute('flarumCompatibilityLatest'),\n flarumCompatibilityNext: Model.attribute('flarumCompatibilityNext'),\n flarumCompatibilityCurrent: Model.attribute('flarumCompatibilityCurrent'),\n}) {}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class Task extends mixin(Model, {\n status: Model.attribute('status'),\n command: Model.attribute('command'),\n package: Model.attribute('package'),\n output: Model.attribute('output'),\n created_at: Model.attribute('created_at'),\n started_at: Model.attribute('started_at'),\n finished_at: Model.attribute('finished_at')\n}) {}\n","import app from \"flarum/app\";\nimport popupPromise from './popupPromise';\n\nexport default class ExtensionRepository {\n constructor(loading) {\n this.extensions = m.prop([]);\n this.loading = loading;\n }\n\n /**\n * Handles a request error\n */\n requestError() {\n // If an error occured, we can clear the loading overlay\n // The error means it's not processing anymore\n this.loading('error');\n\n // Depending on how fast the \"Oops! Something went wrong\" popup appears,\n // the loading change is not taken into account. Use redraw to force remove the overlay\n m.redraw();\n }\n\n /**\n * Install an extension.\n * @param extension\n */\n installExtension(extension) {\n this.loading(true);\n\n app.request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/bazaar/extensions',\n timeout: 0,\n data: {\n id: extension.id()\n }\n }).then(response => {\n this.updateExtensionInRepository(response)\n }).catch(() => this.requestError());\n }\n\n /**\n * Handles an installation failure.\n * @param extension\n */\n installFailure(extension) {\n this.resetNavigation();\n this.loadNextPage();\n }\n\n /**\n * Uninstall an extension.\n * @param extension\n */\n uninstallExtension(extension) {\n this.loading(true);\n\n app.request({\n method: 'DELETE',\n timeout: 0,\n url: app.forum.attribute('apiUrl') + '/bazaar/extensions/' + extension.id()\n }).then(response => {\n this.updateExtensionInRepository(response)\n }).catch(() => this.requestError());\n }\n\n /**\n * Handles an uninstall failure.\n * @param extension\n */\n uninstallFailure(extension) {\n this.resetNavigation();\n this.loadNextPage();\n }\n\n /**\n * Processing (de-) favoriting extensions.\n * @param extension\n */\n favoriteExtension(extension) {\n this.loading(true);\n\n app.request({\n method: 'post',\n url: app.forum.attribute('apiUrl') + '/bazaar/extensions/' + extension.id() + '/favorite',\n data: {\n favorite: extension.favorited() != true\n }\n }).then(response => {\n this.updateExtensionInRepository(response)\n }).catch(() => this.requestError());\n }\n\n premiumExtensionSubscribe(extension, buy = true) {\n //this.loading(true);\n\n const popup = popupPromise({\n url: app.forum.attribute('apiUrl') + '/bazaar/redirect/' + (buy ? '' : 'un') + 'subscribe/' + extension.id(),\n waitForUrl: app.forum.attribute('apiUrl') + '/bazaar/callback/subscription',\n });\n\n popup.then(() => {\n window.location.reload();\n }).catch(() => {\n alert(app.translator.trans('flagrow-bazaar.admin.page.extension.subscribe_check_failed'));\n });\n }\n\n premiumExtensionUnsubscribe(extension) {\n this.premiumExtensionSubscribe(extension, false);\n }\n\n /**\n * Updates an extension.\n * @param extension\n */\n updateExtension(extension) {\n this.loading(true);\n\n app.request({\n url: app.forum.attribute('apiUrl') + '/bazaar/extensions/' + extension.id(),\n timeout: 0,\n method: 'PATCH'\n }).then(response => {\n this.updateExtensionInRepository(response)\n }).then(() => {\n location.reload();\n }).catch(() => this.requestError());\n }\n\n /**\n * Toggles an extension (enable or disable).\n * @param extension\n */\n toggleExtension(extension) {\n this.loading(true);\n\n const enabled = extension.enabled();\n\n app.request({\n url: app.forum.attribute('apiUrl') + '/bazaar/extensions/' + extension.id() + '/toggle',\n method: 'PATCH',\n data: {enabled: !enabled}\n }).then(response => {\n this.updateExtensionInRepository(response)\n }).catch(() => this.requestError());\n }\n\n /**\n * Disable an extension.\n * @param extension\n */\n disableExtension(extension) {\n this.toggleExtension(extension);\n }\n\n /**\n * Enable an extension.\n * @param extension\n */\n enableExtension(extension) {\n this.toggleExtension(extension);\n }\n\n /**\n * Loads the index of this extension in the extensions array.\n * @param extension\n * @returns {number}\n */\n getExtensionIndex(extension) {\n return this.extensions().findIndex(ext => ext.id() == extension.id());\n }\n\n /**\n * Updates an extension and takes care of updating its state in the extension page too.\n * @param extension\n * @param property\n * @param value\n */\n updateExtensionInRepository(response) {\n this.loading(false);\n\n let extension = app.store.createRecord('bazaar-extensions', response.data);\n this.extensions()[this.getExtensionIndex(extension)] = extension;\n\n m.redraw();\n }\n}\n","import app from 'flarum/app';\n\nexport default class ExtensionRepository {\n constructor(loading) {\n this.tasks = m.prop([]);\n this.nextPageUrl = null;\n this.loading = loading;\n this.resetNavigation();\n }\n\n loadNextPage() {\n if (this.loading() || !this.nextPageUrl) {\n return;\n }\n\n this.loading(true);\n\n app.request({\n method: 'GET',\n url: this.nextPageUrl\n }).then(result => {\n const newTasks = result.data.map(data => app.store.createRecord('bazaar-tasks', data));\n this.tasks(newTasks);\n this.nextPageUrl = null;\n this.loading(false);\n\n m.redraw();\n });\n }\n\n resetNavigation() {\n this.loading(false);\n this.nextPageUrl = app.forum.attribute('apiUrl') + '/bazaar/tasks';\n this.tasks([]);\n }\n\n}\n","/**\n * Based on _.debounce from underscore.js\n * Copyright (c) 2009-2017 Jeremy Ashkenas, DocumentCloud and Investigative\n * @see https://davidwalsh.name/javascript-debounce-function\n *\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n */\nexport default function (func, wait, immediate) {\n let timeout;\n return function () {\n let context = this, args = arguments;\n let later = function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n let callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n","export default function(settings = {})\n{\n const url = settings.url || '/';\n const waitForUrl = settings.waitForUrl || null;\n const width = settings.width || 600;\n const height = settings.height || 400;\n const $window = $(window);\n\n // The new Promise polyfill of Mithril v1 is a lot better\n const deferred = m.deferred();\n\n const popup = window.open(url, 'bazaarPopup',\n `width=${width},` +\n `height=${height},` +\n `top=${$window.height() / 2 - height / 2},` +\n `left=${$window.width() / 2 - width / 2},` +\n 'status=no,scrollbars=no,resizable=no');\n\n const interval = window.setInterval(() => {\n try {\n if (popup.closed) {\n window.clearInterval(interval);\n deferred.reject();\n } else if (popup.document.URL === waitForUrl) {\n window.clearInterval(interval);\n popup.close();\n deferred.resolve();\n }\n } catch (e) {\n // Ignore errors, these will be cross-origin exceptions\n }\n }, 500);\n\n return deferred.promise;\n}\n","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['app'];","module.exports = flarum.core.compat['components/AdminLinkButton'];","module.exports = flarum.core.compat['components/AdminNav'];","module.exports = flarum.core.compat['components/Badge'];","module.exports = flarum.core.compat['components/Button'];","module.exports = flarum.core.compat['components/Dropdown'];","module.exports = flarum.core.compat['components/LinkButton'];","module.exports = flarum.core.compat['components/Modal'];","module.exports = flarum.core.compat['components/Placeholder'];","module.exports = flarum.core.compat['components/SettingsModal'];","module.exports = flarum.core.compat['components/Switch'];","module.exports = flarum.core.compat['extend'];","module.exports = flarum.core.compat['helpers/fullTime'];","module.exports = flarum.core.compat['helpers/humanTime'];","module.exports = flarum.core.compat['helpers/icon'];","module.exports = flarum.core.compat['utils/ItemList'];","module.exports = flarum.core.compat['utils/computed'];","module.exports = flarum.core.compat['utils/extract'];","module.exports = flarum.core.compat['utils/extractText'];","module.exports = flarum.core.compat['utils/mixin'];","module.exports = flarum.core.compat['utils/saveSettings'];"],"sourceRoot":""} \ No newline at end of file diff --git a/js/src/admin/utils/ExtensionRepository.js b/js/src/admin/utils/ExtensionRepository.js index 5e69cf9..aa13c71 100644 --- a/js/src/admin/utils/ExtensionRepository.js +++ b/js/src/admin/utils/ExtensionRepository.js @@ -182,6 +182,7 @@ export default class ExtensionRepository { let extension = app.store.createRecord('bazaar-extensions', response.data); this.extensions()[this.getExtensionIndex(extension)] = extension; + m.redraw(); } } diff --git a/src/Listeners/SyncWasSet.php b/src/Listeners/SyncWasSet.php index cc619fc..ac49841 100644 --- a/src/Listeners/SyncWasSet.php +++ b/src/Listeners/SyncWasSet.php @@ -37,7 +37,7 @@ public function subscribe(Dispatcher $events) public function notifyRemote(Saved $event) { - if (in_array('flagrow.bazaar.sync', $event->settings)) { + if ($event->settings['flagrow.bazaar.sync'] ?? false) { $response = $this->api->post('bazaar/sync-configured', [ 'json' => [ 'sync' => $event->settings['flagrow.bazaar.sync'] diff --git a/src/Providers/ConsoleProvider.php b/src/Providers/ConsoleProvider.php index d5ce687..77145e7 100644 --- a/src/Providers/ConsoleProvider.php +++ b/src/Providers/ConsoleProvider.php @@ -10,14 +10,18 @@ class ConsoleProvider extends AbstractServiceProvider { public function register() { + if (!defined('ARTISAN_BINARY')) { + define('ARTISAN_BINARY', 'flarum'); + } + // Force registering the Schedule as singleton. $this->app->register(Console::class); - /** @var Schedule $schedule */ - $schedule = $this->app->make(Schedule::class); - - $schedule->command('bazaar:task') - ->everyMinute() - ->withoutOverlapping(); + $this->app->resolving(Schedule::class, function (Schedule $schedule) { + $schedule->command('bazaar:task') + ->everyMinute() + ->withoutOverlapping() + ->appendOutputTo(storage_path('logs/bazaar-tasks.log')); + }); } }