File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/calendar/sync/manager/dist/manager.bundle.js.map
Back
{"version":3,"file":"manager.bundle.js","sources":["../src/controls/syncstatuspopup.js","../src/controls/syncbutton.js","../src/connectionproviders/connectionitem.js","../src/connectionproviders/connectionprovider.js","../src/connectionproviders/googleprovider.js","../src/connectionproviders/office365provider.js","../src/connectionproviders/icloudprovider.js","../src/connectionproviders/androidprovider.js","../src/connectionproviders/caldavconnection.js","../src/connectionproviders/caldavprovider.js","../src/connectionproviders/exchangeprovider.js","../src/connectionproviders/iphoneprovider.js","../src/connectionproviders/macprovider.js","../src/connectionproviders/outlookprovider.js","../src/connectionproviders/yandexprovider.js","../src/manager.js"],"sourcesContent":["// @flow\n'use strict';\n\nimport {Tag, Loc, Dom, Type} from 'main.core';\nimport {Popup} from 'main.popup';\nimport {EventEmitter} from \"main.core.events\";\n\nexport default class SyncStatusPopup extends EventEmitter\n{\n\tstatic IS_RUN_REFRESH = false;\n\n\tconstructor(options)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Sync.Interface.SyncStatusPopup');\n\t\tthis.connections = options.connections;\n\t\tthis.withUpdateButton = options.withUpdateButton;\n\t\tthis.node = options.node;\n\t\tthis.id = options.id;\n\n\t\tthis.init();\n\t}\n\n\tstatic createInstance(options)\n\t{\n\t\treturn new this(options)\n\t}\n\n\tinit()\n\t{\n\t\tthis.setPopupContent();\n\t}\n\n\tcreatePopup()\n\t{\n\t\tthis.popup = new Popup({\n\t\t\tclassName: this.id,\n\t\t\tbindElement: this.node,\n\t\t\tcontent: this.container,\n\t\t\tangle: true,\n\t\t\twidth: 360,\n\t\t\toffsetLeft: 60,\n\t\t\toffsetTop: 5,\n\t\t\tpadding: 7,\n\t\t\tdarkMode: true,\n\t\t\tautoHide: true,\n\t\t\tzIndexAbsolute: 3010,\n\t\t});\n\t}\n\n\tshow()\n\t{\n\t\tthis.createPopup();\n\t\tthis.popup.show();\n\t}\n\n\tsetPopupContent()\n\t{\n\t\tthis.container = Tag.render `\n\t\t\t<div class=\"calendar-sync-popup-list\"></div>\n\t\t`;\n\n\t\tthis.connections.forEach(connection => {\n\t\t\tif (connection.getConnectStatus() !== true)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst options = {};\n\n\t\t\toptions.syncTime = this.getFormattedTime(connection.getSyncDate());\n\t\t\toptions.classStatus = connection.getSyncStatus()\n\t\t\t\t? 'calendar-sync-popup-item-status-success'\n\t\t\t\t: 'calendar-sync-popup-item-status-fail'\n\t\t\t;\n\t\t\toptions.classLable = 'calendar-sync-popup-item-text-' + connection.getClassLabel();\n\t\t\toptions.title = connection.getConnectionName();\n\t\t\tconst block = this.getSyncElement(options);\n\t\t\tthis.container.append(block);\n\t\t});\n\n\n\t\tif (this.withUpdateButton)\n\t\t{\n\t\t\tthis.container.append(this.getContentRefreshBlock());\n\n\t\t\tif (SyncStatusPopup.IS_RUN_REFRESH)\n\t\t\t{\n\t\t\t\tthis.showRefreshStatus();\n\t\t\t}\n\t\t}\n\n\t\treturn this.container;\n\t}\n\n\thide()\n\t{\n\t\tthis.popup.destroy();\n\t}\n\n\tgetContainer()\n\t{\n\t\treturn this.container;\n\t}\n\n\tgetPopup()\n\t{\n\t\treturn this.popup;\n\t}\n\n\tgetFormattedTime(date)\n\t{\n\t\tconst now = new Date();\n\t\tlet timestamp = date;\n\t\tif (Type.isDate(date))\n\t\t{\n\t\t\ttimestamp = Math.round(date.getTime() / 1000);\n\t\t\tlet secondsAgo = parseInt((now - date) / 1000);\n\t\t\tif (secondsAgo < 60)\n\t\t\t{\n\t\t\t\treturn Loc.getMessage('CAL_JUST');\n\t\t\t}\n\t\t}\n\n\t\treturn BX.date.format(\n\t\t\t[\n\t\t\t\t[\"tommorow\", \"tommorow, H:i:s\"],\n\t\t\t\t[\"i\" , \"iago\"],\n\t\t\t\t[\"H\", \"Hago\"],\n\t\t\t\t[\"d\", \"dago\"],\n\t\t\t\t[\"m100\", \"mago\"],\n\t\t\t\t[\"m\", \"mago\"],\n\t\t\t\t[\"-\", \"\"]\n\t\t\t],\n\t\t\ttimestamp\n\t\t);\n\t}\n\n\tgetSyncElement(options)\n\t{\n\t\treturn Tag.render `\n\t\t\t\t<div class=\"calendar-sync-popup-item\">\n\t\t\t\t\t<span class=\"calendar-sync-popup-item-text ${options.classLable}\">${BX.util.htmlspecialchars(options.title)}</span>\n\t\t\t\t\t<div class=\"calendar-sync-popup-item-detail\">\n\t\t\t\t\t\t<span class=\"calendar-sync-popup-item-time\">${options.syncTime}</span>\n\t\t\t\t\t\t<span class=\"calendar-sync-popup-item-status ${options.classStatus}\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`;\n\t}\n\n\trefresh(connections)\n\t{\n\t\tthis.connections = connections;\n\t\tthis.popup.setContent(this.setPopupContent());\n\t\tthis.setRefreshStatusBlock();\n\t}\n\n\tsetRefreshStatusBlock()\n\t{\n\t\tsetTimeout(() => {\n\t\t\tthis.removeRefreshStatusBlock();\n\t\t\tthis.enableRefreshButton();\n\t\t\tSyncStatusPopup.IS_RUN_REFRESH = false;\n\t\t}, 120000);\n\t}\n\n\tremoveRefreshStatusBlock()\n\t{\n\t\tif (Type.isElementNode(this.refreshStatusBlock))\n\t\t{\n\t\t\tthis.refreshStatusBlock.remove();\n\t\t}\n\t}\n\n\tenableRefreshButton()\n\t{\n\t\tif (Type.isElementNode(this.refreshButton))\n\t\t{\n\t\t\tthis.refreshButton.className = 'calendar-sync-popup-footer-btn';\n\t\t}\n\t}\n\n\tdisableRefreshButton()\n\t{\n\t\tif (Type.isElementNode(this.refreshButton))\n\t\t{\n\t\t\tthis.refreshButton.className = 'calendar-sync-popup-footer-btn calendar-sync-popup-footer-btn-disabled';\n\t\t}\n\t}\n\n\tgetContentRefreshBlock()\n\t{\n\t\tthis.footerWrapper = Tag.render`\n\t\t\t<div class=\"calendar-sync-popup-footer-wrap\">\n\t\t\t\t${this.getContentRefreshButton()}\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.footerWrapper;\n\t}\n\n\tgetContentRefreshButton()\n\t{\n\t\tthis.refreshButton = Tag.render`\n\t\t\t<button class=\"calendar-sync-popup-footer-btn\">${Loc.getMessage('CAL_REFRESH')}</button>\n\t\t`;\n\n\t\tthis.refreshButton.addEventListener('click', () => {\n\t\t\tDom.addClass(this.refreshButton, 'calendar-sync-popup-footer-btn-load');\n\t\t\tSyncStatusPopup.IS_RUN_REFRESH = true;\n\t\t\tthis.refreshButton.innerText = Loc.getMessage('CAL_REFRESHING');\n\t\t\tthis.runRefresh();\n\t\t});\n\n\t\treturn this.refreshButton;\n\t}\n\n\tshowRefreshStatus()\n\t{\n\t\tthis.disableRefreshButton();\n\t\tthis.footerWrapper.prepend(this.getRefreshStatus());\n\t}\n\n\tgetRefreshStatus()\n\t{\n\t\tthis.refreshStatusBlock = Tag.render`\n\t\t\t<span class=\"calendar-sync-popup-footer-status\">${Loc.getMessage('CAL_REFRESH_JUST')}</span>\n\t\t`;\n\n\t\treturn this.refreshStatusBlock;\n\t}\n\n\trunRefresh()\n\t{\n\t\tthis.emit('onRefresh', {});\n\t}\n\n\tgetId()\n\t{\n\t\treturn this.id;\n\t}\n}","// @flow\n'use strict';\n\nimport {Loc, Dom} from \"main.core\";\nimport SyncStatusPopup from \"./syncstatuspopup\";\n\nexport default class SyncButton\n{\n\tBUTTON_SIZE = BX.UI.Button.Size.EXTRA_SMALL;\n\tBUTTON_ROUND = true;\n\n\tconstructor(options)\n\t{\n\t\tthis.connectionsProviders = options.connectionsProviders;\n\t\tthis.wrapper = options.wrapper;\n\t\tthis.userId = options.userId;\n\t\tthis.status = options.status;\n\n\t\tthis.buttonEnterTimeout = null;\n\t\tthis.buttonLeaveTimeout = null;\n\t}\n\n\tstatic createInstance(options)\n\t{\n\t\treturn new this(options);\n\t}\n\n\tshow()\n\t{\n\t\tconst buttonData = this.getButtonData();\n\t\tthis.button = new BX.UI.Button({\n\t\t\ttext: buttonData.text,\n\t\t\tround: this.BUTTON_ROUND,\n\t\t\tsize: this.BUTTON_SIZE,\n\t\t\tcolor: buttonData.color,\n\t\t\tclassName: 'ui-btn-themes ' + (buttonData.iconClass || ''),\n\t\t\tonclick: () => {\n\t\t\t\tthis.handleClick();\n\t\t\t},\n\t\t\tevents: {\n\t\t\t\tmouseenter: this.handlerMouseEnter.bind(this),\n\t\t\t\tmouseleave: this.handlerMouseLeave.bind(this),\n\t\t\t},\n\t\t});\n\n\t\tthis.button.renderTo(this.wrapper);\n\t}\n\n\tshowPopup(button)\n\t{\n\t\tif(this.status !== 'not_connected')\n\t\t{\n\t\t\tconst connections = [];\n\t\t\tconst providersCollection = Object.values(this.connectionsProviders);\n\n\t\t\tprovidersCollection.forEach(provider => {\n\t\t\t\tconst providerConnections = provider.getConnections();\n\t\t\t\tif(providerConnections.length > 0)\n\t\t\t\t{\n\t\t\t\t\tproviderConnections.forEach(connection =>\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (connection.getConnectStatus() === true)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tconnections.push(connection);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.popup = SyncStatusPopup.createInstance({\n\t\t\t\tconnections: connections,\n\t\t\t\twithUpdateButton: true,\n\t\t\t\tnode: button.getContainer(),\n\t\t\t\tid: 'calendar-sync-button-status',\n\t\t\t});\n\t\t\tthis.popup.show();\n\n\t\t\tthis.popup.getPopup().getPopupContainer().addEventListener('mouseenter', e => {\n\t\t\t\tclearTimeout(this.buttonEnterTimeout);\n\t\t\t\tclearTimeout(this.buttonLeaveTimeout);\n\t\t\t});\n\t\t\tthis.popup.getPopup().getPopupContainer().addEventListener('mouseleave', () => {\n\t\t\t\tthis.hidePopup();\n\t\t\t});\n\t\t}\n\t}\n\n\thidePopup()\n\t{\n\t\tif (this.popup)\n\t\t{\n\t\t\tthis.popup.hide();\n\t\t}\n\t}\n\n\trefresh(status)\n\t{\n\t\tthis.status = status;\n\n\t\tconst buttonData = this.getButtonData();\n\t\tthis.button.setColor(buttonData.color);\n\t\tthis.button.setText(buttonData.text);\n\t\tthis.button.removeClass('ui-btn-icon-fail ui-btn-icon-success ui-btn-clock');\n\t\tthis.button.addClass(buttonData.iconClass);\n\t}\n\n\thandleClick()\n\t{\n\t\tclearTimeout(this.buttonEnterTimeout);\n\t\t(window.top.BX || window.BX).Runtime.loadExtension('calendar.sync.interface').then((exports) => {\n\t\t\tif (!Dom.hasClass(this.button.button, 'ui-btn-clock'))\n\t\t\t{\n\t\t\t\tBX.ajax.runAction('calendar.api.calendarajax.analytical', {\n\t\t\t\t\tanalyticsLabel: {\n\t\t\t\t\t\tsync_button_click: 'Y',\n\t\t\t\t\t\thas_active_connection: this.status === 'not_connected' ? 'N' : 'Y'\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.syncPanel = new exports.SyncPanel({\n\t\t\t\t\tconnectionsProviders: this.connectionsProviders,\n\t\t\t\t\tuserId: this.userId,\n\t\t\t\t\tstatus: this.status,\n\t\t\t\t});\n\t\t\t\tthis.syncPanel.openSlider();\n\t\t\t}\n\t\t});\n\t}\n\n\thandlerMouseEnter(button)\n\t{\n\t\tclearTimeout(this.buttonEnterTimeout);\n\t\tthis.buttonEnterTimeout = setTimeout(() =>\n\t\t\t{\n\t\t\t\tthis.buttonEnterTimeout = null;\n\t\t\t\tif (!Dom.hasClass(button.button, 'ui-btn-clock'))\n\t\t\t\t{\n\t\t\t\t\tthis.showPopup(button);\n\t\t\t\t}\n\t\t\t}, 500\n\t\t);\n\t}\n\n\thandlerMouseLeave()\n\t{\n\t\tif (this.buttonEnterTimeout !== null)\n\t\t{\n\t\t\tclearTimeout(this.buttonEnterTimeout);\n\t\t\tthis.buttonEnterTimeout = null;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.buttonLeaveTimeout = setTimeout(() =>\n\t\t\t{\n\t\t\t\tthis.hidePopup();\n\t\t\t}, 500\n\t\t);\n\t}\n\n\tgetButtonData()\n\t{\n\t\tif (this.status === 'success')\n\t\t{\n\t\t\treturn {\n\t\t\t\ttext: Loc.getMessage('STATUS_BUTTON_SYNCHRONIZATION'),\n\t\t\t\tcolor: BX.UI.Button.Color.LIGHT_BORDER,\n\t\t\t\ticonClass: 'ui-btn-icon-success',\n\t\t\t};\n\t\t}\n\t\telse if (this.status === 'failed')\n\t\t{\n\t\t\treturn {\n\t\t\t\ttext: Loc.getMessage('STATUS_BUTTON_FAILED'),\n\t\t\t\tcolor: BX.UI.Button.Color.LIGHT_BORDER,\n\t\t\t\ticonClass: 'ui-btn-icon-fail',\n\t\t\t}\n\t\t}\n\t\telse if (this.status === 'synchronizing')\n\t\t{\n\t\t\treturn {\n\t\t\t\ttext: Loc.getMessage('STATUS_BUTTON_SYNCHRONIZATION'),\n\t\t\t\tcolor: BX.UI.Button.Color.LIGHT_BORDER,\n\t\t\t\ticonClass: 'ui-btn-clock',\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage('STATUS_BUTTON_SYNC_CALENDAR_NEW'),\n\t\t\tcolor: BX.UI.Button.Color.PRIMARY,\n\t\t}\n\t}\n\n\tgetSyncPanel()\n\t{\n\t\treturn this.syncPanel;\n\t}\n\t\n\tsetConnectionProviders(connectionsProviders)\n\t{\n\t\tthis.connectionsProviders = connectionsProviders;\n\t}\n}","// @flow\n'use strict';\n\nimport {Type} from \"main.core\";\n\nconst isConnectionItemProperty = Symbol.for('BX.Calendar.Sync.Manager.ConnectionItem.isConnectionItem');\n\nexport default class ConnectionItem\n{\n\tconstructor(options)\n\t{\n\t\tthis[isConnectionItemProperty] = true;\n\t\tthis.syncDate = Type.isDate(options.syncDate) ? options.syncDate : new Date();\n\t\tthis.connectionName = options.connectionName;\n\t\tthis.status = options.status;\n\t\tthis.connected = options.connected;\n\t\tthis.addParams = options.addParams;\n\t\tthis.type = options.type;\n\t\tthis.id = options.type;\n\t\tthis.userName = options.userName;\n\t}\n\n\tstatic createInstance(options)\n\t{\n\t\treturn new this(options);\n\t}\n\n\tstatic isConnectionItem(target: Object)\n\t{\n\t\treturn Type.isObject(target) && target[isConnectionItemProperty] === true;\n\t}\n\n\tgetSyncDate()\n\t{\n\t\treturn this.syncDate;\n\t}\n\n\tgetConnectionName()\n\t{\n\t\treturn this.connectionName;\n\t}\n\n\tgetSyncStatus()\n\t{\n\t\treturn this.status;\n\t}\n\n\tgetConnectStatus()\n\t{\n\t\treturn this.connected;\n\t}\n\n\tgetStatus()\n\t{\n\t\tif (this.connected)\n\t\t{\n\t\t\treturn this.status\n\t\t\t\t? \"success\"\n\t\t\t\t: \"failed\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn 'not_connected';\n\t\t}\n\t}\n\n\tgetClassLabel()\n\t{\n\t\treturn this.type;\n\t}\n\n\tgetSections()\n\t{\n\t\treturn this.addParams.sections;\n\t}\n\n\tgetId()\n\t{\n\t\treturn this.addParams.id;\n\t}\n\n\tgetConnectionAccountName()\n\t{\n\t\treturn this.userName;\n\t}\n\n\tgetType()\n\t{\n\t\treturn this.type;\n\t}\n\t\n\tsetId(id)\n\t{\n\t\tthis.addParams.id = id;\n\t}\n\t\n\tsetStatus(status)\n\t{\n\t\tthis.status = status;\n\t}\n\n\tsetUserName(userName)\n\t{\n\t\tthis.userName = userName;\n\t}\n\t\n\tsetConnected(connected)\n\t{\n\t\tthis.connected = connected;\n\t}\n\n\tsetSyncDate(syncDate)\n\t{\n\t\tthis.syncDate = syncDate;\n\t}\n}","// @flow\n'use strict';\n\nimport ConnectionItem from \"./connectionitem\";\nimport { Event, Reflection, Type } from 'main.core';\nimport {EventEmitter} from \"main.core.events\";\nimport { Util } from 'calendar.util';\n\nexport class ConnectionProvider extends EventEmitter\n{\n\tMENU_WIDTH = 200;\n\tMENU_PADDING = 7;\n\tMENU_INDEX = 3020;\n\tSLIDER_WIDTH = 606;\n\tSTATUS_SYNCHRONIZING = 'synchronizing';\n\tSTATUS_SUCCESS = 'success';\n\tSTATUS_FAILED = 'failed';\n\tSTATUS_PENDING = 'pending';\n\tSTATUS_NOT_CONNECTED = 'not_connected';\n\tERROR_CODE = 'error';\n\n\tSTATUS_LIST = [\n\t\tthis.STATUS_SYNCHRONIZING,\n\t\tthis.STATUS_SUCCESS,\n\t\tthis.STATUS_FAILED,\n\t\tthis.STATUS_PENDING,\n\t\tthis.STATUS_NOT_CONNECTED\n\t];\n\tWAITING_MODE_MAX_TIME = 360000; // 6 min\n\n\tconstructor(options)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Sync.Manager.ConnectionProvider');\n\n\t\tthis.status = options.status;\n\t\tthis.connected = options.connected;\n\t\tthis.userName = options.userName || '';\n\t\tthis.mainPanel = options.mainPanel === true;\n\t\tthis.pendingStatus = options.pendingStatus === true;\n\t\tthis.gridTitle = options.gridTitle;\n\t\tthis.gridColor = options.gridColor;\n\t\tthis.gridIcon = options.gridIcon;\n\t\tthis.type = options.type;\n\t\tthis.viewClassification = options.viewClassification;\n\t\tthis.templateClass = options.templateClass;\n\t\t// this.wizardClassName = options.wizardClass || null;\n\t\tthis.connections = [];\n\t\tthis.id = options.id || '';\n\t}\n\n\tstatic createInstance(options)\n\t{\n\t\treturn new this(options);\n\t}\n\n\tisActive()\n\t{\n\t\treturn this.connected;\n\t}\n\n\thasMenu()\n\t{\n\t\treturn false;\n\t}\n\n\tsetAdditionalParams(options)\n\t{\n\t\tthis.additionalParams = options;\n\t}\n\n\tsetSyncDate(offset)\n\t{\n\t\toffset = parseInt(offset);\n\t\tif (offset > 60)\n\t\t{\n\t\t\tthis.syncDate = new Date(new Date().getTime() - offset * 1000);\n\t\t}\n\t\telse if (!isNaN(offset))\n\t\t{\n\t\t\tthis.syncDate = new Date();\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.syncDate = null;\n\t\t}\n\n\t\tif (this.getConnection())\n\t\t{\n\t\t\tthis.getConnection().syncDate = this.syncDate;\n\t\t}\n\t}\n\n\tgetSyncDate()\n\t{\n\t\treturn this.syncDate;\n\t}\n\n\tsetSections(sections)\n\t{\n\t\tthis.sections = sections;\n\t}\n\n\tsetStatus(status)\n\t{\n\t\tif (this.STATUS_LIST.includes(status))\n\t\t{\n\t\t\tthis.status = status;\n\t\t\tif (!this.connected && (status === this.STATUS_SUCCESS || status === this.STATUS_FAILED))\n\t\t\t{\n\t\t\t\tthis.connected = true;\n\t\t\t}\n\t\t\telse if(this.connected && status === this.STATUS_NOT_CONNECTED)\n\t\t\t{\n\t\t\t\tthis.connected = false;\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tgetGridTitle()\n\t{\n\t\treturn this.gridTitle;\n\t}\n\n\tgetGridColor()\n\t{\n\t\treturn this.gridColor;\n\t}\n\n\tgetGridIcon()\n\t{\n\t\treturn this.gridIcon;\n\t}\n\t\n\tclearConnections()\n\t{\n\t\tthis.connections = [];\n\t}\n\n\tsetConnections()\n\t{\n\t\tthis.connections.push(ConnectionItem.createInstance({\n\t\t\tsyncDate: this.getSyncDate(),\n\t\t\tconnectionName: this.connectionName,\n\t\t\tstatus: this.status,\n\t\t\tconnected: this.connected,\n\t\t\tuserName: this.userName,\n\t\t\taddParams: {\n\t\t\t\tsections: this.sections,\n\t\t\t\tid: this.id || this.type,\n\t\t\t},\n\t\t\ttype: this.type,\n\t\t}));\n\t}\n\n\tsetInterfaceUnit(interfaceUnit): void\n\t{\n\t\tthis.interfaceUnit = interfaceUnit;\n\t}\n\n\tgetInterfaceUnit()\n\t{\n\t\treturn this.interfaceUnit;\n\t}\n\n\tgetConnections()\n\t{\n\t\treturn this.connections;\n\t}\n\n\tgetConnection()\n\t{\n\t\treturn this.connections[0];\n\t}\n\n\tgetType()\n\t{\n\t\treturn this.type;\n\t}\n\n\tgetViewClassification()\n\t{\n\t\treturn this.viewClassification;\n\t}\n\n\tgetConnectStatus()\n\t{\n\t\treturn this.connected;\n\t}\n\n\tgetSyncStatus()\n\t{\n\t\treturn this.status;\n\t}\n\n\tgetStatus()\n\t{\n\t\tif (this.getWizardSyncMode())\n\t\t{\n\t\t\treturn 'synchronizing';\n\t\t}\n\n\t\tif (this.connected)\n\t\t{\n\t\t\treturn this.status\n\t\t\t\t? \"success\"\n\t\t\t\t: \"failed\";\n\t\t}\n\t\telse if (this.pendingStatus)\n\t\t{\n\t\t\treturn 'pending';\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn 'not_connected';\n\t\t}\n\t}\n\n\tgetTemplateClass()\n\t{\n\t\treturn this.templateClass;\n\t}\n\n\topenSlider(options)\n\t{\n\t\tBX.SidePanel.Instance.open(options.sliderId, {\n\t\t\tcontentCallback(slider)\n\t\t\t{\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tresolve(options.content);\n\t\t\t\t});\n\t\t\t},\n\t\t\tdata: options.data || {},\n\t\t\tcacheable: options.cacheable,\n\t\t\twidth: this.SLIDER_WIDTH,\n\t\t\tallowChangeHistory: false,\n\t\t\tevents: {\n\t\t\t\tonLoad: event => {\n\t\t\t\t\tthis.itemSlider = event.getSlider();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tcloseSlider()\n\t{\n\t\tif (this.itemSlider)\n\t\t{\n\t\t\tthis.itemSlider.close();\n\t\t}\n\t}\n\n\topenInfoConnectionSlider()\n\t{\n\t\tconst content = this.getClassTemplateItem().createInstance(this).getInfoConnectionContent();\n\t\tthis.openSlider({\n\t\t\tsliderId: 'calendar:item-sync-connect-' + this.type,\n\t\t\tcontent: content,\n\t\t\tcacheable: false,\n\t\t\tdata: {\n\t\t\t\tprovider: this,\n\t\t\t},\n\t\t});\n\t}\n\n\topenActiveConnectionSlider(connection)\n\t{\n\t\tconst itemInterface = this.getClassTemplateItem().createInstance(this, connection);\n\t\tif (this.type === 'google')\n\t\t{\n\t\t\titemInterface.getSectionsForGoogle().then(() => {\n\t\t\t\tthis.openActiveConnectionSliderVendor(itemInterface, connection);\n\t\t\t})\n\t\t}\n\t\telse if (this.type === 'icloud')\n\t\t{\n\t\t\titemInterface.getSectionsForIcloud().then(() => {\n\t\t\t\tthis.openActiveConnectionSliderVendor(itemInterface, connection);\n\t\t\t});\n\t\t}\n\t\telse if (this.type === 'office365')\n\t\t{\n\t\t\titemInterface.getSectionsForOffice365().then(() => {\n\t\t\t\tthis.openActiveConnectionSliderVendor(itemInterface, connection);\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.openActiveConnectionSliderVendor(itemInterface, connection);\n\t\t}\n\t}\n\n\topenActiveConnectionSliderVendor(itemInterface, connection)\n\t{\n\t\tconst content = itemInterface.getActiveConnectionContent();\n\n\t\tthis.openSlider({\n\t\t\tsliderId: 'calendar:item-sync-' + connection.id,\n\t\t\tcontent: content,\n\t\t\tcacheable: false,\n\t\t\tdata: {\n\t\t\t\tprovider: this,\n\t\t\t\tconnection: connection,\n\t\t\t\titemInterface: itemInterface,\n\t\t\t},\n\t\t});\n\t}\n\n\tgetClassTemplateItem()\n\t{\n\t\tconst itemClass = Reflection.getClass(this.getTemplateClass());\n\t\tif (Type.isFunction(itemClass))\n\t\t{\n\t\t\treturn itemClass;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetConnectionById(id)\n\t{\n\t\tconst connections = this.getConnections();\n\t\tif (connections.length > 0)\n\t\t{\n\t\t\tconst result = connections.filter(connection => {\n\t\t\t\treturn connection.getId() == id;\n\t\t\t});\n\t\t\tif (result)\n\t\t\t{\n\t\t\t\treturn result[0];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetSyncPanelTitle()\n\t{\n\t\treturn this.gridTitle;\n\t}\n\n\tgetSyncPanelLogo()\n\t{\n\t\treturn '--' + this.type;\n\t}\n\n\tsetWizardSyncMode(value)\n\t{\n\t\tthis.wizardSyncMode = value;\n\t}\n\n\tgetWizardSyncMode()\n\t{\n\t\treturn this.wizardSyncMode;\n\t}\n\n\tsetWizardState(stateData)\n\t{\n\t\tconst wizard = this.getActiveWizard();\n\t\tif (wizard)\n\t\t{\n\t\t\tif (stateData.status === this.ERROR_CODE)\n\t\t\t{\n\t\t\t\twizard.setErrorState(stateData);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\twizard.handleUpdateState(stateData);\n\t\t\t}\n\t\t}\n\t}\n\n\tsetUserName(userName = '')\n\t{\n\t\tthis.userName = userName;\n\t\tif (this.getConnection())\n\t\t{\n\t\t\tthis.getConnection().setUserName(userName);\n\t\t}\n\t}\n\n\tsetActiveWizard(wizard)\n\t{\n\t\tthis.activeWizard = wizard;\n\t\twizard.subscribe('onConnectionCreated', this.handleCreatedConnection.bind(this));\n\t\twizard.subscribe('onClose', this.handleCloseWizard.bind(this));\n\t\twizard.subscribe('startWizardWaitingMode', this.startWaitingMode.bind(this));\n\t\twizard.subscribe('endWizardWaitingMode', this.endWaitingMode.bind(this));\n\t}\n\n\tgetActiveWizard()\n\t{\n\t\treturn this.activeWizard || null;\n\t}\n\n\tstartWaitingMode()\n\t{\n\t\tthis.emit('onStartWaitingMode');\n\t\tthis.waitingModeReserveTimeout = setTimeout(() => {\n\t\t\tif (this.getActiveWizard() && this.getActiveWizard().getSlider())\n\t\t\t{\n\t\t\t\tBX.reload();\n\t\t\t}\n\t\t\t}, this.WAITING_MODE_MAX_TIME\n\t\t);\n\t}\n\n\tendWaitingMode()\n\t{\n\t\tthis.emit('onEndWaitingMode');\n\t\tif (this.waitingModeReserveTimeout)\n\t\t{\n\t\t\tclearTimeout(this.waitingModeReserveTimeout);\n\t\t\tthis.waitingModeReserveTimeout = null;\n\t\t}\n\t}\n\n\thandleCreatedConnection()\n\t{\n\t\tthis.setStatus(this.STATUS_SUCCESS);\n\t\tthis.getInterfaceUnit().setSyncStatus(this.STATUS_SUCCESS);\n\n\t\tBX.ajax.runAction('calendar.api.syncajax.clearSuccessfulConnectionNotifier', {\n\t\t\tdata: {\n\t\t\t\taccountType: this.getType()\n\t\t\t}\n\t\t});\n\n\t\t// TODO: It's better to avoid using of calendarContext.\n\t\t// Replace it with eventEmitter events and check for unnecessary requests\n\t\tconst calendarContext = Util.getCalendarContext();\n\t\tif (calendarContext)\n\t\t{\n\t\t\tcalendarContext.syncInterface.refreshDebounce();\n\t\t}\n\t}\n\n\thandleCloseWizard()\n\t{\n\t\tconst wizard = this.getActiveWizard();\n\t\tthis.setWizardSyncMode(false);\n\t\tif (wizard && wizard.isSyncFinished())\n\t\t{\n\t\t\tthis.setStatus(this.STATUS_SUCCESS);\n\t\t\tthis.getInterfaceUnit().setSyncStatus(this.STATUS_SUCCESS);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.setStatus(this.STATUS_SYNCHRONIZING);\n\t\t\tthis.getInterfaceUnit().setSyncStatus(this.STATUS_SYNCHRONIZING);\n\n\t\t\tBX.SidePanel.Instance.getOpenSliders().forEach(slider =>\n\t\t\t{\n\t\t\t\tif (['calendar:sync-slider', 'calendar:section-slider']\n\t\t\t\t\t.includes(slider.getUrl()))\n\t\t\t\t{\n\t\t\t\t\tslider.close();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis.getInterfaceUnit().refreshButton();\n\n\t\tthis.emit('onEndWaitingMode');\n\n\t\tthis.emit('onCloseSyncWizard');\n\n\t\tif (wizard)\n\t\t{\n\t\t\twizard.unsubscribeAll();\n\t\t}\n\t}\n\t\n\trefresh(options)\n\t{\n\t\tthis.status = options.syncInfo.status || false;\n\t\tthis.connected = options.syncInfo.connected || false;\n\t\tthis.id = options.syncInfo.id || null;\n\t\t\n\t\tif (options.syncLink)\n\t\t{\n\t\t\tthis.syncLink = options.syncLink;\n\t\t}\n\n\t\tthis.setSyncDate(options.syncInfo.syncOffset);\n\t\tthis.setSections(options.sections);\n\t\tthis.clearConnections();\n\t\tthis.setConnections();\n\t}\n}\n","import {ConnectionProvider} from \"./connectionprovider\";\nimport { Event, Loc } from 'main.core';\n\nexport class GoogleProvider extends ConnectionProvider\n{\n\tconstructor(options)\n\t{\n\t\tsuper({\n\t\t\tid: options.syncInfo.id || null,\n\t\t\tstatus: options.syncInfo.status || false,\n\t\t\tconnected: options.syncInfo.connected || false,\n\t\t\tuserName: options.syncInfo.userName || '',\n\t\t\tgridTitle: Loc.getMessage('CALENDAR_TITLE_GOOGLE'),\n\t\t\tgridColor: '#387ced',\n\t\t\tgridIcon: '/bitrix/images/calendar/sync/google.svg',\n\t\t\ttype: 'google',\n\t\t\tinterfaceClassName: '',\n\t\t\tviewClassification: 'web',\n\t\t\ttemplateClass: 'BX.Calendar.Sync.Interface.GoogleTemplate',\n\t\t\tmainPanel: options.mainPanel,\n\t\t});\n\t\tthis.connectionName = Loc.getMessage('CALENDAR_TITLE_GOOGLE');\n\t\tthis.isSetSyncGoogleSettings = options.isSetSyncGoogleSettings;\n\t\tthis.syncLink = options.syncLink;\n\n\t\tthis.setSyncDate(options.syncInfo.syncOffset);\n\t\tthis.setSections(options.sections);\n\t\tthis.setConnections();\n\t}\n\n\tgetSyncLink()\n\t{\n\t\treturn this.syncLink;\n\t}\n\n\thasSetSyncGoogleSettings()\n\t{\n\t\treturn this.isSetSyncGoogleSettings;\n\t}\n\n\tsaveConnection()\n\t{\n\t\tBX.ajax.runAction('calendar.api.syncajax.createGoogleConnection', {\n\t\t\tdata: {}\n\t\t}).then(\n\t\t\tresponse => {\n\t\t\t\tif (response?.data?.status === this.ERROR_CODE)\n\t\t\t\t{\n\t\t\t\t\tthis.setStatus(this.STATUS_FAILED);\n\t\t\t\t\tthis.setWizardState(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstatus: this.ERROR_CODE,\n\t\t\t\t\t\t\tvendorName: this.type,\n\t\t\t\t\t\t\taccountName: response?.data?.googleApiStatus?.googleCalendarPrimaryId\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.setWizardState(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstage: 'connection_created',\n\t\t\t\t\t\t\tvendorName: this.type,\n\t\t\t\t\t\t\taccountName: response?.data?.googleApiStatus?.googleCalendarPrimaryId\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tthis.emit(\n\t\t\t\t\t'onSyncInfoUpdated',\n\t\t\t\t\tnew Event.BaseEvent({\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tsyncInfo: response.data.syncInfo\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t},\n\t\t\tresponse => {\n\t\t\t\tthis.setStatus(this.STATUS_FAILED);\n\t\t\t\tthis.setWizardState(\n\t\t\t\t\t{\n\t\t\t\t\t\tstatus: this.ERROR_CODE,\n\t\t\t\t\t\tvendorName: this.type\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t}\n}","import {ConnectionProvider} from \"./connectionprovider\";\nimport {Loc} from \"main.core\";\n\nexport class Office365Provider extends ConnectionProvider\n{\n\tconstructor(options)\n\t{\n\t\tsuper({\n\t\t\tid: options.syncInfo.id || null,\n\t\t\tstatus: options.syncInfo.status || false,\n\t\t\tconnected: options.syncInfo.connected || false,\n\t\t\tuserName: options.syncInfo.userName || options.syncInfo.connectionName || '',\n\t\t\tgridTitle: Loc.getMessage('CALENDAR_TITLE_OFFICE365'),\n\t\t\tgridColor: '#fc1d1d',\n\t\t\tgridIcon: '/bitrix/images/calendar/sync/office365.svg',\n\t\t\ttype: 'office365',\n\t\t\tinterfaceClassName: '',\n\t\t\tviewClassification: 'web',\n\t\t\ttemplateClass: 'BX.Calendar.Sync.Interface.Office365template',\n\t\t\tmainPanel: true,\n\t\t});\n\t\tthis.connectionName = Loc.getMessage('CALENDAR_TITLE_OFFICE365');\n\t\tthis.syncLink = options.syncLink || '';\n\t\tthis.isSetSyncOffice365Settings = options.isSetSyncOffice365Settings;\n\n\t\tthis.setSyncDate(options.syncInfo.syncOffset);\n\t\tthis.setSections(options.sections);\n\t\tthis.setConnections();\n\t}\n\n\tgetSyncLink()\n\t{\n\t\treturn this.syncLink;\n\t}\n\n\thasSetSyncOffice365Settings()\n\t{\n\t\treturn this.isSetSyncOffice365Settings;\n\t}\n\n\tremoveConnection(id)\n\t{\n\t\tBX.ajax.runAction('calendar.api.syncajax.deactivateConnection', {\n\t\t\tdata: {\n\t\t\t\tconnectionId: id\n\t\t\t}\n\t\t}).then(() => {\n\t\t\tBX.reload();\n\t\t});\n\t}\n}\n","import {ConnectionProvider} from \"./connectionprovider\";\nimport {Loc} from \"main.core\";\n\nexport class ICloudProvider extends ConnectionProvider\n{\n\tconstructor(options)\n\t{\n\t\tsuper({\n\t\t\tid: options.syncInfo.id || null,\n\t\t\tstatus: options.syncInfo.status || false,\n\t\t\tconnected: options.syncInfo.connected || false,\n\t\t\tuserName: options.syncInfo.userName || '',\n\t\t\tgridTitle: Loc.getMessage('CALENDAR_TITLE_ICLOUD'),\n\t\t\tgridColor: '#948f8f',\n\t\t\tgridIcon: '/bitrix/images/calendar/sync/icloud.svg',\n\t\t\ttype: 'icloud',\n\t\t\tinterfaceClassName: '',\n\t\t\tviewClassification: 'web',\n\t\t\ttemplateClass: 'BX.Calendar.Sync.Interface.IcloudTemplate',\n\t\t\tmainPanel: true,\n\t\t});\n\t\tthis.connectionName = Loc.getMessage('CALENDAR_TITLE_ICLOUD');\n\n\t\tthis.setSyncDate(options.syncInfo.syncOffset);\n\t\tthis.setSections(options.sections);\n\t\tthis.setConnections();\n\t}\n}","import {ConnectionProvider} from \"./connectionprovider\";\nimport {Loc} from \"main.core\";\n\nexport class AndroidProvider extends ConnectionProvider\n{\n\tconstructor(options)\n\t{\n\t\tsuper({\n\t\t\tstatus: options.syncInfo.status,\n\t\t\tconnected: options.syncInfo.connected,\n\t\t\tgridTitle: Loc.getMessage('CALENDAR_TITLE_ANDROID'),\n\t\t\tgridColor: '#9ece03',\n\t\t\tgridIcon: '/bitrix/images/calendar/sync/android.svg',\n\t\t\ttype: 'android',\n\t\t\tviewClassification: 'mobile',\n\t\t\ttemplateClass: 'BX.Calendar.Sync.Interface.AndroidTemplate',\n\t\t});\n\t\tthis.connectionName = Loc.getMessage('CALENDAR_TITLE_ANDROID');\n\n\t\tthis.setSyncDate(options.syncInfo.syncOffset);\n\t\tthis.setConnections();\n\t}\n}","import {ConnectionProvider} from \"./connectionprovider\";\nimport {Loc} from \"main.core\";\nimport ConnectionItem from \"./connectionitem\";\n\nexport class CaldavConnection extends ConnectionProvider\n{\n\tconstructor(options)\n\t{\n\t\tsuper(options);\n\t}\n\n\tstatic calculateStatus(connections)\n\t{\n\t\tif (connections.length === 0)\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (let key in connections)\n\t\t{\n\t\t\tif (this.isFailedConnections(connections[key]))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tstatic isFailedConnections(connection)\n\t{\n\t\tif (connection.syncInfo.connected === true\n\t\t\t&& connection.syncInfo.status === false)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\thasMenu()\n\t{\n\t\treturn this.connected;\n\t}\n\n\tshowMenu(bindElement)\n\t{\n\t\tif (this.menu)\n\t\t{\n\t\t\tthis.menu.destroy();\n\t\t}\n\n\t\tconst menuItems = this.getMenuItems();\n\t\tmenuItems.push(...this.getMenuItemConnect());\n\t\tthis.menu = this.getMenu(bindElement, menuItems);\n\t\tthis.addMenuHandler();\n\t\tthis.menu.show();\n\t}\n\n\taddMenuHandler()\n\t{\n\t\tif (this.menu)\n\t\t{\n\t\t\tthis.menu.getMenuContainer().addEventListener('click', () =>\n\t\t\t{\n\t\t\t\tthis.menu.close();\n\t\t\t});\n\t\t}\n\t}\n\n\tgetMenuItems()\n\t{\n\t\tconst menuItems = [];\n\t\tthis.connections.forEach(item =>\n\t\t{\n\t\t\titem.type = this.type;\n\t\t\titem.id = item.addParams.id;\n\t\t\titem.text = item.connectionName;\n\t\t\titem.onclick = () =>\n\t\t\t{\n\t\t\t\tthis.openActiveConnectionSlider(item);\n\t\t\t};\n\t\t\tmenuItems.push(item);\n\t\t});\n\n\t\treturn menuItems;\n\t}\n\n\tgetMenuItemConnect()\n\t{\n\t\treturn [\n\t\t\t{delimiter: true},\n\t\t\t{\n\t\t\t\tid: 'connect',\n\t\t\t\ttext: Loc.getMessage('ADD_MENU_CONNECTION'),\n\t\t\t\tonclick: () => {\n\t\t\t\t\tthis.openInfoConnectionSlider();\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\tgetMenu(bindElement, menuItems)\n\t{\n\t\treturn new (window.top.BX || window.BX).Main.Menu({\n\t\t\tclassName: 'calendar-sync-popup-status',\n\t\t\tbindElement: bindElement,\n\t\t\titems: menuItems,\n\t\t\twidth: this.MENU_WIDTH,\n\t\t\tpadding: this.MENU_PADDING,\n\t\t\tzIndexAbsolute: this.MENU_INDEX,\n\t\t\tautoHide: true,\n\t\t\tcloseByEsc: true,\n\t\t\tid: this.getType() + '-menu',\n\t\t\toffsetLeft: -40,\n\t\t});\n\t}\n\n\tsetConnections()\n\t{\n\t\tif (this.connectionsSyncInfo.length > 0)\n\t\t{\n\t\t\tthis.connectionsSyncInfo.forEach(connection => {\n\t\t\t\tthis.connections.push(ConnectionItem.createInstance({\n\t\t\t\t\tconnectionName: connection.syncInfo.connectionName,\n\t\t\t\t\tstatus: connection.syncInfo.status,\n\t\t\t\t\tconnected: connection.syncInfo.connected,\n\t\t\t\t\taddParams: {\n\t\t\t\t\t\tsections: connection.sections,\n\t\t\t\t\t\tid: connection.syncInfo.id,\n\t\t\t\t\t\tuserName: connection.syncInfo.userName,\n\t\t\t\t\t\tserver: connection.syncInfo.server,\n\t\t\t\t\t},\n\t\t\t\t\ttype: this.type,\n\t\t\t\t}));\n\t\t\t});\n\t\t}\n\t}\n}","import {CaldavConnection} from \"./caldavconnection\";\nimport {Loc} from \"main.core\";\n\nexport class CaldavProvider extends CaldavConnection\n{\n\tconstructor(options)\n\t{\n\t\tsuper({\n\t\t\tstatus: options.status,\n\t\t\tconnected: options.connected,\n\t\t\tgridTitle: Loc.getMessage('CALENDAR_TITLE_CALDAV'),\n\t\t\tgridColor: '#1eae43',\n\t\t\tgridIcon: '/bitrix/images/calendar/sync/caldav.svg',\n\t\t\ttype: 'caldav',\n\t\t\tviewClassification: 'web',\n\t\t\ttemplateClass: 'BX.Calendar.Sync.Interface.CaldavTemplate',\n\t\t});\n\n\t\tthis.connectionsSyncInfo = options.connections;\n\n\t\tif (options.connections && options.connections[0] && options.connections[0].syncInfo)\n\t\t{\n\t\t\tthis.setSyncDate(options.connections[0].syncInfo.syncOffset);\n\t\t}\n\t\tthis.setConnections();\n\t}\n}","import {ConnectionProvider} from \"./connectionprovider\";\nimport {Loc} from \"main.core\";\n\nexport class ExchangeProvider extends ConnectionProvider\n{\n\tconstructor(options)\n\t{\n\t\tsuper({\n\t\t\tstatus: options.syncInfo.status || false,\n\t\t\tconnected: options.syncInfo.connected || false,\n\t\t\tgridTitle: Loc.getMessage('CALENDAR_TITLE_EXCHANGE'),\n\t\t\tgridColor: '#54d0df',\n\t\t\tgridIcon: '/bitrix/images/calendar/sync/exchange.svg',\n\t\t\ttype: 'exchange',\n\t\t\tviewClassification: 'web',\n\t\t\ttemplateClass: 'BX.Calendar.Sync.Interface.ExchangeTemplate',\n\t\t});\n\t\tthis.connectionName = Loc.getMessage('CALENDAR_TITLE_EXCHANGE');\n\n\t\tthis.setSyncDate(options.syncInfo.syncOffset);\n\t\tthis.setSections(options.sections);\n\t\tthis.setConnections();\n\t}\n\n}","import {ConnectionProvider} from \"./connectionprovider\";\nimport {Loc} from \"main.core\";\n\nexport class IphoneProvider extends ConnectionProvider\n{\n\tconstructor(options)\n\t{\n\t\tsuper({\n\t\t\tstatus: options.syncInfo.status,\n\t\t\tconnected: options.syncInfo.connected,\n\t\t\tgridTitle: Loc.getMessage('CALENDAR_TITLE_IPHONE'),\n\t\t\tgridColor: '#2fc6f6',\n\t\t\tgridIcon: '/bitrix/images/calendar/sync/iphone.svg',\n\t\t\ttype: 'iphone',\n\t\t\tviewClassification: 'mobile',\n\t\t\ttemplateClass: 'BX.Calendar.Sync.Interface.IphoneTemplate',\n\t\t});\n\t\tthis.connectionName = Loc.getMessage('CALENDAR_TITLE_IPHONE');\n\n\t\tthis.setSyncDate(options.syncInfo.syncOffset);\n\t\tthis.setConnections();\n\t}\n}","import {ConnectionProvider} from \"./connectionprovider\";\nimport {Loc} from \"main.core\";\n\nexport class MacProvider extends ConnectionProvider\n{\n\tconstructor(options)\n\t{\n\t\tsuper({\n\t\t\tstatus: options.syncInfo.status,\n\t\t\tconnected: options.syncInfo.connected,\n\t\t\tgridTitle: Loc.getMessage('CALENDAR_TITLE_MAC'),\n\t\t\tgridColor: '#ff5752',\n\t\t\tgridIcon: '/bitrix/images/calendar/sync/mac.svg',\n\t\t\ttype: 'mac',\n\t\t\tviewClassification: 'web',\n\t\t\ttemplateClass: 'BX.Calendar.Sync.Interface.MacTemplate',\n\t\t});\n\t\tthis.portalAddress = options.portalAddress;\n\t\tthis.connectionName = Loc.getMessage('CALENDAR_TITLE_MAC');\n\n\t\tthis.setSyncDate(options.syncInfo.syncOffset);\n\t\tthis.setConnections();\n\t}\n\n\tgetPortalAddress()\n\t{\n\t\treturn this.portalAddress;\n\t}\n}","// @flow\n'use strict';\n\nimport {ConnectionProvider} from \"./connectionprovider\";\nimport {Loc} from \"main.core\";\n\nexport class OutlookProvider extends ConnectionProvider\n{\n\tconstructor(options)\n\t{\n\t\tsuper({\n\t\t\tstatus: options.syncInfo.status,\n\t\t\tconnected: options.syncInfo.connected,\n\t\t\tgridTitle: Loc.getMessage('CALENDAR_TITLE_OUTLOOK'),\n\t\t\tgridColor: '#ffa900',\n\t\t\tgridIcon: '/bitrix/images/calendar/sync/outlook.svg',\n\t\t\ttype: 'outlook',\n\t\t\tviewClassification: 'web',\n\t\t\ttemplateClass: 'BX.Calendar.Sync.Interface.OutlookTemplate',\n\t\t});\n\t\tthis.setSyncDate(options.syncInfo.syncOffset);\n\t\tthis.connectionName = Loc.getMessage('CALENDAR_TITLE_OUTLOOK');\n\n\t\tthis.sections = options.sections;\n\t\tthis.infoBySections = options.infoBySections;\n\n\t\tthis.setConnections();\n\t}\n\n\thasMenu()\n\t{\n\t\treturn this.sections.length > 0;\n\t}\n\n\tshowMenu(bindElement)\n\t{\n\t\tif (this.hasMenu())\n\t\t{\n\t\t\tif (this.menu)\n\t\t\t{\n\t\t\t\tthis.menu.destroy();\n\t\t\t}\n\t\t\tconst menuItems = this.getConnection().getSections();\n\n\t\t\tmenuItems.forEach(item =>\n\t\t\t{\n\t\t\t\tif (this.infoBySections[item.id])\n\t\t\t\t{\n\t\t\t\t\titem.className = 'calendar-sync-outlook-popup-item';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\titem.onclick = () =>\n\t\t\t\t{\n\t\t\t\t\tthis.connectToOutlook(item);\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tthis.menu = new (window.top.BX || window.BX).Main.Menu({\n\t\t\t\tclassName: 'calendar-sync-popup-status',\n\t\t\t\tbindElement: bindElement,\n\t\t\t\titems: menuItems,\n\t\t\t\tpadding: 7,\n\t\t\t\tautoHide: true,\n\t\t\t\tcloseByEsc: true,\n\t\t\t\tzIndexAbsolute: 3020,\n\t\t\t\tid: this.getType() + '-menu',\n\t\t\t\toffsetLeft: -40,\n\t\t\t});\n\n\t\t\tthis.menu.getMenuContainer().addEventListener('click', () =>\n\t\t\t{\n\t\t\t\tthis.menu.close();\n\t\t\t});\n\n\t\t\tthis.menu.show();\n\t\t}\n\t}\n\t\n\tconnectToOutlook(section)\n\t{\n\t\tif (section.id)\n\t\t{\n\t\t\tBX.ajax.runAction('calendar.api.syncajax.getOutlookLink', {\n\t\t\t\tdata: {\n\t\t\t\t\tid: section.id\n\t\t\t\t}\n\t\t\t})\n\t\t\t\t.then(\n\t\t\t\t\t(response) => {\n\t\t\t\t\t\tconst url = response.data.result;\n\t\t\t\t\t\teval(url);\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t}\n\t}\n}","import {CaldavConnection} from \"./caldavconnection\";\nimport {Loc} from \"main.core\";\n\nexport class YandexProvider extends CaldavConnection\n{\n\tconstructor(options)\n\t{\n\t\tsuper({\n\t\t\tstatus: options.status,\n\t\t\tconnected: options.connected,\n\t\t\tgridTitle: Loc.getMessage('CALENDAR_TITLE_YANDEX'),\n\t\t\tgridColor: '#f9c500',\n\t\t\tgridIcon: '/bitrix/images/calendar/sync/yandex.svg',\n\t\t\ttype: 'yandex',\n\t\t\tviewClassification: 'web',\n\t\t\ttemplateClass: 'BX.Calendar.Sync.Interface.YandexTemplate',\n\t\t});\n\n\t\tthis.connectionName = Loc.getMessage('CALENDAR_TITLE_YANDEX');\n\t\tthis.connectionsSyncInfo = options.connections;\n\n\t\tif (options.connections && options.connections[0] && options.connections[0].syncInfo)\n\t\t{\n\t\t\tthis.setSyncDate(options.connections[0].syncInfo.syncOffset);\n\t\t}\n\t\tthis.setConnections();\n\t}\n}","// @flow\n\nimport SyncButton from './controls/syncbutton';\nimport {EventEmitter} from \"main.core.events\";\nimport {GoogleProvider} from \"./connectionproviders/googleprovider\";\nimport {Office365Provider} from \"./connectionproviders/office365provider\";\nimport {ICloudProvider} from \"./connectionproviders/icloudprovider\";\nimport {AndroidProvider} from \"./connectionproviders/androidprovider\";\nimport {CaldavConnection} from \"./connectionproviders/caldavconnection\";\nimport {CaldavProvider} from \"./connectionproviders/caldavprovider\";\nimport {ExchangeProvider} from \"./connectionproviders/exchangeprovider\";\nimport {IphoneProvider} from \"./connectionproviders/iphoneprovider\";\nimport {MacProvider} from \"./connectionproviders/macprovider\";\nimport {OutlookProvider} from \"./connectionproviders/outlookprovider\";\nimport {YandexProvider} from \"./connectionproviders/yandexprovider\";\nimport SyncStatusPopup from \"./controls/syncstatuspopup\";\nimport {Util} from \"calendar.util\";\nimport { Runtime } from 'main.core';\n\ntype ManagerOptions = {\n\twrapper: string,\n\tsyncInfo: Array,\n\tuserId: number,\n\tsyncLinks: Array,\n\tsection: Array,\n\tportalAddress: string,\n\tisRuZone: boolean,\n\tcalendarInstance: window.BXEventCalendar.Core,\n\tisSetSyncGoogleSettings: boolean,\n\tisSetSyncOffice365Settings: boolean\n};\n\nexport default class Manager extends EventEmitter\n{\n\tstatus = 'not_connected';\n\tSTATUS_SUCCESS = 'success';\n\tSTATUS_FAILED = 'failed';\n\tSTATUS_NOT_CONNECTED = 'not_connected';\n\tWIZARD_SYNC_MODE = 'wizard_sync_mode';\n\tSTATUS_SYNCHRONIZING = 'synchronizing';\n\tWAITING_MODE_PERIODIC_TIMEOUT = 5000;\n\tREFRESH_DELAY = 300;\n\tREFRESH_CONTENT_DELAY = 300;\n\tWIZARD_SLIDER_PREFIX = 'calendar:sync-wizard';\n\t\n\tconstructor(options)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.Calendar.Sync.Manager.Manager');\n\t\t\n\t\tthis.wrapper = options.wrapper;\n\t\tthis.setSyncInfo(options.syncInfo);\n\t\tthis.userId = options.userId;\n\t\tthis.syncLinks = options.syncLinks;\n\t\tthis.sections = options.sections;\n\t\tthis.portalAddress = options.portalAddress;\n\t\tthis.isRuZone = options.isRuZone;\n\t\tthis.calendarInstance = options.calendar;\n\t\tthis.isSetSyncGoogleSettings = options.isSetSyncGoogleSettings;\n\t\tthis.isSetSyncOffice365Settings = options.isSetSyncOffice365Settings;\n\t\tthis.refreshDebounce = Runtime.debounce(this.refresh, this.REFRESH_DELAY, this);\n\t\tthis.refreshContentDebounce = Runtime.debounce(this.refreshContent, this.REFRESH_CONTENT_DELAY, this);\n\t\t\n\t\tthis.init();\n\t\tthis.subscribeOnEvent();\n\t}\n\t\n\tsubscribeOnEvent()\n\t{\n\t\tEventEmitter.subscribe('BX.Calendar.Sync.Interface.SyncStatusPopup:onRefresh', event => {\n\t\t\tthis.refreshDebounce(event);\n\t\t});\n\t\t\n\t\tEventEmitter.subscribe('BX.Calendar.Sync.Interface.InterfaceTemplate:reDrawCalendarGrid', event => {\n\t\t\tthis.reDrawCalendarGrid();\n\t\t});\n\t\t\n\t\twindow.addEventListener('message', (event) => {\n\t\t\tif (event.data.title === 'googleOAuthSuccess')\n\t\t\t{\n\t\t\t\twindow.location.reload()\n\t\t\t}\n\t\t});\n\t}\n\t\n\tshowSyncButton()\n\t{\n\t\tthis.syncButton = new SyncButton({\n\t\t\tstatus: this.status,\n\t\t\twrapper: this.wrapper,\n\t\t\tconnectionsProviders: this.connectionsProviders,\n\t\t\tuserId: this.userId,\n\t\t});\n\t\tthis.syncButton.show();\n\t}\n\t\n\tinit()\n\t{\n\t\tthis.connectionsProviders = {};\n\t\tconst yandexConnections = [];\n\t\tconst caldavConnections = [];\n\t\t\n\t\tconst syncInfo = this.syncInfo;\n\t\tthis.sectionsByType = this.sortSections();\n\t\t\n\t\tfor (let key in syncInfo)\n\t\t{\n\t\t\tif (syncInfo.hasOwnProperty(key))\n\t\t\t{\n\t\t\t\tswitch (syncInfo[key].type)\n\t\t\t\t{\n\t\t\t\t\tcase 'yandex':\n\t\t\t\t\t\tyandexConnections.push({\n\t\t\t\t\t\t\tsyncInfo: syncInfo[key],\n\t\t\t\t\t\t\tsections: this.sectionsByType.caldav['caldav' + syncInfo[key].id],\n\t\t\t\t\t\t\tisRuZone: this.isRuZone,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'caldav':\n\t\t\t\t\t\tcaldavConnections.push({\n\t\t\t\t\t\t\tsyncInfo: syncInfo[key],\n\t\t\t\t\t\t\tsections: this.sectionsByType.caldav['caldav' + syncInfo[key].id],\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.connectionsProviders = {\n\t\t\tgoogle: this.getGoogleProvider(),\n\t\t\toffice365: this.getOffice365Provider(),\n\t\t\ticloud: this.getIcloudProvider(),\n\t\t\tcaldav: this.getCaldavProvider(caldavConnections),\n\t\t\tiphone: this.getIphoneProvider(),\n\t\t\tandroid: this.getAndroidProvider(),\n\t\t\tmac: this.getMacProvider(),\n\t\t};\n\t\t\n\t\tif (this.isRuZone)\n\t\t{\n\t\t\tthis.connectionsProviders.yandex = this.getYandexProvider(yandexConnections);\n\t\t}\n\t\t\n\t\tif (!BX.browser.IsMac())\n\t\t{\n\t\t\tthis.connectionsProviders.outlook = this.getOutlookProvider();\n\t\t}\n\t\t\n\t\tif (syncInfo.hasOwnProperty('exchange'))\n\t\t{\n\t\t\tthis.connectionsProviders.exchange = this.getExchangeProvider();\n\t\t}\n\t\t\n\t\tthis.status = this.getSummarySyncStatus();\n\t\tthis.subscribeEventHandlers();\n\t}\n\t\n\tsetSyncMode(value)\n\t{\n\t\tthis.syncMode = value;\n\t}\n\t\n\tgetSyncMode()\n\t{\n\t\treturn this.syncMode;\n\t}\n\t\n\tisWizardSyncMode()\n\t{\n\t\tfor (let providerName in this.connectionsProviders)\n\t\t{\n\t\t\tif (this.connectionsProviders.hasOwnProperty(providerName)\n\t\t\t\t&& this.connectionsProviders[providerName].getWizardSyncMode())\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\t\n\tisSyncInProcess()\n\t{\n\t\tfor (let providerName in this.connectionsProviders)\n\t\t{\n\t\t\tif (\n\t\t\t\tthis.connectionsProviders.hasOwnProperty(providerName)\n\t\t\t\t&& this.connectionsProviders[providerName].getSyncStatus() === this.STATUS_SYNCHRONIZING\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\t\n\tsortSections()\n\t{\n\t\tconst sections = this.sections;\n\t\tconst exchangeSections = [];\n\t\tconst googleSections = [];\n\t\tconst icloudSections = [];\n\t\tconst sectionsByType = {};\n\t\tconst outlookSections = [];\n\t\tconst office365Sections = [];\n\t\tsectionsByType.caldav = {};\n\t\t\n\t\tsections.forEach(section => {\n\t\t\tif (\n\t\t\t\tsection.belongsToView()\n\t\t\t\t&& section.data.OUTLOOK_JS\n\t\t\t\t&& section.data['EXTERNAL_TYPE'] === 'local'\n\t\t\t)\n\t\t\t{\n\t\t\t\toutlookSections.push({\n\t\t\t\t\tid: section.id,\n\t\t\t\t\tconnectURL: section.data.OUTLOOK_JS,\n\t\t\t\t\ttext: section.name,\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (section.data['IS_EXCHANGE'] === true)\n\t\t\t{\n\t\t\t\texchangeSections.push(section.data);\n\t\t\t}\n\t\t\telse if (\n\t\t\t\tsection.data['GAPI_CALENDAR_ID']\n\t\t\t\t&& section.data['CAL_DAV_CON']\n\t\t\t\t&& section.data['EXTERNAL_TYPE'] !== 'local'\n\t\t\t)\n\t\t\t{\n\t\t\t\tgoogleSections.push(section.data);\n\t\t\t}\n\t\t\telse if (section.data['EXTERNAL_TYPE'] === 'icloud')\n\t\t\t{\n\t\t\t\ticloudSections.push(section.data);\n\t\t\t}\n\t\t\telse if (section.data['EXTERNAL_TYPE'] === 'office365')\n\t\t\t{\n\t\t\t\toffice365Sections.push(section.data);\n\t\t\t}\n\t\t\telse if (section.data['CAL_DAV_CON'] && section.data['CAL_DAV_CAL'])\n\t\t\t{\n\t\t\t\tsectionsByType.caldav['caldav' + section.data['CAL_DAV_CON']] = section.data;\n\t\t\t}\n\t\t});\n\t\t\n\t\tsectionsByType.google = googleSections;\n\t\tsectionsByType.icloud = icloudSections;\n\t\tsectionsByType.office365 = office365Sections;\n\t\tsectionsByType.exchange = exchangeSections;\n\t\tsectionsByType.outlook = outlookSections;\n\t\t\n\t\treturn sectionsByType;\n\t}\n\t\n\trefresh(event)\n\t{\n\t\treturn new Promise((resolve) => {\n\t\t\tBX.ajax.runAction('calendar.api.syncajax.updateConnection', {\n\t\t\t\tdata: {\n\t\t\t\t\ttype: 'user',\n\t\t\t\t\trequestUid: Util.registerRequestId(),\n\t\t\t\t}\n\t\t\t}).then((response) => {\n\t\t\t\tthis.setSyncInfo(response.data);\n\t\t\t\tthis.status = this.getSummarySyncStatus();\n\t\t\t\tconst activePopup = (event && event.getTarget) ? event.getTarget() : null;\n\t\t\t\tthis.refreshContent(activePopup);\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\t}\n\t\n\trefreshContent(activePopup = {})\n\t{\n\t\tthis.init();\n\t\t\n\t\tthis.refreshCalendarGrid();\n\t\t\n\t\tif (this.syncButton)\n\t\t{\n\t\t\tthis.syncButton.refresh(this.status);\n\t\t\tthis.syncButton.setConnectionProviders(this.connectionsProviders);\n\t\t}\n\t\t\n\t\tif (activePopup)\n\t\t{\n\t\t\tthis.refreshActivePopup(activePopup);\n\t\t\tthis.refreshOpenSliders(activePopup);\n\t\t}\n\t}\n\t\n\trefreshCalendarGrid()\n\t{\n\t\tthis.calendarInstance.reload();\n\t}\n\t\n\trefreshActivePopup(activePopup)\n\t{\n\t\tif (activePopup instanceof SyncStatusPopup && activePopup.getId() === 'calendar-syncPanel-status')\n\t\t{\n\t\t\tactivePopup.refresh(this.getConnections());\n\t\t}\n\t\telse if (this.syncButton.popup instanceof SyncStatusPopup && this.syncButton.popup.getId() === 'calendar-sync-button-status')\n\t\t{\n\t\t\tthis.syncButton.popup.refresh(this.getConnections());\n\t\t}\n\t}\n\t\n\trefreshOpenSliders(activePopup = {})\n\t{\n\t\tconst openSliders = BX.SidePanel.Instance.getOpenSliders();\n\t\tif (openSliders.length > 0)\n\t\t{\n\t\t\topenSliders.forEach(slider => {\n\t\t\t\tif (slider.getUrl() === 'calendar:auxiliary-sync-slider')\n\t\t\t\t{\n\t\t\t\t\tthis.refreshMainSlider(this.syncButton.getSyncPanel());\n\t\t\t\t}\n\t\t\t\telse if (slider.getUrl().indexOf('calendar:item-sync-') !== -1)\n\t\t\t\t{\n\t\t\t\t\tthis.refreshConnectionSlider(slider, activePopup);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t\n\trefreshConnectionSlider(slider, activePopup)\n\t{\n\t\tlet updatedConnection = undefined;\n\t\tconst itemInterface = slider.getData().get('itemInterface');\n\t\tconst connection = slider.getData().get('connection');\n\t\tif (connection)\n\t\t{\n\t\t\tupdatedConnection = this.connectionsProviders[connection.getType()].getConnectionById(connection.getId());\n\t\t}\n\t\t\n\t\tif (activePopup instanceof SyncStatusPopup && updatedConnection)\n\t\t{\n\t\t\tactivePopup.refresh([updatedConnection]);\n\t\t}\n\t\t\n\t\tif (itemInterface && updatedConnection)\n\t\t{\n\t\t\titemInterface.refresh(updatedConnection);\n\t\t}\n\t\t\n\t\tslider.reload();\n\t}\n\t\n\trefreshMainSlider(syncPanel)\n\t{\n\t\tsyncPanel.refresh(this.status, this.connectionsProviders);\n\t}\n\t\n\tgetConnections()\n\t{\n\t\tconst connections = [];\n\t\tconst items = Object.values(this.connectionsProviders);\n\t\t\n\t\titems.forEach(item => {\n\t\t\tconst itemConnections = item.getConnections();\n\t\t\tif (itemConnections.length > 0)\n\t\t\t{\n\t\t\t\titemConnections.forEach(connection => {\n\t\t\t\t\t\tif (connection.getConnectStatus() === true)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconnections.push(connection);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t});\n\t\t\n\t\treturn connections;\n\t}\n\t\n\treDrawCalendarGrid()\n\t{\n\t\tthis.calendarInstance.reloadDebounce();\n\t}\n\t\n\tupdateSyncStatus(params)\n\t{\n\t\tfor (let connectionName in params.syncInfo)\n\t\t{\n\t\t\tif (\n\t\t\t\tparams.syncInfo.hasOwnProperty(connectionName)\n\t\t\t\t&& this.syncInfo[connectionName]\n\t\t\t)\n\t\t\t{\n\t\t\t\tthis.syncInfo[connectionName] = {\n\t\t\t\t\t...this.syncInfo[connectionName],\n\t\t\t\t\t...params.syncInfo[connectionName]\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.status = this.STATUS_SUCCESS;\n\t\tthis.refreshContentDebounce();\n\t}\n\t\n\taddSyncConnection(params)\n\t{\n\t\tfor (const connectionName in params.syncInfo)\n\t\t{\n\t\t\tif (['yandex', 'caldav'].includes(params.syncInfo[connectionName].type))\n\t\t\t{\n\t\t\t\tBX.reload();\n\t\t\t}\n\t\t\t\n\t\t\tif (BX.Calendar.Util.checkRequestId(params.requestUid))\n\t\t\t{\n\t\t\t\tif (this.syncInfo[connectionName])\n\t\t\t\t{\n\t\t\t\t\tthis.syncInfo[connectionName] = {\n\t\t\t\t\t\t...this.syncInfo[connectionName],\n\t\t\t\t\t\t...params.syncInfo[connectionName]\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tthis.status = this.STATUS_SUCCESS;\n\t\tthis.refreshContentDebounce();\n\t}\n\t\n\tdeleteSyncConnection(params)\n\t{\n\t\tif (!BX.Calendar.Util.checkRequestId(params.requestUid))\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (params.connectionId)\n\t\t{\n\t\t\tfor (const connectionName in this.syncInfo)\n\t\t\t{\n\t\t\t\tif (this.syncInfo.hasOwnProperty(connectionName)\n\t\t\t\t\t&& this.syncInfo[connectionName]\n\t\t\t\t\t&& parseInt(this.syncInfo[connectionName].id) === parseInt(params.connectionId))\n\t\t\t\t{\n\t\t\t\t\tdelete this.syncInfo[connectionName];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (params.syncInfo)\n\t\t{\n\t\t\tfor (const connectionName in params.syncInfo)\n\t\t\t{\n\t\t\t\tif (this.syncInfo[connectionName])\n\t\t\t\t{\n\t\t\t\t\tdelete this.syncInfo[connectionName];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (this.status !== this.STATUS_NOT_CONNECTED)\n\t\t{\n\t\t\tthis.status = this.STATUS_SUCCESS;\n\t\t}\n\t\tthis.refreshDebounce();\n\t}\n\t\n\tgetProviderById(id): Array\n\t{\n\t\tlet connection;\n\t\tfor (let providerName in this.connectionsProviders)\n\t\t{\n\t\t\tif (\n\t\t\t\tthis.connectionsProviders.hasOwnProperty(providerName)\n\t\t\t\t&& this.connectionsProviders[providerName].connected\n\t\t\t\t&& ['google', 'caldav', 'yandex', 'icloud', 'office365'].includes(providerName)\n\t\t\t)\n\t\t\t{\n\t\t\t\tconnection = this.connectionsProviders[providerName].getConnectionById(id);\n\t\t\t\tif (connection)\n\t\t\t\t{\n\t\t\t\t\treturn [this.connectionsProviders[providerName], connection];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn [undefined, undefined];\n\t}\n\t\n\tprocessSyncConnection(params)\n\t{\n\t\tfor (let providerName in this.connectionsProviders)\n\t\t{\n\t\t\tif (\n\t\t\t\tthis.connectionsProviders.hasOwnProperty(providerName)\n\t\t\t\t&& this.connectionsProviders[providerName].getWizardSyncMode()\n\t\t\t\t&& providerName === params?.vendorName\n\t\t\t)\n\t\t\t{\n\t\t\t\tif (params.accountName)\n\t\t\t\t{\n\t\t\t\t\tthis.connectionsProviders[providerName].setUserName(params.accountName);\n\t\t\t\t}\n\t\t\t\tthis.connectionsProviders[providerName].setWizardState(params);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t\n\thandlePullEvent(params)\n\t{\n\t\tlet wizardSyncMode = this.isWizardSyncMode();\n\t\tswitch (params.command)\n\t\t{\n\t\t\tcase 'refresh_sync_status':\n\t\t\t\tif (!wizardSyncMode)\n\t\t\t\t{\n\t\t\t\t\tthis.updateSyncStatus(params);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'add_sync_connection':\n\t\t\t\tif (!wizardSyncMode)\n\t\t\t\t{\n\t\t\t\t\tthis.addSyncConnection(params);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'delete_sync_connection':\n\t\t\t\tif (!wizardSyncMode)\n\t\t\t\t{\n\t\t\t\t\tthis.deleteSyncConnection(params);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'process_sync_connection':\n\t\t\t\tif (wizardSyncMode)\n\t\t\t\t{\n\t\t\t\t\tthis.processSyncConnection(params);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t\n\tsetSyncInfo(syncInfo)\n\t{\n\t\tthis.syncInfo = syncInfo;\n\t}\n\t\n\tsubscribeEventHandlers()\n\t{\n\t\tfor (let providerName in this.connectionsProviders)\n\t\t{\n\t\t\tif (this.connectionsProviders.hasOwnProperty(providerName))\n\t\t\t{\n\t\t\t\tthis.connectionsProviders[providerName].unsubscribeAll('onStartWaitingMode');\n\t\t\t\tthis.connectionsProviders[providerName].unsubscribeAll('onEndWaitingMode');\n\t\t\t\tthis.connectionsProviders[providerName].unsubscribeAll('onCloseSyncWizard');\n\t\t\t\t\n\t\t\t\tthis.connectionsProviders[providerName].subscribe(\n\t\t\t\t\t'onStartWaitingMode',\n\t\t\t\t\tthis.handleStartWaitingMode.bind(this)\n\t\t\t\t);\n\t\t\t\tthis.connectionsProviders[providerName].subscribe(\n\t\t\t\t\t'onEndWaitingMode',\n\t\t\t\t\tthis.handleEndWaitingMode.bind(this)\n\t\t\t\t);\n\t\t\t\t\n\t\t\t\tthis.connectionsProviders[providerName].subscribe(\n\t\t\t\t\t'onCloseSyncWizard',\n\t\t\t\t\tthis.handleCloseSyncWizard.bind(this)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\t\n\thandleCloseSyncWizard()\n\t{\n\t\tif (this.isSyncInProcess())\n\t\t{\n\t\t\tif (this.syncButton)\n\t\t\t{\n\t\t\t\tthis.syncButton.refresh(this.STATUS_SYNCHRONIZING);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.refreshContentDebounce();\n\t\t}\n\t}\n\t\n\thandleStartWaitingMode()\n\t{\n\t\tthis.doPeriodicRefresh();\n\t}\n\t\n\thandleEndWaitingMode()\n\t{\n\t\tthis.stopPeriodicRefresh();\n\t}\n\t\n\tdoPeriodicRefresh()\n\t{\n\t\tif (!this.hasOpenedWizard())\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tif (Util.documentIsDisplayingNow())\n\t\t{\n\t\t\tthis.refresh()\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.refreshTimeout = setTimeout(\n\t\t\t\t\t\tthis.doPeriodicRefresh.bind(this),\n\t\t\t\t\t\tthis.WAITING_MODE_PERIODIC_TIMEOUT\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.refreshTimeout = setTimeout(\n\t\t\t\tthis.doPeriodicRefresh.bind(this),\n\t\t\t\tthis.WAITING_MODE_PERIODIC_TIMEOUT\n\t\t\t);\n\t\t}\n\t}\n\t\n\tstopPeriodicRefresh()\n\t{\n\t\tif (this.refreshTimeout)\n\t\t{\n\t\t\tclearInterval(this.refreshTimeout);\n\t\t\tthis.refreshTimeout = null;\n\t\t}\n\t}\n\t\n\topenSyncPanel()\n\t{\n\t\tthis.syncButton.handleClick();\n\t}\n\t\n\tgetSummarySyncStatus()\n\t{\n\t\tlet status = this.STATUS_NOT_CONNECTED;\n\t\tfor (let providerName in this.connectionsProviders)\n\t\t{\n\t\t\tif (this.connectionsProviders.hasOwnProperty(providerName))\n\t\t\t{\n\t\t\t\tif ([this.STATUS_SUCCESS, this.STATUS_FAILED]\n\t\t\t\t\t.includes(this.connectionsProviders[providerName].getStatus()))\n\t\t\t\t{\n\t\t\t\t\tstatus = this.connectionsProviders[providerName].getStatus();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn status;\n\t}\n\t\n\tgetGoogleProvider()\n\t{\n\t\tif (!this.googleProvider)\n\t\t{\n\t\t\tthis.googleProvider = GoogleProvider.createInstance({\n\t\t\t\tsyncInfo: this.syncInfo.google || {},\n\t\t\t\tsections: this.sectionsByType.google || {},\n\t\t\t\tsyncLink: this.syncLinks.google || null,\n\t\t\t\tisSetSyncGoogleSettings: this.isSetSyncGoogleSettings,\n\t\t\t\tmainPanel: true,\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.googleProvider.refresh({\n\t\t\t\tsyncInfo: this.syncInfo.google || {},\n\t\t\t\tsections: this.sectionsByType.google || {},\n\t\t\t\tsyncLink: this.syncLinks.google || null,\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn this.googleProvider;\n\t}\n\t\n\tgetOffice365Provider()\n\t{\n\t\tif (!this.office365Provider)\n\t\t{\n\t\t\tthis.office365Provider = Office365Provider.createInstance({\n\t\t\t\tsyncInfo: this.syncInfo.office365 || {},\n\t\t\t\tsections: this.sectionsByType.office365 || {},\n\t\t\t\tsyncLink: this.syncLinks.office365 || null,\n\t\t\t\tisSetSyncOffice365Settings: this.isSetSyncOffice365Settings,\n\t\t\t\tmainPanel: true,\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.office365Provider.refresh({\n\t\t\t\tsyncInfo: this.syncInfo.office365 || {},\n\t\t\t\tsections: this.sectionsByType.office365 || {},\n\t\t\t\tsyncLink: this.syncLinks.office365 || null,\n\t\t\t});\n\t\t}\n\t\t\n\t\treturn this.office365Provider;\n\t}\n\t\n\tgetIcloudProvider()\n\t{\n\t\tif (!this.icloudProvider)\n\t\t{\n\t\t\tthis.icloudProvider = ICloudProvider.createInstance({\n\t\t\t\tsyncInfo: this.syncInfo.icloud || {},\n\t\t\t\tsections: this.sectionsByType.icloud || {},\n\t\t\t\tmainPanel: true,\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.icloudProvider.refresh({\n\t\t\t\tsyncInfo: this.syncInfo.icloud || {},\n\t\t\t\tsections: this.sectionsByType.icloud || {},\n\t\t\t})\n\t\t}\n\t\t\n\t\treturn this.icloudProvider;\n\t}\n\t\n\tgetCaldavProvider(caldavConnections)\n\t{\n\t\treturn CaldavProvider.createInstance({\n\t\t\tstatus: CaldavConnection.calculateStatus(caldavConnections),\n\t\t\tconnected: (caldavConnections.length > 0),\n\t\t\tconnections: caldavConnections,\n\t\t});\n\t}\n\t\n\tgetIphoneProvider()\n\t{\n\t\treturn IphoneProvider.createInstance({\n\t\t\tsyncInfo: this.syncInfo.iphone,\n\t\t});\n\t}\n\t\n\tgetAndroidProvider()\n\t{\n\t\treturn AndroidProvider.createInstance({\n\t\t\tsyncInfo: this.syncInfo.android,\n\t\t});\n\t}\n\t\n\tgetMacProvider()\n\t{\n\t\treturn MacProvider.createInstance({\n\t\t\tsyncInfo: this.syncInfo.mac,\n\t\t\tportalAddress: this.portalAddress,\n\t\t});\n\t}\n\t\n\tgetYandexProvider(yandexConnections)\n\t{\n\t\treturn YandexProvider.createInstance({\n\t\t\tstatus: CaldavConnection.calculateStatus(yandexConnections),\n\t\t\tconnected: (yandexConnections.length > 0),\n\t\t\tconnections: yandexConnections,\n\t\t});\n\t}\n\t\n\tgetOutlookProvider()\n\t{\n\t\treturn OutlookProvider.createInstance({\n\t\t\tsyncInfo: this.syncInfo.outlook,\n\t\t\tsections: this.sectionsByType.outlook,\n\t\t\tinfoBySections: this.syncInfo.outlook.infoBySections || {},\n\t\t});\n\t}\n\t\n\tgetExchangeProvider()\n\t{\n\t\treturn ExchangeProvider.createInstance({\n\t\t\tsyncInfo: this.syncInfo.exchange,\n\t\t\tsections: this.sectionsByType.exchange\n\t\t})\n\t}\n\t\n\thasOpenedWizard()\n\t{\n\t\tconst sliderList = BX.SidePanel.Instance.getOpenSliders();\n\t\tfor (let i in sliderList)\n\t\t{\n\t\t\tif (sliderList.hasOwnProperty(i)\n\t\t\t\t&& sliderList[i].getUrl().indexOf(this.WIZARD_SLIDER_PREFIX) !== -1)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n}"],"names":["SyncStatusPopup","EventEmitter","constructor","options","setEventNamespace","connections","withUpdateButton","node","id","init","createInstance","setPopupContent","createPopup","popup","Popup","className","bindElement","content","container","angle","width","offsetLeft","offsetTop","padding","darkMode","autoHide","zIndexAbsolute","show","Tag","render","forEach","connection","getConnectStatus","syncTime","getFormattedTime","getSyncDate","classStatus","getSyncStatus","classLable","getClassLabel","title","getConnectionName","block","getSyncElement","append","getContentRefreshBlock","IS_RUN_REFRESH","showRefreshStatus","hide","destroy","getContainer","getPopup","date","now","Date","timestamp","Type","isDate","Math","round","getTime","secondsAgo","parseInt","Loc","getMessage","BX","format","util","htmlspecialchars","refresh","setContent","setRefreshStatusBlock","setTimeout","removeRefreshStatusBlock","enableRefreshButton","isElementNode","refreshStatusBlock","remove","refreshButton","disableRefreshButton","footerWrapper","getContentRefreshButton","addEventListener","Dom","addClass","innerText","runRefresh","prepend","getRefreshStatus","emit","getId","SyncButton","BUTTON_SIZE","UI","Button","Size","EXTRA_SMALL","BUTTON_ROUND","connectionsProviders","wrapper","userId","status","buttonEnterTimeout","buttonLeaveTimeout","buttonData","getButtonData","button","text","size","color","iconClass","onclick","handleClick","events","mouseenter","handlerMouseEnter","bind","mouseleave","handlerMouseLeave","renderTo","showPopup","providersCollection","Object","values","provider","providerConnections","getConnections","length","push","getPopupContainer","e","clearTimeout","hidePopup","setColor","setText","removeClass","window","top","Runtime","loadExtension","then","exports","hasClass","ajax","runAction","analyticsLabel","sync_button_click","has_active_connection","syncPanel","SyncPanel","openSlider","Color","LIGHT_BORDER","PRIMARY","getSyncPanel","setConnectionProviders","isConnectionItemProperty","Symbol","for","ConnectionItem","syncDate","connectionName","connected","addParams","type","userName","isConnectionItem","target","isObject","getStatus","getSections","sections","getConnectionAccountName","getType","setId","setStatus","setUserName","setConnected","setSyncDate","ConnectionProvider","MENU_WIDTH","MENU_PADDING","MENU_INDEX","SLIDER_WIDTH","STATUS_SYNCHRONIZING","STATUS_SUCCESS","STATUS_FAILED","STATUS_PENDING","STATUS_NOT_CONNECTED","ERROR_CODE","STATUS_LIST","WAITING_MODE_MAX_TIME","mainPanel","pendingStatus","gridTitle","gridColor","gridIcon","viewClassification","templateClass","isActive","hasMenu","setAdditionalParams","additionalParams","offset","isNaN","getConnection","setSections","includes","getGridTitle","getGridColor","getGridIcon","clearConnections","setConnections","setInterfaceUnit","interfaceUnit","getInterfaceUnit","getViewClassification","getWizardSyncMode","getTemplateClass","SidePanel","Instance","open","sliderId","contentCallback","slider","Promise","resolve","reject","data","cacheable","allowChangeHistory","onLoad","event","itemSlider","getSlider","closeSlider","close","openInfoConnectionSlider","getClassTemplateItem","getInfoConnectionContent","openActiveConnectionSlider","itemInterface","getSectionsForGoogle","openActiveConnectionSliderVendor","getSectionsForIcloud","getSectionsForOffice365","getActiveConnectionContent","itemClass","Reflection","getClass","isFunction","getConnectionById","result","filter","getSyncPanelTitle","getSyncPanelLogo","setWizardSyncMode","value","wizardSyncMode","setWizardState","stateData","wizard","getActiveWizard","setErrorState","handleUpdateState","setActiveWizard","activeWizard","subscribe","handleCreatedConnection","handleCloseWizard","startWaitingMode","endWaitingMode","waitingModeReserveTimeout","reload","setSyncStatus","accountType","calendarContext","Util","getCalendarContext","syncInterface","refreshDebounce","isSyncFinished","getOpenSliders","getUrl","unsubscribeAll","syncInfo","syncLink","syncOffset","GoogleProvider","interfaceClassName","isSetSyncGoogleSettings","getSyncLink","hasSetSyncGoogleSettings","saveConnection","response","vendorName","accountName","googleApiStatus","googleCalendarPrimaryId","stage","Event","BaseEvent","Office365Provider","isSetSyncOffice365Settings","hasSetSyncOffice365Settings","removeConnection","connectionId","ICloudProvider","AndroidProvider","CaldavConnection","calculateStatus","key","isFailedConnections","showMenu","menu","menuItems","getMenuItems","getMenuItemConnect","getMenu","addMenuHandler","getMenuContainer","item","delimiter","Main","Menu","items","closeByEsc","connectionsSyncInfo","server","CaldavProvider","ExchangeProvider","IphoneProvider","MacProvider","portalAddress","getPortalAddress","OutlookProvider","infoBySections","connectToOutlook","section","url","eval","YandexProvider","Manager","WIZARD_SYNC_MODE","WAITING_MODE_PERIODIC_TIMEOUT","REFRESH_DELAY","REFRESH_CONTENT_DELAY","WIZARD_SLIDER_PREFIX","setSyncInfo","syncLinks","isRuZone","calendarInstance","calendar","debounce","refreshContentDebounce","refreshContent","subscribeOnEvent","reDrawCalendarGrid","location","showSyncButton","syncButton","yandexConnections","caldavConnections","sectionsByType","sortSections","hasOwnProperty","caldav","google","getGoogleProvider","office365","getOffice365Provider","icloud","getIcloudProvider","getCaldavProvider","iphone","getIphoneProvider","android","getAndroidProvider","mac","getMacProvider","yandex","getYandexProvider","browser","IsMac","outlook","getOutlookProvider","exchange","getExchangeProvider","getSummarySyncStatus","subscribeEventHandlers","setSyncMode","syncMode","getSyncMode","isWizardSyncMode","providerName","isSyncInProcess","exchangeSections","googleSections","icloudSections","outlookSections","office365Sections","belongsToView","OUTLOOK_JS","connectURL","name","requestUid","registerRequestId","activePopup","getTarget","refreshCalendarGrid","refreshActivePopup","refreshOpenSliders","openSliders","refreshMainSlider","indexOf","refreshConnectionSlider","updatedConnection","undefined","getData","get","itemConnections","reloadDebounce","updateSyncStatus","params","addSyncConnection","Calendar","checkRequestId","deleteSyncConnection","getProviderById","processSyncConnection","handlePullEvent","command","handleStartWaitingMode","handleEndWaitingMode","handleCloseSyncWizard","doPeriodicRefresh","stopPeriodicRefresh","hasOpenedWizard","documentIsDisplayingNow","refreshTimeout","clearInterval","openSyncPanel","googleProvider","office365Provider","icloudProvider","sliderList","i"],"mappings":";;;;;;;;;;;;CAOe,MAAMA,eAAN,SAA8BC,6BAA9B,CACf;GAGCC,WAAW,CAACC,OAAD,EACX;KACC;KACA,KAAKC,iBAAL,CAAuB,4CAAvB;KACA,KAAKC,WAAL,GAAmBF,OAAO,CAACE,WAA3B;KACA,KAAKC,gBAAL,GAAwBH,OAAO,CAACG,gBAAhC;KACA,KAAKC,IAAL,GAAYJ,OAAO,CAACI,IAApB;KACA,KAAKC,EAAL,GAAUL,OAAO,CAACK,EAAlB;KAEA,KAAKC,IAAL;;;GAGoB,OAAdC,cAAc,CAACP,OAAD,EACrB;KACC,OAAO,IAAI,IAAJ,CAASA,OAAT,CAAP;;;GAGDM,IAAI,GACJ;KACC,KAAKE,eAAL;;;GAGDC,WAAW,GACX;KACC,KAAKC,KAAL,GAAa,IAAIC,gBAAJ,CAAU;OACtBC,SAAS,EAAE,KAAKP,EADM;OAEtBQ,WAAW,EAAE,KAAKT,IAFI;OAGtBU,OAAO,EAAE,KAAKC,SAHQ;OAItBC,KAAK,EAAE,IAJe;OAKtBC,KAAK,EAAE,GALe;OAMtBC,UAAU,EAAE,EANU;OAOtBC,SAAS,EAAE,CAPW;OAQtBC,OAAO,EAAE,CARa;OAStBC,QAAQ,EAAE,IATY;OAUtBC,QAAQ,EAAE,IAVY;OAWtBC,cAAc,EAAE;MAXJ,CAAb;;;GAeDC,IAAI,GACJ;KACC,KAAKf,WAAL;KACA,KAAKC,KAAL,CAAWc,IAAX;;;GAGDhB,eAAe,GACf;KACC,KAAKO,SAAL,GAAiBU,aAAG,CAACC,MAArB,cAA6B;;GAA7B;KAIA,KAAKxB,WAAL,CAAiByB,OAAjB,CAAyBC,UAAU,IAAI;OACtC,IAAIA,UAAU,CAACC,gBAAX,OAAkC,IAAtC,EACA;SACC;;;OAGD,MAAM7B,OAAO,GAAG,EAAhB;OAEAA,OAAO,CAAC8B,QAAR,GAAmB,KAAKC,gBAAL,CAAsBH,UAAU,CAACI,WAAX,EAAtB,CAAnB;OACAhC,OAAO,CAACiC,WAAR,GAAsBL,UAAU,CAACM,aAAX,KACnB,yCADmB,GAEnB,sCAFH;OAIAlC,OAAO,CAACmC,UAAR,GAAqB,mCAAmCP,UAAU,CAACQ,aAAX,EAAxD;OACApC,OAAO,CAACqC,KAAR,GAAgBT,UAAU,CAACU,iBAAX,EAAhB;OACA,MAAMC,KAAK,GAAG,KAAKC,cAAL,CAAoBxC,OAApB,CAAd;OACA,KAAKe,SAAL,CAAe0B,MAAf,CAAsBF,KAAtB;MAhBD;;KAoBA,IAAI,KAAKpC,gBAAT,EACA;OACC,KAAKY,SAAL,CAAe0B,MAAf,CAAsB,KAAKC,sBAAL,EAAtB;;OAEA,IAAI7C,eAAe,CAAC8C,cAApB,EACA;SACC,KAAKC,iBAAL;;;;KAIF,OAAO,KAAK7B,SAAZ;;;GAGD8B,IAAI,GACJ;KACC,KAAKnC,KAAL,CAAWoC,OAAX;;;GAGDC,YAAY,GACZ;KACC,OAAO,KAAKhC,SAAZ;;;GAGDiC,QAAQ,GACR;KACC,OAAO,KAAKtC,KAAZ;;;GAGDqB,gBAAgB,CAACkB,IAAD,EAChB;KACC,MAAMC,GAAG,GAAG,IAAIC,IAAJ,EAAZ;KACA,IAAIC,SAAS,GAAGH,IAAhB;;KACA,IAAII,cAAI,CAACC,MAAL,CAAYL,IAAZ,CAAJ,EACA;OACCG,SAAS,GAAGG,IAAI,CAACC,KAAL,CAAWP,IAAI,CAACQ,OAAL,KAAiB,IAA5B,CAAZ;OACA,IAAIC,UAAU,GAAGC,QAAQ,CAAC,CAACT,GAAG,GAAGD,IAAP,IAAe,IAAhB,CAAzB;;OACA,IAAIS,UAAU,GAAG,EAAjB,EACA;SACC,OAAOE,aAAG,CAACC,UAAJ,CAAe,UAAf,CAAP;;;;KAIF,OAAOC,EAAE,CAACb,IAAH,CAAQc,MAAR,CACN,CACC,CAAC,UAAD,EAAa,iBAAb,CADD,EAEC,CAAC,GAAD,EAAO,MAAP,CAFD,EAGC,CAAC,GAAD,EAAM,MAAN,CAHD,EAIC,CAAC,GAAD,EAAM,MAAN,CAJD,EAKC,CAAC,MAAD,EAAS,MAAT,CALD,EAMC,CAAC,GAAD,EAAM,MAAN,CAND,EAOC,CAAC,GAAD,EAAM,EAAN,CAPD,CADM,EAUNX,SAVM,CAAP;;;GAcDZ,cAAc,CAACxC,OAAD,EACd;KACC,OAAOyB,aAAG,CAACC,MAAX,gBAAmB;;kDAAnB,CAEmE,KAFnE,CAE+G;;oDAF/G,CAImE;qDAJnE,CAKuE;;;IALvE,GAEgD1B,OAAO,CAACmC,UAFxD,EAEuE2B,EAAE,CAACE,IAAH,CAAQC,gBAAR,CAAyBjE,OAAO,CAACqC,KAAjC,CAFvE,EAIkDrC,OAAO,CAAC8B,QAJ1D,EAKmD9B,OAAO,CAACiC,WAL3D;;;GAWDiC,OAAO,CAAChE,WAAD,EACP;KACC,KAAKA,WAAL,GAAmBA,WAAnB;KACA,KAAKQ,KAAL,CAAWyD,UAAX,CAAsB,KAAK3D,eAAL,EAAtB;KACA,KAAK4D,qBAAL;;;GAGDA,qBAAqB,GACrB;KACCC,UAAU,CAAC,MAAM;OAChB,KAAKC,wBAAL;OACA,KAAKC,mBAAL;OACA1E,eAAe,CAAC8C,cAAhB,GAAiC,KAAjC;MAHS,EAIP,MAJO,CAAV;;;GAOD2B,wBAAwB,GACxB;KACC,IAAIjB,cAAI,CAACmB,aAAL,CAAmB,KAAKC,kBAAxB,CAAJ,EACA;OACC,KAAKA,kBAAL,CAAwBC,MAAxB;;;;GAIFH,mBAAmB,GACnB;KACC,IAAIlB,cAAI,CAACmB,aAAL,CAAmB,KAAKG,aAAxB,CAAJ,EACA;OACC,KAAKA,aAAL,CAAmB/D,SAAnB,GAA+B,gCAA/B;;;;GAIFgE,oBAAoB,GACpB;KACC,IAAIvB,cAAI,CAACmB,aAAL,CAAmB,KAAKG,aAAxB,CAAJ,EACA;OACC,KAAKA,aAAL,CAAmB/D,SAAnB,GAA+B,wEAA/B;;;;GAIF8B,sBAAsB,GACtB;KACC,KAAKmC,aAAL,GAAqBpD,aAAG,CAACC,MAAzB,gBAAgC;;MAAhC,CAEmC;;GAFnC,GAEI,KAAKoD,uBAAL,EAFJ;KAMA,OAAO,KAAKD,aAAZ;;;GAGDC,uBAAuB,GACvB;KACC,KAAKH,aAAL,GAAqBlD,aAAG,CAACC,MAAzB,gBAAgC;oDAAhC,CACgF;GADhF,GACkDkC,aAAG,CAACC,UAAJ,CAAe,aAAf,CADlD;KAIA,KAAKc,aAAL,CAAmBI,gBAAnB,CAAoC,OAApC,EAA6C,MAAM;OAClDC,aAAG,CAACC,QAAJ,CAAa,KAAKN,aAAlB,EAAiC,qCAAjC;OACA9E,eAAe,CAAC8C,cAAhB,GAAiC,IAAjC;OACA,KAAKgC,aAAL,CAAmBO,SAAnB,GAA+BtB,aAAG,CAACC,UAAJ,CAAe,gBAAf,CAA/B;OACA,KAAKsB,UAAL;MAJD;KAOA,OAAO,KAAKR,aAAZ;;;GAGD/B,iBAAiB,GACjB;KACC,KAAKgC,oBAAL;KACA,KAAKC,aAAL,CAAmBO,OAAnB,CAA2B,KAAKC,gBAAL,EAA3B;;;GAGDA,gBAAgB,GAChB;KACC,KAAKZ,kBAAL,GAA0BhD,aAAG,CAACC,MAA9B,gBAAqC;qDAArC,CACsF;GADtF,GACmDkC,aAAG,CAACC,UAAJ,CAAe,kBAAf,CADnD;KAIA,OAAO,KAAKY,kBAAZ;;;GAGDU,UAAU,GACV;KACC,KAAKG,IAAL,CAAU,WAAV,EAAuB,EAAvB;;;GAGDC,KAAK,GACL;KACC,OAAO,KAAKlF,EAAZ;;;CAxOF;CADqBR,gBAEb8C,iBAAiB;;CCHV,MAAM6C,UAAN,CACf;GAICzF,WAAW,CAACC,OAAD,EACX;KAAA,KAJAyF,WAIA,GAJc3B,EAAE,CAAC4B,EAAH,CAAMC,MAAN,CAAaC,IAAb,CAAkBC,WAIhC;KAAA,KAHAC,YAGA,GAHe,IAGf;KACC,KAAKC,oBAAL,GAA4B/F,OAAO,CAAC+F,oBAApC;KACA,KAAKC,OAAL,GAAehG,OAAO,CAACgG,OAAvB;KACA,KAAKC,MAAL,GAAcjG,OAAO,CAACiG,MAAtB;KACA,KAAKC,MAAL,GAAclG,OAAO,CAACkG,MAAtB;KAEA,KAAKC,kBAAL,GAA0B,IAA1B;KACA,KAAKC,kBAAL,GAA0B,IAA1B;;;GAGoB,OAAd7F,cAAc,CAACP,OAAD,EACrB;KACC,OAAO,IAAI,IAAJ,CAASA,OAAT,CAAP;;;GAGDwB,IAAI,GACJ;KACC,MAAM6E,UAAU,GAAG,KAAKC,aAAL,EAAnB;KACA,KAAKC,MAAL,GAAc,IAAIzC,EAAE,CAAC4B,EAAH,CAAMC,MAAV,CAAiB;OAC9Ba,IAAI,EAAEH,UAAU,CAACG,IADa;OAE9BhD,KAAK,EAAE,KAAKsC,YAFkB;OAG9BW,IAAI,EAAE,KAAKhB,WAHmB;OAI9BiB,KAAK,EAAEL,UAAU,CAACK,KAJY;OAK9B9F,SAAS,EAAE,oBAAoByF,UAAU,CAACM,SAAX,IAAwB,EAA5C,CALmB;OAM9BC,OAAO,EAAE,MAAM;SACd,KAAKC,WAAL;QAP6B;OAS9BC,MAAM,EAAE;SACPC,UAAU,EAAE,KAAKC,iBAAL,CAAuBC,IAAvB,CAA4B,IAA5B,CADL;SAEPC,UAAU,EAAE,KAAKC,iBAAL,CAAuBF,IAAvB,CAA4B,IAA5B;;MAXA,CAAd;KAeA,KAAKV,MAAL,CAAYa,QAAZ,CAAqB,KAAKpB,OAA1B;;;GAGDqB,SAAS,CAACd,MAAD,EACT;KACC,IAAG,KAAKL,MAAL,KAAgB,eAAnB,EACA;OACC,MAAMhG,WAAW,GAAG,EAApB;OACA,MAAMoH,mBAAmB,GAAGC,MAAM,CAACC,MAAP,CAAc,KAAKzB,oBAAnB,CAA5B;OAEAuB,mBAAmB,CAAC3F,OAApB,CAA4B8F,QAAQ,IAAI;SACvC,MAAMC,mBAAmB,GAAGD,QAAQ,CAACE,cAAT,EAA5B;;SACA,IAAGD,mBAAmB,CAACE,MAApB,GAA6B,CAAhC,EACA;WACCF,mBAAmB,CAAC/F,OAApB,CAA4BC,UAAU,IACrC;aACC,IAAIA,UAAU,CAACC,gBAAX,OAAkC,IAAtC,EACA;eACC3B,WAAW,CAAC2H,IAAZ,CAAiBjG,UAAjB;;YAJH;;QAJF;OAeA,KAAKlB,KAAL,GAAab,eAAe,CAACU,cAAhB,CAA+B;SAC3CL,WAAW,EAAEA,WAD8B;SAE3CC,gBAAgB,EAAE,IAFyB;SAG3CC,IAAI,EAAEmG,MAAM,CAACxD,YAAP,EAHqC;SAI3C1C,EAAE,EAAE;QAJQ,CAAb;OAMA,KAAKK,KAAL,CAAWc,IAAX;OAEA,KAAKd,KAAL,CAAWsC,QAAX,GAAsB8E,iBAAtB,GAA0C/C,gBAA1C,CAA2D,YAA3D,EAAyEgD,CAAC,IAAI;SAC7EC,YAAY,CAAC,KAAK7B,kBAAN,CAAZ;SACA6B,YAAY,CAAC,KAAK5B,kBAAN,CAAZ;QAFD;OAIA,KAAK1F,KAAL,CAAWsC,QAAX,GAAsB8E,iBAAtB,GAA0C/C,gBAA1C,CAA2D,YAA3D,EAAyE,MAAM;SAC9E,KAAKkD,SAAL;QADD;;;;GAMFA,SAAS,GACT;KACC,IAAI,KAAKvH,KAAT,EACA;OACC,KAAKA,KAAL,CAAWmC,IAAX;;;;GAIFqB,OAAO,CAACgC,MAAD,EACP;KACC,KAAKA,MAAL,GAAcA,MAAd;KAEA,MAAMG,UAAU,GAAG,KAAKC,aAAL,EAAnB;KACA,KAAKC,MAAL,CAAY2B,QAAZ,CAAqB7B,UAAU,CAACK,KAAhC;KACA,KAAKH,MAAL,CAAY4B,OAAZ,CAAoB9B,UAAU,CAACG,IAA/B;KACA,KAAKD,MAAL,CAAY6B,WAAZ,CAAwB,mDAAxB;KACA,KAAK7B,MAAL,CAAYtB,QAAZ,CAAqBoB,UAAU,CAACM,SAAhC;;;GAGDE,WAAW,GACX;KACCmB,YAAY,CAAC,KAAK7B,kBAAN,CAAZ;KACA,CAACkC,MAAM,CAACC,GAAP,CAAWxE,EAAX,IAAiBuE,MAAM,CAACvE,EAAzB,EAA6ByE,OAA7B,CAAqCC,aAArC,CAAmD,yBAAnD,EAA8EC,IAA9E,CAAoFC,OAAD,IAAa;OAC/F,IAAI,CAAC1D,aAAG,CAAC2D,QAAJ,CAAa,KAAKpC,MAAL,CAAYA,MAAzB,EAAiC,cAAjC,CAAL,EACA;SACCzC,EAAE,CAAC8E,IAAH,CAAQC,SAAR,CAAkB,sCAAlB,EAA0D;WACzDC,cAAc,EAAE;aACfC,iBAAiB,EAAE,GADJ;aAEfC,qBAAqB,EAAE,KAAK9C,MAAL,KAAgB,eAAhB,GAAkC,GAAlC,GAAwC;;UAHjE;SAMA,KAAK+C,SAAL,GAAiB,IAAIP,OAAO,CAACQ,SAAZ,CAAsB;WACtCnD,oBAAoB,EAAE,KAAKA,oBADW;WAEtCE,MAAM,EAAE,KAAKA,MAFyB;WAGtCC,MAAM,EAAE,KAAKA;UAHG,CAAjB;SAKA,KAAK+C,SAAL,CAAeE,UAAf;;MAdF;;;GAmBDnC,iBAAiB,CAACT,MAAD,EACjB;KACCyB,YAAY,CAAC,KAAK7B,kBAAN,CAAZ;KACA,KAAKA,kBAAL,GAA0B9B,UAAU,CAAC,MACpC;OACC,KAAK8B,kBAAL,GAA0B,IAA1B;;OACA,IAAI,CAACnB,aAAG,CAAC2D,QAAJ,CAAapC,MAAM,CAACA,MAApB,EAA4B,cAA5B,CAAL,EACA;SACC,KAAKc,SAAL,CAAed,MAAf;;MALiC,EAOhC,GAPgC,CAApC;;;GAWDY,iBAAiB,GACjB;KACC,IAAI,KAAKhB,kBAAL,KAA4B,IAAhC,EACA;OACC6B,YAAY,CAAC,KAAK7B,kBAAN,CAAZ;OACA,KAAKA,kBAAL,GAA0B,IAA1B;OACA;;;KAGD,KAAKC,kBAAL,GAA0B/B,UAAU,CAAC,MACpC;OACC,KAAK4D,SAAL;MAFkC,EAGhC,GAHgC,CAApC;;;GAOD3B,aAAa,GACb;KACC,IAAI,KAAKJ,MAAL,KAAgB,SAApB,EACA;OACC,OAAO;SACNM,IAAI,EAAE5C,aAAG,CAACC,UAAJ,CAAe,+BAAf,CADA;SAEN6C,KAAK,EAAE5C,EAAE,CAAC4B,EAAH,CAAMC,MAAN,CAAayD,KAAb,CAAmBC,YAFpB;SAGN1C,SAAS,EAAE;QAHZ;MAFD,MAQK,IAAI,KAAKT,MAAL,KAAgB,QAApB,EACL;OACC,OAAO;SACNM,IAAI,EAAE5C,aAAG,CAACC,UAAJ,CAAe,sBAAf,CADA;SAEN6C,KAAK,EAAE5C,EAAE,CAAC4B,EAAH,CAAMC,MAAN,CAAayD,KAAb,CAAmBC,YAFpB;SAGN1C,SAAS,EAAE;QAHZ;MAFI,MAQA,IAAI,KAAKT,MAAL,KAAgB,eAApB,EACL;OACC,OAAO;SACNM,IAAI,EAAE5C,aAAG,CAACC,UAAJ,CAAe,+BAAf,CADA;SAEN6C,KAAK,EAAE5C,EAAE,CAAC4B,EAAH,CAAMC,MAAN,CAAayD,KAAb,CAAmBC,YAFpB;SAGN1C,SAAS,EAAE;QAHZ;;;KAOD,OAAO;OACNH,IAAI,EAAE5C,aAAG,CAACC,UAAJ,CAAe,iCAAf,CADA;OAEN6C,KAAK,EAAE5C,EAAE,CAAC4B,EAAH,CAAMC,MAAN,CAAayD,KAAb,CAAmBE;MAF3B;;;GAMDC,YAAY,GACZ;KACC,OAAO,KAAKN,SAAZ;;;GAGDO,sBAAsB,CAACzD,oBAAD,EACtB;KACC,KAAKA,oBAAL,GAA4BA,oBAA5B;;;CAhMF;;CCFA,MAAM0D,wBAAwB,GAAGC,MAAM,CAACC,GAAP,CAAW,0DAAX,CAAjC;AAEA,CAAe,MAAMC,cAAN,CACf;GACC7J,WAAW,CAACC,OAAD,EACX;KACC,KAAKyJ,wBAAL,IAAiC,IAAjC;KACA,KAAKI,QAAL,GAAgBxG,cAAI,CAACC,MAAL,CAAYtD,OAAO,CAAC6J,QAApB,IAAgC7J,OAAO,CAAC6J,QAAxC,GAAmD,IAAI1G,IAAJ,EAAnE;KACA,KAAK2G,cAAL,GAAsB9J,OAAO,CAAC8J,cAA9B;KACA,KAAK5D,MAAL,GAAclG,OAAO,CAACkG,MAAtB;KACA,KAAK6D,SAAL,GAAiB/J,OAAO,CAAC+J,SAAzB;KACA,KAAKC,SAAL,GAAiBhK,OAAO,CAACgK,SAAzB;KACA,KAAKC,IAAL,GAAYjK,OAAO,CAACiK,IAApB;KACA,KAAK5J,EAAL,GAAUL,OAAO,CAACiK,IAAlB;KACA,KAAKC,QAAL,GAAgBlK,OAAO,CAACkK,QAAxB;;;GAGoB,OAAd3J,cAAc,CAACP,OAAD,EACrB;KACC,OAAO,IAAI,IAAJ,CAASA,OAAT,CAAP;;;GAGsB,OAAhBmK,gBAAgB,CAACC,MAAD,EACvB;KACC,OAAO/G,cAAI,CAACgH,QAAL,CAAcD,MAAd,KAAyBA,MAAM,CAACX,wBAAD,CAAN,KAAqC,IAArE;;;GAGDzH,WAAW,GACX;KACC,OAAO,KAAK6H,QAAZ;;;GAGDvH,iBAAiB,GACjB;KACC,OAAO,KAAKwH,cAAZ;;;GAGD5H,aAAa,GACb;KACC,OAAO,KAAKgE,MAAZ;;;GAGDrE,gBAAgB,GAChB;KACC,OAAO,KAAKkI,SAAZ;;;GAGDO,SAAS,GACT;KACC,IAAI,KAAKP,SAAT,EACA;OACC,OAAO,KAAK7D,MAAL,GACJ,SADI,GAEJ,QAFH;MAFD,MAOA;OACC,OAAO,eAAP;;;;GAIF9D,aAAa,GACb;KACC,OAAO,KAAK6H,IAAZ;;;GAGDM,WAAW,GACX;KACC,OAAO,KAAKP,SAAL,CAAeQ,QAAtB;;;GAGDjF,KAAK,GACL;KACC,OAAO,KAAKyE,SAAL,CAAe3J,EAAtB;;;GAGDoK,wBAAwB,GACxB;KACC,OAAO,KAAKP,QAAZ;;;GAGDQ,OAAO,GACP;KACC,OAAO,KAAKT,IAAZ;;;GAGDU,KAAK,CAACtK,EAAD,EACL;KACC,KAAK2J,SAAL,CAAe3J,EAAf,GAAoBA,EAApB;;;GAGDuK,SAAS,CAAC1E,MAAD,EACT;KACC,KAAKA,MAAL,GAAcA,MAAd;;;GAGD2E,WAAW,CAACX,QAAD,EACX;KACC,KAAKA,QAAL,GAAgBA,QAAhB;;;GAGDY,YAAY,CAACf,SAAD,EACZ;KACC,KAAKA,SAAL,GAAiBA,SAAjB;;;GAGDgB,WAAW,CAAClB,QAAD,EACX;KACC,KAAKA,QAAL,GAAgBA,QAAhB;;;CAzGF;;CCAO,MAAMmB,kBAAN,SAAiClL,6BAAjC,CACP;;GAqBCC,WAAW,CAACC,OAAD,EACX;KACC;KADD,KArBAiL,UAqBA,GArBa,GAqBb;KAAA,KApBAC,YAoBA,GApBe,CAoBf;KAAA,KAnBAC,UAmBA,GAnBa,IAmBb;KAAA,KAlBAC,YAkBA,GAlBe,GAkBf;KAAA,KAjBAC,oBAiBA,GAjBuB,eAiBvB;KAAA,KAhBAC,cAgBA,GAhBiB,SAgBjB;KAAA,KAfAC,aAeA,GAfgB,QAehB;KAAA,KAdAC,cAcA,GAdiB,SAcjB;KAAA,KAbAC,oBAaA,GAbuB,eAavB;KAAA,KAZAC,UAYA,GAZa,OAYb;KAAA,KAVAC,WAUA,GAVc,CACb,KAAKN,oBADQ,EAEb,KAAKC,cAFQ,EAGb,KAAKC,aAHQ,EAIb,KAAKC,cAJQ,EAKb,KAAKC,oBALQ,CAUd;KAAA,KAHAG,qBAGA,GAHwB,MAGxB;KAEC,KAAK3L,iBAAL,CAAuB,6CAAvB;KAEA,KAAKiG,MAAL,GAAclG,OAAO,CAACkG,MAAtB;KACA,KAAK6D,SAAL,GAAiB/J,OAAO,CAAC+J,SAAzB;KACA,KAAKG,QAAL,GAAgBlK,OAAO,CAACkK,QAAR,IAAoB,EAApC;KACA,KAAK2B,SAAL,GAAiB7L,OAAO,CAAC6L,SAAR,KAAsB,IAAvC;KACA,KAAKC,aAAL,GAAqB9L,OAAO,CAAC8L,aAAR,KAA0B,IAA/C;KACA,KAAKC,SAAL,GAAiB/L,OAAO,CAAC+L,SAAzB;KACA,KAAKC,SAAL,GAAiBhM,OAAO,CAACgM,SAAzB;KACA,KAAKC,QAAL,GAAgBjM,OAAO,CAACiM,QAAxB;KACA,KAAKhC,IAAL,GAAYjK,OAAO,CAACiK,IAApB;KACA,KAAKiC,kBAAL,GAA0BlM,OAAO,CAACkM,kBAAlC;KACA,KAAKC,aAAL,GAAqBnM,OAAO,CAACmM,aAA7B,CAdD;;KAgBC,KAAKjM,WAAL,GAAmB,EAAnB;KACA,KAAKG,EAAL,GAAUL,OAAO,CAACK,EAAR,IAAc,EAAxB;;;GAGoB,OAAdE,cAAc,CAACP,OAAD,EACrB;KACC,OAAO,IAAI,IAAJ,CAASA,OAAT,CAAP;;;GAGDoM,QAAQ,GACR;KACC,OAAO,KAAKrC,SAAZ;;;GAGDsC,OAAO,GACP;KACC,OAAO,KAAP;;;GAGDC,mBAAmB,CAACtM,OAAD,EACnB;KACC,KAAKuM,gBAAL,GAAwBvM,OAAxB;;;GAGD+K,WAAW,CAACyB,MAAD,EACX;KACCA,MAAM,GAAG7I,QAAQ,CAAC6I,MAAD,CAAjB;;KACA,IAAIA,MAAM,GAAG,EAAb,EACA;OACC,KAAK3C,QAAL,GAAgB,IAAI1G,IAAJ,CAAS,IAAIA,IAAJ,GAAWM,OAAX,KAAuB+I,MAAM,GAAG,IAAzC,CAAhB;MAFD,MAIK,IAAI,CAACC,KAAK,CAACD,MAAD,CAAV,EACL;OACC,KAAK3C,QAAL,GAAgB,IAAI1G,IAAJ,EAAhB;MAFI,MAKL;OACC,KAAK0G,QAAL,GAAgB,IAAhB;;;KAGD,IAAI,KAAK6C,aAAL,EAAJ,EACA;OACC,KAAKA,aAAL,GAAqB7C,QAArB,GAAgC,KAAKA,QAArC;;;;GAIF7H,WAAW,GACX;KACC,OAAO,KAAK6H,QAAZ;;;GAGD8C,WAAW,CAACnC,QAAD,EACX;KACC,KAAKA,QAAL,GAAgBA,QAAhB;;;GAGDI,SAAS,CAAC1E,MAAD,EACT;KACC,IAAI,KAAKyF,WAAL,CAAiBiB,QAAjB,CAA0B1G,MAA1B,CAAJ,EACA;OACC,KAAKA,MAAL,GAAcA,MAAd;;OACA,IAAI,CAAC,KAAK6D,SAAN,KAAoB7D,MAAM,KAAK,KAAKoF,cAAhB,IAAkCpF,MAAM,KAAK,KAAKqF,aAAtE,CAAJ,EACA;SACC,KAAKxB,SAAL,GAAiB,IAAjB;QAFD,MAIK,IAAG,KAAKA,SAAL,IAAkB7D,MAAM,KAAK,KAAKuF,oBAArC,EACL;SACC,KAAK1B,SAAL,GAAiB,KAAjB;;;;KAIF,OAAO,IAAP;;;GAGD8C,YAAY,GACZ;KACC,OAAO,KAAKd,SAAZ;;;GAGDe,YAAY,GACZ;KACC,OAAO,KAAKd,SAAZ;;;GAGDe,WAAW,GACX;KACC,OAAO,KAAKd,QAAZ;;;GAGDe,gBAAgB,GAChB;KACC,KAAK9M,WAAL,GAAmB,EAAnB;;;GAGD+M,cAAc,GACd;KACC,KAAK/M,WAAL,CAAiB2H,IAAjB,CAAsB+B,cAAc,CAACrJ,cAAf,CAA8B;OACnDsJ,QAAQ,EAAE,KAAK7H,WAAL,EADyC;OAEnD8H,cAAc,EAAE,KAAKA,cAF8B;OAGnD5D,MAAM,EAAE,KAAKA,MAHsC;OAInD6D,SAAS,EAAE,KAAKA,SAJmC;OAKnDG,QAAQ,EAAE,KAAKA,QALoC;OAMnDF,SAAS,EAAE;SACVQ,QAAQ,EAAE,KAAKA,QADL;SAEVnK,EAAE,EAAE,KAAKA,EAAL,IAAW,KAAK4J;QAR8B;OAUnDA,IAAI,EAAE,KAAKA;MAVU,CAAtB;;;GAcDiD,gBAAgB,CAACC,aAAD,EAChB;KACC,KAAKA,aAAL,GAAqBA,aAArB;;;GAGDC,gBAAgB,GAChB;KACC,OAAO,KAAKD,aAAZ;;;GAGDxF,cAAc,GACd;KACC,OAAO,KAAKzH,WAAZ;;;GAGDwM,aAAa,GACb;KACC,OAAO,KAAKxM,WAAL,CAAiB,CAAjB,CAAP;;;GAGDwK,OAAO,GACP;KACC,OAAO,KAAKT,IAAZ;;;GAGDoD,qBAAqB,GACrB;KACC,OAAO,KAAKnB,kBAAZ;;;GAGDrK,gBAAgB,GAChB;KACC,OAAO,KAAKkI,SAAZ;;;GAGD7H,aAAa,GACb;KACC,OAAO,KAAKgE,MAAZ;;;GAGDoE,SAAS,GACT;KACC,IAAI,KAAKgD,iBAAL,EAAJ,EACA;OACC,OAAO,eAAP;;;KAGD,IAAI,KAAKvD,SAAT,EACA;OACC,OAAO,KAAK7D,MAAL,GACJ,SADI,GAEJ,QAFH;MAFD,MAMK,IAAI,KAAK4F,aAAT,EACL;OACC,OAAO,SAAP;MAFI,MAKL;OACC,OAAO,eAAP;;;;GAIFyB,gBAAgB,GAChB;KACC,OAAO,KAAKpB,aAAZ;;;GAGDhD,UAAU,CAACnJ,OAAD,EACV;KACC8D,EAAE,CAAC0J,SAAH,CAAaC,QAAb,CAAsBC,IAAtB,CAA2B1N,OAAO,CAAC2N,QAAnC,EAA6C;OAC5CC,eAAe,CAACC,MAAD,EACf;SACC,OAAO,IAAIC,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;WACvCD,OAAO,CAAC/N,OAAO,CAACc,OAAT,CAAP;UADM,CAAP;QAH2C;;OAO5CmN,IAAI,EAAEjO,OAAO,CAACiO,IAAR,IAAgB,EAPsB;OAQ5CC,SAAS,EAAElO,OAAO,CAACkO,SARyB;OAS5CjN,KAAK,EAAE,KAAKmK,YATgC;OAU5C+C,kBAAkB,EAAE,KAVwB;OAW5CrH,MAAM,EAAE;SACPsH,MAAM,EAAEC,KAAK,IAAI;WAChB,KAAKC,UAAL,GAAkBD,KAAK,CAACE,SAAN,EAAlB;;;MAbH;;;GAmBDC,WAAW,GACX;KACC,IAAI,KAAKF,UAAT,EACA;OACC,KAAKA,UAAL,CAAgBG,KAAhB;;;;GAIFC,wBAAwB,GACxB;KACC,MAAM5N,OAAO,GAAG,KAAK6N,oBAAL,GAA4BpO,cAA5B,CAA2C,IAA3C,EAAiDqO,wBAAjD,EAAhB;KACA,KAAKzF,UAAL,CAAgB;OACfwE,QAAQ,EAAE,gCAAgC,KAAK1D,IADhC;OAEfnJ,OAAO,EAAEA,OAFM;OAGfoN,SAAS,EAAE,KAHI;OAIfD,IAAI,EAAE;SACLxG,QAAQ,EAAE;;MALZ;;;GAUDoH,0BAA0B,CAACjN,UAAD,EAC1B;KACC,MAAMkN,aAAa,GAAG,KAAKH,oBAAL,GAA4BpO,cAA5B,CAA2C,IAA3C,EAAiDqB,UAAjD,CAAtB;;KACA,IAAI,KAAKqI,IAAL,KAAc,QAAlB,EACA;OACC6E,aAAa,CAACC,oBAAd,GAAqCtG,IAArC,CAA0C,MAAM;SAC/C,KAAKuG,gCAAL,CAAsCF,aAAtC,EAAqDlN,UAArD;QADD;MAFD,MAMK,IAAI,KAAKqI,IAAL,KAAc,QAAlB,EACL;OACC6E,aAAa,CAACG,oBAAd,GAAqCxG,IAArC,CAA0C,MAAM;SAC/C,KAAKuG,gCAAL,CAAsCF,aAAtC,EAAqDlN,UAArD;QADD;MAFI,MAMA,IAAI,KAAKqI,IAAL,KAAc,WAAlB,EACL;OACC6E,aAAa,CAACI,uBAAd,GAAwCzG,IAAxC,CAA6C,MAAM;SAClD,KAAKuG,gCAAL,CAAsCF,aAAtC,EAAqDlN,UAArD;QADD;MAFI,MAOL;OACC,KAAKoN,gCAAL,CAAsCF,aAAtC,EAAqDlN,UAArD;;;;GAIFoN,gCAAgC,CAACF,aAAD,EAAgBlN,UAAhB,EAChC;KACC,MAAMd,OAAO,GAAGgO,aAAa,CAACK,0BAAd,EAAhB;KAEA,KAAKhG,UAAL,CAAgB;OACfwE,QAAQ,EAAE,wBAAwB/L,UAAU,CAACvB,EAD9B;OAEfS,OAAO,EAAEA,OAFM;OAGfoN,SAAS,EAAE,KAHI;OAIfD,IAAI,EAAE;SACLxG,QAAQ,EAAE,IADL;SAEL7F,UAAU,EAAEA,UAFP;SAGLkN,aAAa,EAAEA;;MAPjB;;;GAYDH,oBAAoB,GACpB;KACC,MAAMS,SAAS,GAAGC,oBAAU,CAACC,QAAX,CAAoB,KAAK/B,gBAAL,EAApB,CAAlB;;KACA,IAAIlK,cAAI,CAACkM,UAAL,CAAgBH,SAAhB,CAAJ,EACA;OACC,OAAOA,SAAP;;;KAGD,OAAO,IAAP;;;GAGDI,iBAAiB,CAACnP,EAAD,EACjB;KACC,MAAMH,WAAW,GAAG,KAAKyH,cAAL,EAApB;;KACA,IAAIzH,WAAW,CAAC0H,MAAZ,GAAqB,CAAzB,EACA;OACC,MAAM6H,MAAM,GAAGvP,WAAW,CAACwP,MAAZ,CAAmB9N,UAAU,IAAI;SAC/C,OAAOA,UAAU,CAAC2D,KAAX,MAAsBlF,EAA7B;QADc,CAAf;;OAGA,IAAIoP,MAAJ,EACA;SACC,OAAOA,MAAM,CAAC,CAAD,CAAb;;;;KAIF,OAAO,IAAP;;;GAGDE,iBAAiB,GACjB;KACC,OAAO,KAAK5D,SAAZ;;;GAGD6D,gBAAgB,GAChB;KACC,OAAO,OAAO,KAAK3F,IAAnB;;;GAGD4F,iBAAiB,CAACC,KAAD,EACjB;KACC,KAAKC,cAAL,GAAsBD,KAAtB;;;GAGDxC,iBAAiB,GACjB;KACC,OAAO,KAAKyC,cAAZ;;;GAGDC,cAAc,CAACC,SAAD,EACd;KACC,MAAMC,MAAM,GAAG,KAAKC,eAAL,EAAf;;KACA,IAAID,MAAJ,EACA;OACC,IAAID,SAAS,CAAC/J,MAAV,KAAqB,KAAKwF,UAA9B,EACA;SACCwE,MAAM,CAACE,aAAP,CAAqBH,SAArB;QAFD,MAKA;SACCC,MAAM,CAACG,iBAAP,CAAyBJ,SAAzB;;;;;GAKHpF,WAAW,CAACX,QAAQ,GAAG,EAAZ,EACX;KACC,KAAKA,QAAL,GAAgBA,QAAhB;;KACA,IAAI,KAAKwC,aAAL,EAAJ,EACA;OACC,KAAKA,aAAL,GAAqB7B,WAArB,CAAiCX,QAAjC;;;;GAIFoG,eAAe,CAACJ,MAAD,EACf;KACC,KAAKK,YAAL,GAAoBL,MAApB;KACAA,MAAM,CAACM,SAAP,CAAiB,qBAAjB,EAAwC,KAAKC,uBAAL,CAA6BxJ,IAA7B,CAAkC,IAAlC,CAAxC;KACAiJ,MAAM,CAACM,SAAP,CAAiB,SAAjB,EAA4B,KAAKE,iBAAL,CAAuBzJ,IAAvB,CAA4B,IAA5B,CAA5B;KACAiJ,MAAM,CAACM,SAAP,CAAiB,wBAAjB,EAA2C,KAAKG,gBAAL,CAAsB1J,IAAtB,CAA2B,IAA3B,CAA3C;KACAiJ,MAAM,CAACM,SAAP,CAAiB,sBAAjB,EAAyC,KAAKI,cAAL,CAAoB3J,IAApB,CAAyB,IAAzB,CAAzC;;;GAGDkJ,eAAe,GACf;KACC,OAAO,KAAKI,YAAL,IAAqB,IAA5B;;;GAGDI,gBAAgB,GAChB;KACC,KAAKrL,IAAL,CAAU,oBAAV;KACA,KAAKuL,yBAAL,GAAiCxM,UAAU,CAAC,MAAM;OACjD,IAAI,KAAK8L,eAAL,MAA0B,KAAKA,eAAL,GAAuB5B,SAAvB,EAA9B,EACA;SACCzK,EAAE,CAACgN,MAAH;;MAHyC,EAKvC,KAAKlF,qBALkC,CAA3C;;;GASDgF,cAAc,GACd;KACC,KAAKtL,IAAL,CAAU,kBAAV;;KACA,IAAI,KAAKuL,yBAAT,EACA;OACC7I,YAAY,CAAC,KAAK6I,yBAAN,CAAZ;OACA,KAAKA,yBAAL,GAAiC,IAAjC;;;;GAIFJ,uBAAuB,GACvB;KACC,KAAK7F,SAAL,CAAe,KAAKU,cAApB;KACA,KAAK8B,gBAAL,GAAwB2D,aAAxB,CAAsC,KAAKzF,cAA3C;KAEAxH,EAAE,CAAC8E,IAAH,CAAQC,SAAR,CAAkB,yDAAlB,EAA6E;OAC5EoF,IAAI,EAAE;SACL+C,WAAW,EAAE,KAAKtG,OAAL;;MAFf,EAJD;;;KAYC,MAAMuG,eAAe,GAAGC,kBAAI,CAACC,kBAAL,EAAxB;;KACA,IAAIF,eAAJ,EACA;OACCA,eAAe,CAACG,aAAhB,CAA8BC,eAA9B;;;;GAIFX,iBAAiB,GACjB;KACC,MAAMR,MAAM,GAAG,KAAKC,eAAL,EAAf;KACA,KAAKN,iBAAL,CAAuB,KAAvB;;KACA,IAAIK,MAAM,IAAIA,MAAM,CAACoB,cAAP,EAAd,EACA;OACC,KAAK1G,SAAL,CAAe,KAAKU,cAApB;OACA,KAAK8B,gBAAL,GAAwB2D,aAAxB,CAAsC,KAAKzF,cAA3C;MAHD,MAMA;OACC,KAAKV,SAAL,CAAe,KAAKS,oBAApB;OACA,KAAK+B,gBAAL,GAAwB2D,aAAxB,CAAsC,KAAK1F,oBAA3C;OAEAvH,EAAE,CAAC0J,SAAH,CAAaC,QAAb,CAAsB8D,cAAtB,GAAuC5P,OAAvC,CAA+CkM,MAAM,IACrD;SACC,IAAI,CAAC,sBAAD,EAAyB,yBAAzB,EACFjB,QADE,CACOiB,MAAM,CAAC2D,MAAP,EADP,CAAJ,EAEA;WACC3D,MAAM,CAACY,KAAP;;QALF;;;KAUD,KAAKrB,gBAAL,GAAwBzI,aAAxB;KAEA,KAAKW,IAAL,CAAU,kBAAV;KAEA,KAAKA,IAAL,CAAU,mBAAV;;KAEA,IAAI4K,MAAJ,EACA;OACCA,MAAM,CAACuB,cAAP;;;;GAIFvN,OAAO,CAAClE,OAAD,EACP;KACC,KAAKkG,MAAL,GAAclG,OAAO,CAAC0R,QAAR,CAAiBxL,MAAjB,IAA2B,KAAzC;KACA,KAAK6D,SAAL,GAAiB/J,OAAO,CAAC0R,QAAR,CAAiB3H,SAAjB,IAA8B,KAA/C;KACA,KAAK1J,EAAL,GAAUL,OAAO,CAAC0R,QAAR,CAAiBrR,EAAjB,IAAuB,IAAjC;;KAEA,IAAIL,OAAO,CAAC2R,QAAZ,EACA;OACC,KAAKA,QAAL,GAAgB3R,OAAO,CAAC2R,QAAxB;;;KAGD,KAAK5G,WAAL,CAAiB/K,OAAO,CAAC0R,QAAR,CAAiBE,UAAlC;KACA,KAAKjF,WAAL,CAAiB3M,OAAO,CAACwK,QAAzB;KACA,KAAKwC,gBAAL;KACA,KAAKC,cAAL;;;CAheF;;CCNO,MAAM4E,cAAN,SAA6B7G,kBAA7B,CACP;GACCjL,WAAW,CAACC,OAAD,EACX;KACC,MAAM;OACLK,EAAE,EAAEL,OAAO,CAAC0R,QAAR,CAAiBrR,EAAjB,IAAuB,IADtB;OAEL6F,MAAM,EAAElG,OAAO,CAAC0R,QAAR,CAAiBxL,MAAjB,IAA2B,KAF9B;OAGL6D,SAAS,EAAE/J,OAAO,CAAC0R,QAAR,CAAiB3H,SAAjB,IAA8B,KAHpC;OAILG,QAAQ,EAAElK,OAAO,CAAC0R,QAAR,CAAiBxH,QAAjB,IAA6B,EAJlC;OAKL6B,SAAS,EAAEnI,aAAG,CAACC,UAAJ,CAAe,uBAAf,CALN;OAMLmI,SAAS,EAAE,SANN;OAOLC,QAAQ,EAAE,yCAPL;OAQLhC,IAAI,EAAE,QARD;OASL6H,kBAAkB,EAAE,EATf;OAUL5F,kBAAkB,EAAE,KAVf;OAWLC,aAAa,EAAE,2CAXV;OAYLN,SAAS,EAAE7L,OAAO,CAAC6L;MAZpB;KAcA,KAAK/B,cAAL,GAAsBlG,aAAG,CAACC,UAAJ,CAAe,uBAAf,CAAtB;KACA,KAAKkO,uBAAL,GAA+B/R,OAAO,CAAC+R,uBAAvC;KACA,KAAKJ,QAAL,GAAgB3R,OAAO,CAAC2R,QAAxB;KAEA,KAAK5G,WAAL,CAAiB/K,OAAO,CAAC0R,QAAR,CAAiBE,UAAlC;KACA,KAAKjF,WAAL,CAAiB3M,OAAO,CAACwK,QAAzB;KACA,KAAKyC,cAAL;;;GAGD+E,WAAW,GACX;KACC,OAAO,KAAKL,QAAZ;;;GAGDM,wBAAwB,GACxB;KACC,OAAO,KAAKF,uBAAZ;;;GAGDG,cAAc,GACd;KACCpO,EAAE,CAAC8E,IAAH,CAAQC,SAAR,CAAkB,8CAAlB,EAAkE;OACjEoF,IAAI,EAAE;MADP,EAEGxF,IAFH,CAGC0J,QAAQ,IAAI;OAAA;;OACX,IAAI,CAAAA,QAAQ,QAAR,8BAAAA,QAAQ,CAAElE,IAAV,oCAAgB/H,MAAhB,MAA2B,KAAKwF,UAApC,EACA;SAAA;;SACC,KAAKd,SAAL,CAAe,KAAKW,aAApB;SACA,KAAKyE,cAAL,CACC;WACC9J,MAAM,EAAE,KAAKwF,UADd;WAEC0G,UAAU,EAAE,KAAKnI,IAFlB;WAGCoI,WAAW,EAAEF,QAAF,uCAAEA,QAAQ,CAAElE,IAAZ,8CAAE,gBAAgBqE,eAAlB,qBAAE,sBAAiCC;UAJhD;QAHD,MAYA;SAAA;;SACC,KAAKvC,cAAL,CACC;WACCwC,KAAK,EAAE,oBADR;WAECJ,UAAU,EAAE,KAAKnI,IAFlB;WAGCoI,WAAW,EAAEF,QAAF,uCAAEA,QAAQ,CAAElE,IAAZ,8CAAE,gBAAgBqE,eAAlB,qBAAE,sBAAiCC;UAJhD;;;OASD,KAAKjN,IAAL,CACC,mBADD,EAEC,IAAImN,eAAK,CAACC,SAAV,CAAoB;SACpBzE,IAAI,EAAE;WACLyD,QAAQ,EAAES,QAAQ,CAAClE,IAAT,CAAcyD;;QAFzB,CAFD;MA1BF,EAkCCS,QAAQ,IAAI;OACX,KAAKvH,SAAL,CAAe,KAAKW,aAApB;OACA,KAAKyE,cAAL,CACC;SACC9J,MAAM,EAAE,KAAKwF,UADd;SAEC0G,UAAU,EAAE,KAAKnI;QAHnB;MApCF;;;CAtCF;;CCDO,MAAM0I,iBAAN,SAAgC3H,kBAAhC,CACP;GACCjL,WAAW,CAACC,OAAD,EACX;KACC,MAAM;OACLK,EAAE,EAAEL,OAAO,CAAC0R,QAAR,CAAiBrR,EAAjB,IAAuB,IADtB;OAEL6F,MAAM,EAAElG,OAAO,CAAC0R,QAAR,CAAiBxL,MAAjB,IAA2B,KAF9B;OAGL6D,SAAS,EAAE/J,OAAO,CAAC0R,QAAR,CAAiB3H,SAAjB,IAA8B,KAHpC;OAILG,QAAQ,EAAElK,OAAO,CAAC0R,QAAR,CAAiBxH,QAAjB,IAA6BlK,OAAO,CAAC0R,QAAR,CAAiB5H,cAA9C,IAAgE,EAJrE;OAKLiC,SAAS,EAAEnI,aAAG,CAACC,UAAJ,CAAe,0BAAf,CALN;OAMLmI,SAAS,EAAE,SANN;OAOLC,QAAQ,EAAE,4CAPL;OAQLhC,IAAI,EAAE,WARD;OASL6H,kBAAkB,EAAE,EATf;OAUL5F,kBAAkB,EAAE,KAVf;OAWLC,aAAa,EAAE,8CAXV;OAYLN,SAAS,EAAE;MAZZ;KAcA,KAAK/B,cAAL,GAAsBlG,aAAG,CAACC,UAAJ,CAAe,0BAAf,CAAtB;KACA,KAAK8N,QAAL,GAAgB3R,OAAO,CAAC2R,QAAR,IAAoB,EAApC;KACA,KAAKiB,0BAAL,GAAkC5S,OAAO,CAAC4S,0BAA1C;KAEA,KAAK7H,WAAL,CAAiB/K,OAAO,CAAC0R,QAAR,CAAiBE,UAAlC;KACA,KAAKjF,WAAL,CAAiB3M,OAAO,CAACwK,QAAzB;KACA,KAAKyC,cAAL;;;GAGD+E,WAAW,GACX;KACC,OAAO,KAAKL,QAAZ;;;GAGDkB,2BAA2B,GAC3B;KACC,OAAO,KAAKD,0BAAZ;;;GAGDE,gBAAgB,CAACzS,EAAD,EAChB;KACCyD,EAAE,CAAC8E,IAAH,CAAQC,SAAR,CAAkB,4CAAlB,EAAgE;OAC/DoF,IAAI,EAAE;SACL8E,YAAY,EAAE1S;;MAFhB,EAIGoI,IAJH,CAIQ,MAAM;OACb3E,EAAE,CAACgN,MAAH;MALD;;;CAtCF;;CCDO,MAAMkC,cAAN,SAA6BhI,kBAA7B,CACP;GACCjL,WAAW,CAACC,OAAD,EACX;KACC,MAAM;OACLK,EAAE,EAAEL,OAAO,CAAC0R,QAAR,CAAiBrR,EAAjB,IAAuB,IADtB;OAEL6F,MAAM,EAAElG,OAAO,CAAC0R,QAAR,CAAiBxL,MAAjB,IAA2B,KAF9B;OAGL6D,SAAS,EAAE/J,OAAO,CAAC0R,QAAR,CAAiB3H,SAAjB,IAA8B,KAHpC;OAILG,QAAQ,EAAElK,OAAO,CAAC0R,QAAR,CAAiBxH,QAAjB,IAA6B,EAJlC;OAKL6B,SAAS,EAAEnI,aAAG,CAACC,UAAJ,CAAe,uBAAf,CALN;OAMLmI,SAAS,EAAE,SANN;OAOLC,QAAQ,EAAE,yCAPL;OAQLhC,IAAI,EAAE,QARD;OASL6H,kBAAkB,EAAE,EATf;OAUL5F,kBAAkB,EAAE,KAVf;OAWLC,aAAa,EAAE,2CAXV;OAYLN,SAAS,EAAE;MAZZ;KAcA,KAAK/B,cAAL,GAAsBlG,aAAG,CAACC,UAAJ,CAAe,uBAAf,CAAtB;KAEA,KAAKkH,WAAL,CAAiB/K,OAAO,CAAC0R,QAAR,CAAiBE,UAAlC;KACA,KAAKjF,WAAL,CAAiB3M,OAAO,CAACwK,QAAzB;KACA,KAAKyC,cAAL;;;CArBF;;CCDO,MAAMgG,eAAN,SAA8BjI,kBAA9B,CACP;GACCjL,WAAW,CAACC,OAAD,EACX;KACC,MAAM;OACLkG,MAAM,EAAElG,OAAO,CAAC0R,QAAR,CAAiBxL,MADpB;OAEL6D,SAAS,EAAE/J,OAAO,CAAC0R,QAAR,CAAiB3H,SAFvB;OAGLgC,SAAS,EAAEnI,aAAG,CAACC,UAAJ,CAAe,wBAAf,CAHN;OAILmI,SAAS,EAAE,SAJN;OAKLC,QAAQ,EAAE,0CALL;OAMLhC,IAAI,EAAE,SAND;OAOLiC,kBAAkB,EAAE,QAPf;OAQLC,aAAa,EAAE;MARhB;KAUA,KAAKrC,cAAL,GAAsBlG,aAAG,CAACC,UAAJ,CAAe,wBAAf,CAAtB;KAEA,KAAKkH,WAAL,CAAiB/K,OAAO,CAAC0R,QAAR,CAAiBE,UAAlC;KACA,KAAK3E,cAAL;;;CAhBF;;CCAO,MAAMiG,gBAAN,SAA+BlI,kBAA/B,CACP;GACCjL,WAAW,CAACC,OAAD,EACX;KACC,MAAMA,OAAN;;;GAGqB,OAAfmT,eAAe,CAACjT,WAAD,EACtB;KACC,IAAIA,WAAW,CAAC0H,MAAZ,KAAuB,CAA3B,EACA;OACC,OAAO,KAAP;;;KAGD,KAAK,IAAIwL,GAAT,IAAgBlT,WAAhB,EACA;OACC,IAAI,KAAKmT,mBAAL,CAAyBnT,WAAW,CAACkT,GAAD,CAApC,CAAJ,EACA;SACC,OAAO,KAAP;;;;KAIF,OAAO,IAAP;;;GAGyB,OAAnBC,mBAAmB,CAACzR,UAAD,EAC1B;KACC,IAAIA,UAAU,CAAC8P,QAAX,CAAoB3H,SAApB,KAAkC,IAAlC,IACAnI,UAAU,CAAC8P,QAAX,CAAoBxL,MAApB,KAA+B,KADnC,EAEA;OACC,OAAO,IAAP;;;KAGD,OAAO,KAAP;;;GAGDmG,OAAO,GACP;KACC,OAAO,KAAKtC,SAAZ;;;GAGDuJ,QAAQ,CAACzS,WAAD,EACR;KACC,IAAI,KAAK0S,IAAT,EACA;OACC,KAAKA,IAAL,CAAUzQ,OAAV;;;KAGD,MAAM0Q,SAAS,GAAG,KAAKC,YAAL,EAAlB;KACAD,SAAS,CAAC3L,IAAV,CAAe,GAAG,KAAK6L,kBAAL,EAAlB;KACA,KAAKH,IAAL,GAAY,KAAKI,OAAL,CAAa9S,WAAb,EAA0B2S,SAA1B,CAAZ;KACA,KAAKI,cAAL;KACA,KAAKL,IAAL,CAAU/R,IAAV;;;GAGDoS,cAAc,GACd;KACC,IAAI,KAAKL,IAAT,EACA;OACC,KAAKA,IAAL,CAAUM,gBAAV,GAA6B9O,gBAA7B,CAA8C,OAA9C,EAAuD,MACvD;SACC,KAAKwO,IAAL,CAAU9E,KAAV;QAFD;;;;GAOFgF,YAAY,GACZ;KACC,MAAMD,SAAS,GAAG,EAAlB;KACA,KAAKtT,WAAL,CAAiByB,OAAjB,CAAyBmS,IAAI,IAC7B;OACCA,IAAI,CAAC7J,IAAL,GAAY,KAAKA,IAAjB;OACA6J,IAAI,CAACzT,EAAL,GAAUyT,IAAI,CAAC9J,SAAL,CAAe3J,EAAzB;OACAyT,IAAI,CAACtN,IAAL,GAAYsN,IAAI,CAAChK,cAAjB;;OACAgK,IAAI,CAAClN,OAAL,GAAe,MACf;SACC,KAAKiI,0BAAL,CAAgCiF,IAAhC;QAFD;;OAIAN,SAAS,CAAC3L,IAAV,CAAeiM,IAAf;MATD;KAYA,OAAON,SAAP;;;GAGDE,kBAAkB,GAClB;KACC,OAAO,CACN;OAACK,SAAS,EAAE;MADN,EAEN;OACC1T,EAAE,EAAE,SADL;OAECmG,IAAI,EAAE5C,aAAG,CAACC,UAAJ,CAAe,qBAAf,CAFP;OAGC+C,OAAO,EAAE,MAAM;SACd,KAAK8H,wBAAL;;MANI,CAAP;;;GAYDiF,OAAO,CAAC9S,WAAD,EAAc2S,SAAd,EACP;KACC,OAAO,IAAI,CAACnL,MAAM,CAACC,GAAP,CAAWxE,EAAX,IAAiBuE,MAAM,CAACvE,EAAzB,EAA6BkQ,IAA7B,CAAkCC,IAAtC,CAA2C;OACjDrT,SAAS,EAAE,4BADsC;OAEjDC,WAAW,EAAEA,WAFoC;OAGjDqT,KAAK,EAAEV,SAH0C;OAIjDvS,KAAK,EAAE,KAAKgK,UAJqC;OAKjD7J,OAAO,EAAE,KAAK8J,YALmC;OAMjD3J,cAAc,EAAE,KAAK4J,UAN4B;OAOjD7J,QAAQ,EAAE,IAPuC;OAQjD6S,UAAU,EAAE,IARqC;OASjD9T,EAAE,EAAE,KAAKqK,OAAL,KAAiB,OAT4B;OAUjDxJ,UAAU,EAAE,CAAC;MAVP,CAAP;;;GAcD+L,cAAc,GACd;KACC,IAAI,KAAKmH,mBAAL,CAAyBxM,MAAzB,GAAkC,CAAtC,EACA;OACC,KAAKwM,mBAAL,CAAyBzS,OAAzB,CAAiCC,UAAU,IAAI;SAC9C,KAAK1B,WAAL,CAAiB2H,IAAjB,CAAsB+B,cAAc,CAACrJ,cAAf,CAA8B;WACnDuJ,cAAc,EAAElI,UAAU,CAAC8P,QAAX,CAAoB5H,cADe;WAEnD5D,MAAM,EAAEtE,UAAU,CAAC8P,QAAX,CAAoBxL,MAFuB;WAGnD6D,SAAS,EAAEnI,UAAU,CAAC8P,QAAX,CAAoB3H,SAHoB;WAInDC,SAAS,EAAE;aACVQ,QAAQ,EAAE5I,UAAU,CAAC4I,QADX;aAEVnK,EAAE,EAAEuB,UAAU,CAAC8P,QAAX,CAAoBrR,EAFd;aAGV6J,QAAQ,EAAEtI,UAAU,CAAC8P,QAAX,CAAoBxH,QAHpB;aAIVmK,MAAM,EAAEzS,UAAU,CAAC8P,QAAX,CAAoB2C;YARsB;WAUnDpK,IAAI,EAAE,KAAKA;UAVU,CAAtB;QADD;;;;CArHH;;CCFO,MAAMqK,cAAN,SAA6BpB,gBAA7B,CACP;GACCnT,WAAW,CAACC,OAAD,EACX;KACC,MAAM;OACLkG,MAAM,EAAElG,OAAO,CAACkG,MADX;OAEL6D,SAAS,EAAE/J,OAAO,CAAC+J,SAFd;OAGLgC,SAAS,EAAEnI,aAAG,CAACC,UAAJ,CAAe,uBAAf,CAHN;OAILmI,SAAS,EAAE,SAJN;OAKLC,QAAQ,EAAE,yCALL;OAMLhC,IAAI,EAAE,QAND;OAOLiC,kBAAkB,EAAE,KAPf;OAQLC,aAAa,EAAE;MARhB;KAWA,KAAKiI,mBAAL,GAA2BpU,OAAO,CAACE,WAAnC;;KAEA,IAAIF,OAAO,CAACE,WAAR,IAAuBF,OAAO,CAACE,WAAR,CAAoB,CAApB,CAAvB,IAAiDF,OAAO,CAACE,WAAR,CAAoB,CAApB,EAAuBwR,QAA5E,EACA;OACC,KAAK3G,WAAL,CAAiB/K,OAAO,CAACE,WAAR,CAAoB,CAApB,EAAuBwR,QAAvB,CAAgCE,UAAjD;;;KAED,KAAK3E,cAAL;;;CApBF;;CCDO,MAAMsH,gBAAN,SAA+BvJ,kBAA/B,CACP;GACCjL,WAAW,CAACC,OAAD,EACX;KACC,MAAM;OACLkG,MAAM,EAAElG,OAAO,CAAC0R,QAAR,CAAiBxL,MAAjB,IAA2B,KAD9B;OAEL6D,SAAS,EAAE/J,OAAO,CAAC0R,QAAR,CAAiB3H,SAAjB,IAA8B,KAFpC;OAGLgC,SAAS,EAAEnI,aAAG,CAACC,UAAJ,CAAe,yBAAf,CAHN;OAILmI,SAAS,EAAE,SAJN;OAKLC,QAAQ,EAAE,2CALL;OAMLhC,IAAI,EAAE,UAND;OAOLiC,kBAAkB,EAAE,KAPf;OAQLC,aAAa,EAAE;MARhB;KAUA,KAAKrC,cAAL,GAAsBlG,aAAG,CAACC,UAAJ,CAAe,yBAAf,CAAtB;KAEA,KAAKkH,WAAL,CAAiB/K,OAAO,CAAC0R,QAAR,CAAiBE,UAAlC;KACA,KAAKjF,WAAL,CAAiB3M,OAAO,CAACwK,QAAzB;KACA,KAAKyC,cAAL;;;CAjBF;;CCDO,MAAMuH,cAAN,SAA6BxJ,kBAA7B,CACP;GACCjL,WAAW,CAACC,OAAD,EACX;KACC,MAAM;OACLkG,MAAM,EAAElG,OAAO,CAAC0R,QAAR,CAAiBxL,MADpB;OAEL6D,SAAS,EAAE/J,OAAO,CAAC0R,QAAR,CAAiB3H,SAFvB;OAGLgC,SAAS,EAAEnI,aAAG,CAACC,UAAJ,CAAe,uBAAf,CAHN;OAILmI,SAAS,EAAE,SAJN;OAKLC,QAAQ,EAAE,yCALL;OAMLhC,IAAI,EAAE,QAND;OAOLiC,kBAAkB,EAAE,QAPf;OAQLC,aAAa,EAAE;MARhB;KAUA,KAAKrC,cAAL,GAAsBlG,aAAG,CAACC,UAAJ,CAAe,uBAAf,CAAtB;KAEA,KAAKkH,WAAL,CAAiB/K,OAAO,CAAC0R,QAAR,CAAiBE,UAAlC;KACA,KAAK3E,cAAL;;;CAhBF;;CCDO,MAAMwH,WAAN,SAA0BzJ,kBAA1B,CACP;GACCjL,WAAW,CAACC,OAAD,EACX;KACC,MAAM;OACLkG,MAAM,EAAElG,OAAO,CAAC0R,QAAR,CAAiBxL,MADpB;OAEL6D,SAAS,EAAE/J,OAAO,CAAC0R,QAAR,CAAiB3H,SAFvB;OAGLgC,SAAS,EAAEnI,aAAG,CAACC,UAAJ,CAAe,oBAAf,CAHN;OAILmI,SAAS,EAAE,SAJN;OAKLC,QAAQ,EAAE,sCALL;OAMLhC,IAAI,EAAE,KAND;OAOLiC,kBAAkB,EAAE,KAPf;OAQLC,aAAa,EAAE;MARhB;KAUA,KAAKuI,aAAL,GAAqB1U,OAAO,CAAC0U,aAA7B;KACA,KAAK5K,cAAL,GAAsBlG,aAAG,CAACC,UAAJ,CAAe,oBAAf,CAAtB;KAEA,KAAKkH,WAAL,CAAiB/K,OAAO,CAAC0R,QAAR,CAAiBE,UAAlC;KACA,KAAK3E,cAAL;;;GAGD0H,gBAAgB,GAChB;KACC,OAAO,KAAKD,aAAZ;;;CAtBF;;CCEO,MAAME,eAAN,SAA8B5J,kBAA9B,CACP;GACCjL,WAAW,CAACC,OAAD,EACX;KACC,MAAM;OACLkG,MAAM,EAAElG,OAAO,CAAC0R,QAAR,CAAiBxL,MADpB;OAEL6D,SAAS,EAAE/J,OAAO,CAAC0R,QAAR,CAAiB3H,SAFvB;OAGLgC,SAAS,EAAEnI,aAAG,CAACC,UAAJ,CAAe,wBAAf,CAHN;OAILmI,SAAS,EAAE,SAJN;OAKLC,QAAQ,EAAE,0CALL;OAMLhC,IAAI,EAAE,SAND;OAOLiC,kBAAkB,EAAE,KAPf;OAQLC,aAAa,EAAE;MARhB;KAUA,KAAKpB,WAAL,CAAiB/K,OAAO,CAAC0R,QAAR,CAAiBE,UAAlC;KACA,KAAK9H,cAAL,GAAsBlG,aAAG,CAACC,UAAJ,CAAe,wBAAf,CAAtB;KAEA,KAAK2G,QAAL,GAAgBxK,OAAO,CAACwK,QAAxB;KACA,KAAKqK,cAAL,GAAsB7U,OAAO,CAAC6U,cAA9B;KAEA,KAAK5H,cAAL;;;GAGDZ,OAAO,GACP;KACC,OAAO,KAAK7B,QAAL,CAAc5C,MAAd,GAAuB,CAA9B;;;GAGD0L,QAAQ,CAACzS,WAAD,EACR;KACC,IAAI,KAAKwL,OAAL,EAAJ,EACA;OACC,IAAI,KAAKkH,IAAT,EACA;SACC,KAAKA,IAAL,CAAUzQ,OAAV;;;OAED,MAAM0Q,SAAS,GAAG,KAAK9G,aAAL,GAAqBnC,WAArB,EAAlB;OAEAiJ,SAAS,CAAC7R,OAAV,CAAkBmS,IAAI,IACtB;SACC,IAAI,KAAKe,cAAL,CAAoBf,IAAI,CAACzT,EAAzB,CAAJ,EACA;WACCyT,IAAI,CAAClT,SAAL,GAAiB,kCAAjB;;;SAGDkT,IAAI,CAAClN,OAAL,GAAe,MACf;WACC,KAAKkO,gBAAL,CAAsBhB,IAAtB;UAFD;QAPD;OAaA,KAAKP,IAAL,GAAY,IAAI,CAAClL,MAAM,CAACC,GAAP,CAAWxE,EAAX,IAAiBuE,MAAM,CAACvE,EAAzB,EAA6BkQ,IAA7B,CAAkCC,IAAtC,CAA2C;SACtDrT,SAAS,EAAE,4BAD2C;SAEtDC,WAAW,EAAEA,WAFyC;SAGtDqT,KAAK,EAAEV,SAH+C;SAItDpS,OAAO,EAAE,CAJ6C;SAKtDE,QAAQ,EAAE,IAL4C;SAMtD6S,UAAU,EAAE,IAN0C;SAOtD5S,cAAc,EAAE,IAPsC;SAQtDlB,EAAE,EAAE,KAAKqK,OAAL,KAAiB,OARiC;SAStDxJ,UAAU,EAAE,CAAC;QATF,CAAZ;OAYA,KAAKqS,IAAL,CAAUM,gBAAV,GAA6B9O,gBAA7B,CAA8C,OAA9C,EAAuD,MACvD;SACC,KAAKwO,IAAL,CAAU9E,KAAV;QAFD;OAKA,KAAK8E,IAAL,CAAU/R,IAAV;;;;GAIFsT,gBAAgB,CAACC,OAAD,EAChB;KACC,IAAIA,OAAO,CAAC1U,EAAZ,EACA;OACCyD,EAAE,CAAC8E,IAAH,CAAQC,SAAR,CAAkB,sCAAlB,EAA0D;SACzDoF,IAAI,EAAE;WACL5N,EAAE,EAAE0U,OAAO,CAAC1U;;QAFd,EAKEoI,IALF,CAMG0J,QAAD,IAAc;SACb,MAAM6C,GAAG,GAAG7C,QAAQ,CAAClE,IAAT,CAAcwB,MAA1B;SACAwF,IAAI,CAACD,GAAD,CAAJ;QARH;;;;CA3EH;;CCJO,MAAME,cAAN,SAA6BhC,gBAA7B,CACP;GACCnT,WAAW,CAACC,OAAD,EACX;KACC,MAAM;OACLkG,MAAM,EAAElG,OAAO,CAACkG,MADX;OAEL6D,SAAS,EAAE/J,OAAO,CAAC+J,SAFd;OAGLgC,SAAS,EAAEnI,aAAG,CAACC,UAAJ,CAAe,uBAAf,CAHN;OAILmI,SAAS,EAAE,SAJN;OAKLC,QAAQ,EAAE,yCALL;OAMLhC,IAAI,EAAE,QAND;OAOLiC,kBAAkB,EAAE,KAPf;OAQLC,aAAa,EAAE;MARhB;KAWA,KAAKrC,cAAL,GAAsBlG,aAAG,CAACC,UAAJ,CAAe,uBAAf,CAAtB;KACA,KAAKuQ,mBAAL,GAA2BpU,OAAO,CAACE,WAAnC;;KAEA,IAAIF,OAAO,CAACE,WAAR,IAAuBF,OAAO,CAACE,WAAR,CAAoB,CAApB,CAAvB,IAAiDF,OAAO,CAACE,WAAR,CAAoB,CAApB,EAAuBwR,QAA5E,EACA;OACC,KAAK3G,WAAL,CAAiB/K,OAAO,CAACE,WAAR,CAAoB,CAApB,EAAuBwR,QAAvB,CAAgCE,UAAjD;;;KAED,KAAK3E,cAAL;;;CArBF;;CC4Be,MAAMkI,OAAN,SAAsBrV,6BAAtB,CACf;GAYCC,WAAW,CAACC,OAAD,EACX;KACC;KADD,KAZAkG,MAYA,GAZS,eAYT;KAAA,KAXAoF,cAWA,GAXiB,SAWjB;KAAA,KAVAC,aAUA,GAVgB,QAUhB;KAAA,KATAE,oBASA,GATuB,eASvB;KAAA,KARA2J,gBAQA,GARmB,kBAQnB;KAAA,KAPA/J,oBAOA,GAPuB,eAOvB;KAAA,KANAgK,6BAMA,GANgC,IAMhC;KAAA,KALAC,aAKA,GALgB,GAKhB;KAAA,KAJAC,qBAIA,GAJwB,GAIxB;KAAA,KAHAC,oBAGA,GAHuB,sBAGvB;KAEC,KAAKvV,iBAAL,CAAuB,kCAAvB;KAEA,KAAK+F,OAAL,GAAehG,OAAO,CAACgG,OAAvB;KACA,KAAKyP,WAAL,CAAiBzV,OAAO,CAAC0R,QAAzB;KACA,KAAKzL,MAAL,GAAcjG,OAAO,CAACiG,MAAtB;KACA,KAAKyP,SAAL,GAAiB1V,OAAO,CAAC0V,SAAzB;KACA,KAAKlL,QAAL,GAAgBxK,OAAO,CAACwK,QAAxB;KACA,KAAKkK,aAAL,GAAqB1U,OAAO,CAAC0U,aAA7B;KACA,KAAKiB,QAAL,GAAgB3V,OAAO,CAAC2V,QAAxB;KACA,KAAKC,gBAAL,GAAwB5V,OAAO,CAAC6V,QAAhC;KACA,KAAK9D,uBAAL,GAA+B/R,OAAO,CAAC+R,uBAAvC;KACA,KAAKa,0BAAL,GAAkC5S,OAAO,CAAC4S,0BAA1C;KACA,KAAKvB,eAAL,GAAuB9I,iBAAO,CAACuN,QAAR,CAAiB,KAAK5R,OAAtB,EAA+B,KAAKoR,aAApC,EAAmD,IAAnD,CAAvB;KACA,KAAKS,sBAAL,GAA8BxN,iBAAO,CAACuN,QAAR,CAAiB,KAAKE,cAAtB,EAAsC,KAAKT,qBAA3C,EAAkE,IAAlE,CAA9B;KAEA,KAAKjV,IAAL;KACA,KAAK2V,gBAAL;;;GAGDA,gBAAgB,GAChB;KACCnW,6BAAY,CAAC0Q,SAAb,CAAuB,sDAAvB,EAA+EnC,KAAK,IAAI;OACvF,KAAKgD,eAAL,CAAqBhD,KAArB;MADD;KAIAvO,6BAAY,CAAC0Q,SAAb,CAAuB,iEAAvB,EAA0FnC,KAAK,IAAI;OAClG,KAAK6H,kBAAL;MADD;KAIA7N,MAAM,CAACtD,gBAAP,CAAwB,SAAxB,EAAoCsJ,KAAD,IAAW;OAC7C,IAAIA,KAAK,CAACJ,IAAN,CAAW5L,KAAX,KAAqB,oBAAzB,EACA;SACCgG,MAAM,CAAC8N,QAAP,CAAgBrF,MAAhB;;MAHF;;;GAQDsF,cAAc,GACd;KACC,KAAKC,UAAL,GAAkB,IAAI7Q,UAAJ,CAAe;OAChCU,MAAM,EAAE,KAAKA,MADmB;OAEhCF,OAAO,EAAE,KAAKA,OAFkB;OAGhCD,oBAAoB,EAAE,KAAKA,oBAHK;OAIhCE,MAAM,EAAE,KAAKA;MAJI,CAAlB;KAMA,KAAKoQ,UAAL,CAAgB7U,IAAhB;;;GAGDlB,IAAI,GACJ;KACC,KAAKyF,oBAAL,GAA4B,EAA5B;KACA,MAAMuQ,iBAAiB,GAAG,EAA1B;KACA,MAAMC,iBAAiB,GAAG,EAA1B;KAEA,MAAM7E,QAAQ,GAAG,KAAKA,QAAtB;KACA,KAAK8E,cAAL,GAAsB,KAAKC,YAAL,EAAtB;;KAEA,KAAK,IAAIrD,GAAT,IAAgB1B,QAAhB,EACA;OACC,IAAIA,QAAQ,CAACgF,cAAT,CAAwBtD,GAAxB,CAAJ,EACA;SACC,QAAQ1B,QAAQ,CAAC0B,GAAD,CAAR,CAAcnJ,IAAtB;WAEC,KAAK,QAAL;aACCqM,iBAAiB,CAACzO,IAAlB,CAAuB;eACtB6J,QAAQ,EAAEA,QAAQ,CAAC0B,GAAD,CADI;eAEtB5I,QAAQ,EAAE,KAAKgM,cAAL,CAAoBG,MAApB,CAA2B,WAAWjF,QAAQ,CAAC0B,GAAD,CAAR,CAAc/S,EAApD,CAFY;eAGtBsV,QAAQ,EAAE,KAAKA;cAHhB;aAKA;;WACD,KAAK,QAAL;aACCY,iBAAiB,CAAC1O,IAAlB,CAAuB;eACtB6J,QAAQ,EAAEA,QAAQ,CAAC0B,GAAD,CADI;eAEtB5I,QAAQ,EAAE,KAAKgM,cAAL,CAAoBG,MAApB,CAA2B,WAAWjF,QAAQ,CAAC0B,GAAD,CAAR,CAAc/S,EAApD;cAFX;aAIA;;;;;KAKJ,KAAK0F,oBAAL,GAA4B;OAC3B6Q,MAAM,EAAE,KAAKC,iBAAL,EADmB;OAE3BC,SAAS,EAAE,KAAKC,oBAAL,EAFgB;OAG3BC,MAAM,EAAE,KAAKC,iBAAL,EAHmB;OAI3BN,MAAM,EAAE,KAAKO,iBAAL,CAAuBX,iBAAvB,CAJmB;OAK3BY,MAAM,EAAE,KAAKC,iBAAL,EALmB;OAM3BC,OAAO,EAAE,KAAKC,kBAAL,EANkB;OAO3BC,GAAG,EAAE,KAAKC,cAAL;MAPN;;KAUA,IAAI,KAAK7B,QAAT,EACA;OACC,KAAK5P,oBAAL,CAA0B0R,MAA1B,GAAmC,KAAKC,iBAAL,CAAuBpB,iBAAvB,CAAnC;;;KAGD,IAAI,CAACxS,EAAE,CAAC6T,OAAH,CAAWC,KAAX,EAAL,EACA;OACC,KAAK7R,oBAAL,CAA0B8R,OAA1B,GAAoC,KAAKC,kBAAL,EAApC;;;KAGD,IAAIpG,QAAQ,CAACgF,cAAT,CAAwB,UAAxB,CAAJ,EACA;OACC,KAAK3Q,oBAAL,CAA0BgS,QAA1B,GAAqC,KAAKC,mBAAL,EAArC;;;KAGD,KAAK9R,MAAL,GAAc,KAAK+R,oBAAL,EAAd;KACA,KAAKC,sBAAL;;;GAGDC,WAAW,CAACrI,KAAD,EACX;KACC,KAAKsI,QAAL,GAAgBtI,KAAhB;;;GAGDuI,WAAW,GACX;KACC,OAAO,KAAKD,QAAZ;;;GAGDE,gBAAgB,GAChB;KACC,KAAK,IAAIC,YAAT,IAAyB,KAAKxS,oBAA9B,EACA;OACC,IAAI,KAAKA,oBAAL,CAA0B2Q,cAA1B,CAAyC6B,YAAzC,KACA,KAAKxS,oBAAL,CAA0BwS,YAA1B,EAAwCjL,iBAAxC,EADJ,EAEA;SACC,OAAO,IAAP;;;;KAGF,OAAO,KAAP;;;GAGDkL,eAAe,GACf;KACC,KAAK,IAAID,YAAT,IAAyB,KAAKxS,oBAA9B,EACA;OACC,IACC,KAAKA,oBAAL,CAA0B2Q,cAA1B,CAAyC6B,YAAzC,KACG,KAAKxS,oBAAL,CAA0BwS,YAA1B,EAAwCrW,aAAxC,OAA4D,KAAKmJ,oBAFrE,EAIA;SACC,OAAO,IAAP;;;;KAGF,OAAO,KAAP;;;GAGDoL,YAAY,GACZ;KACC,MAAMjM,QAAQ,GAAG,KAAKA,QAAtB;KACA,MAAMiO,gBAAgB,GAAG,EAAzB;KACA,MAAMC,cAAc,GAAG,EAAvB;KACA,MAAMC,cAAc,GAAG,EAAvB;KACA,MAAMnC,cAAc,GAAG,EAAvB;KACA,MAAMoC,eAAe,GAAG,EAAxB;KACA,MAAMC,iBAAiB,GAAG,EAA1B;KACArC,cAAc,CAACG,MAAf,GAAwB,EAAxB;KAEAnM,QAAQ,CAAC7I,OAAT,CAAiBoT,OAAO,IAAI;OAC3B,IACCA,OAAO,CAAC+D,aAAR,MACG/D,OAAO,CAAC9G,IAAR,CAAa8K,UADhB,IAEGhE,OAAO,CAAC9G,IAAR,CAAa,eAAb,MAAkC,OAHtC,EAKA;SACC2K,eAAe,CAAC/Q,IAAhB,CAAqB;WACpBxH,EAAE,EAAE0U,OAAO,CAAC1U,EADQ;WAEpB2Y,UAAU,EAAEjE,OAAO,CAAC9G,IAAR,CAAa8K,UAFL;WAGpBvS,IAAI,EAAEuO,OAAO,CAACkE;UAHf;;;OAOD,IAAIlE,OAAO,CAAC9G,IAAR,CAAa,aAAb,MAAgC,IAApC,EACA;SACCwK,gBAAgB,CAAC5Q,IAAjB,CAAsBkN,OAAO,CAAC9G,IAA9B;QAFD,MAIK,IACJ8G,OAAO,CAAC9G,IAAR,CAAa,kBAAb,KACG8G,OAAO,CAAC9G,IAAR,CAAa,aAAb,CADH,IAEG8G,OAAO,CAAC9G,IAAR,CAAa,eAAb,MAAkC,OAHjC,EAKL;SACCyK,cAAc,CAAC7Q,IAAf,CAAoBkN,OAAO,CAAC9G,IAA5B;QANI,MAQA,IAAI8G,OAAO,CAAC9G,IAAR,CAAa,eAAb,MAAkC,QAAtC,EACL;SACC0K,cAAc,CAAC9Q,IAAf,CAAoBkN,OAAO,CAAC9G,IAA5B;QAFI,MAIA,IAAI8G,OAAO,CAAC9G,IAAR,CAAa,eAAb,MAAkC,WAAtC,EACL;SACC4K,iBAAiB,CAAChR,IAAlB,CAAuBkN,OAAO,CAAC9G,IAA/B;QAFI,MAIA,IAAI8G,OAAO,CAAC9G,IAAR,CAAa,aAAb,KAA+B8G,OAAO,CAAC9G,IAAR,CAAa,aAAb,CAAnC,EACL;SACCuI,cAAc,CAACG,MAAf,CAAsB,WAAW5B,OAAO,CAAC9G,IAAR,CAAa,aAAb,CAAjC,IAAgE8G,OAAO,CAAC9G,IAAxE;;MApCF;KAwCAuI,cAAc,CAACI,MAAf,GAAwB8B,cAAxB;KACAlC,cAAc,CAACQ,MAAf,GAAwB2B,cAAxB;KACAnC,cAAc,CAACM,SAAf,GAA2B+B,iBAA3B;KACArC,cAAc,CAACuB,QAAf,GAA0BU,gBAA1B;KACAjC,cAAc,CAACqB,OAAf,GAAyBe,eAAzB;KAEA,OAAOpC,cAAP;;;GAGDtS,OAAO,CAACmK,KAAD,EACP;KACC,OAAO,IAAIP,OAAJ,CAAaC,OAAD,IAAa;OAC/BjK,EAAE,CAAC8E,IAAH,CAAQC,SAAR,CAAkB,wCAAlB,EAA4D;SAC3DoF,IAAI,EAAE;WACLhE,IAAI,EAAE,MADD;WAELiP,UAAU,EAAEhI,kBAAI,CAACiI,iBAAL;;QAHd,EAKG1Q,IALH,CAKS0J,QAAD,IAAc;SACrB,KAAKsD,WAAL,CAAiBtD,QAAQ,CAAClE,IAA1B;SACA,KAAK/H,MAAL,GAAc,KAAK+R,oBAAL,EAAd;SACA,MAAMmB,WAAW,GAAI/K,KAAK,IAAIA,KAAK,CAACgL,SAAhB,GAA6BhL,KAAK,CAACgL,SAAN,EAA7B,GAAiD,IAArE;SACA,KAAKrD,cAAL,CAAoBoD,WAApB;SACArL,OAAO;QAVR;MADM,CAAP;;;GAgBDiI,cAAc,CAACoD,WAAW,GAAG,EAAf,EACd;KACC,KAAK9Y,IAAL;KAEA,KAAKgZ,mBAAL;;KAEA,IAAI,KAAKjD,UAAT,EACA;OACC,KAAKA,UAAL,CAAgBnS,OAAhB,CAAwB,KAAKgC,MAA7B;OACA,KAAKmQ,UAAL,CAAgB7M,sBAAhB,CAAuC,KAAKzD,oBAA5C;;;KAGD,IAAIqT,WAAJ,EACA;OACC,KAAKG,kBAAL,CAAwBH,WAAxB;OACA,KAAKI,kBAAL,CAAwBJ,WAAxB;;;;GAIFE,mBAAmB,GACnB;KACC,KAAK1D,gBAAL,CAAsB9E,MAAtB;;;GAGDyI,kBAAkB,CAACH,WAAD,EAClB;KACC,IAAIA,WAAW,YAAYvZ,eAAvB,IAA0CuZ,WAAW,CAAC7T,KAAZ,OAAwB,2BAAtE,EACA;OACC6T,WAAW,CAAClV,OAAZ,CAAoB,KAAKyD,cAAL,EAApB;MAFD,MAIK,IAAI,KAAK0O,UAAL,CAAgB3V,KAAhB,YAAiCb,eAAjC,IAAoD,KAAKwW,UAAL,CAAgB3V,KAAhB,CAAsB6E,KAAtB,OAAkC,6BAA1F,EACL;OACC,KAAK8Q,UAAL,CAAgB3V,KAAhB,CAAsBwD,OAAtB,CAA8B,KAAKyD,cAAL,EAA9B;;;;GAIF6R,kBAAkB,CAACJ,WAAW,GAAG,EAAf,EAClB;KACC,MAAMK,WAAW,GAAG3V,EAAE,CAAC0J,SAAH,CAAaC,QAAb,CAAsB8D,cAAtB,EAApB;;KACA,IAAIkI,WAAW,CAAC7R,MAAZ,GAAqB,CAAzB,EACA;OACC6R,WAAW,CAAC9X,OAAZ,CAAoBkM,MAAM,IAAI;SAC7B,IAAIA,MAAM,CAAC2D,MAAP,OAAoB,gCAAxB,EACA;WACC,KAAKkI,iBAAL,CAAuB,KAAKrD,UAAL,CAAgB9M,YAAhB,EAAvB;UAFD,MAIK,IAAIsE,MAAM,CAAC2D,MAAP,GAAgBmI,OAAhB,CAAwB,qBAAxB,MAAmD,CAAC,CAAxD,EACL;WACC,KAAKC,uBAAL,CAA6B/L,MAA7B,EAAqCuL,WAArC;;QAPF;;;;GAaFQ,uBAAuB,CAAC/L,MAAD,EAASuL,WAAT,EACvB;KACC,IAAIS,iBAAiB,GAAGC,SAAxB;KACA,MAAMhL,aAAa,GAAGjB,MAAM,CAACkM,OAAP,GAAiBC,GAAjB,CAAqB,eAArB,CAAtB;KACA,MAAMpY,UAAU,GAAGiM,MAAM,CAACkM,OAAP,GAAiBC,GAAjB,CAAqB,YAArB,CAAnB;;KACA,IAAIpY,UAAJ,EACA;OACCiY,iBAAiB,GAAG,KAAK9T,oBAAL,CAA0BnE,UAAU,CAAC8I,OAAX,EAA1B,EAAgD8E,iBAAhD,CAAkE5N,UAAU,CAAC2D,KAAX,EAAlE,CAApB;;;KAGD,IAAI6T,WAAW,YAAYvZ,eAAvB,IAA0Cga,iBAA9C,EACA;OACCT,WAAW,CAAClV,OAAZ,CAAoB,CAAC2V,iBAAD,CAApB;;;KAGD,IAAI/K,aAAa,IAAI+K,iBAArB,EACA;OACC/K,aAAa,CAAC5K,OAAd,CAAsB2V,iBAAtB;;;KAGDhM,MAAM,CAACiD,MAAP;;;GAGD4I,iBAAiB,CAACzQ,SAAD,EACjB;KACCA,SAAS,CAAC/E,OAAV,CAAkB,KAAKgC,MAAvB,EAA+B,KAAKH,oBAApC;;;GAGD4B,cAAc,GACd;KACC,MAAMzH,WAAW,GAAG,EAApB;KACA,MAAMgU,KAAK,GAAG3M,MAAM,CAACC,MAAP,CAAc,KAAKzB,oBAAnB,CAAd;KAEAmO,KAAK,CAACvS,OAAN,CAAcmS,IAAI,IAAI;OACrB,MAAMmG,eAAe,GAAGnG,IAAI,CAACnM,cAAL,EAAxB;;OACA,IAAIsS,eAAe,CAACrS,MAAhB,GAAyB,CAA7B,EACA;SACCqS,eAAe,CAACtY,OAAhB,CAAwBC,UAAU,IAAI;WACpC,IAAIA,UAAU,CAACC,gBAAX,OAAkC,IAAtC,EACA;aACC3B,WAAW,CAAC2H,IAAZ,CAAiBjG,UAAjB;;UAHH;;MAJF;KAcA,OAAO1B,WAAP;;;GAGDgW,kBAAkB,GAClB;KACC,KAAKN,gBAAL,CAAsBsE,cAAtB;;;GAGDC,gBAAgB,CAACC,MAAD,EAChB;KACC,KAAK,IAAItQ,cAAT,IAA2BsQ,MAAM,CAAC1I,QAAlC,EACA;OACC,IACC0I,MAAM,CAAC1I,QAAP,CAAgBgF,cAAhB,CAA+B5M,cAA/B,KACG,KAAK4H,QAAL,CAAc5H,cAAd,CAFJ,EAIA;SACC,KAAK4H,QAAL,CAAc5H,cAAd,IAAgC,EAC/B,GAAG,KAAK4H,QAAL,CAAc5H,cAAd,CAD4B;WAE/B,GAAGsQ,MAAM,CAAC1I,QAAP,CAAgB5H,cAAhB;UAFJ;;;;KAOF,KAAK5D,MAAL,GAAc,KAAKoF,cAAnB;KACA,KAAKyK,sBAAL;;;GAGDsE,iBAAiB,CAACD,MAAD,EACjB;KACC,KAAK,MAAMtQ,cAAX,IAA6BsQ,MAAM,CAAC1I,QAApC,EACA;OACC,IAAI,CAAC,QAAD,EAAW,QAAX,EAAqB9E,QAArB,CAA8BwN,MAAM,CAAC1I,QAAP,CAAgB5H,cAAhB,EAAgCG,IAA9D,CAAJ,EACA;SACCnG,EAAE,CAACgN,MAAH;;;OAGD,IAAIhN,EAAE,CAACwW,QAAH,CAAYpJ,IAAZ,CAAiBqJ,cAAjB,CAAgCH,MAAM,CAAClB,UAAvC,CAAJ,EACA;SACC,IAAI,KAAKxH,QAAL,CAAc5H,cAAd,CAAJ,EACA;WACC,KAAK4H,QAAL,CAAc5H,cAAd,IAAgC,EAC/B,GAAG,KAAK4H,QAAL,CAAc5H,cAAd,CAD4B;aAE/B,GAAGsQ,MAAM,CAAC1I,QAAP,CAAgB5H,cAAhB;YAFJ;;;;;KAQH,KAAK5D,MAAL,GAAc,KAAKoF,cAAnB;KACA,KAAKyK,sBAAL;;;GAGDyE,oBAAoB,CAACJ,MAAD,EACpB;KACC,IAAI,CAACtW,EAAE,CAACwW,QAAH,CAAYpJ,IAAZ,CAAiBqJ,cAAjB,CAAgCH,MAAM,CAAClB,UAAvC,CAAL,EACA;OACC;;;KAGD,IAAIkB,MAAM,CAACrH,YAAX,EACA;OACC,KAAK,MAAMjJ,cAAX,IAA6B,KAAK4H,QAAlC,EACA;SACC,IAAI,KAAKA,QAAL,CAAcgF,cAAd,CAA6B5M,cAA7B,KACA,KAAK4H,QAAL,CAAc5H,cAAd,CADA,IAEAnG,QAAQ,CAAC,KAAK+N,QAAL,CAAc5H,cAAd,EAA8BzJ,EAA/B,CAAR,KAA+CsD,QAAQ,CAACyW,MAAM,CAACrH,YAAR,CAF3D,EAGA;WACC,OAAO,KAAKrB,QAAL,CAAc5H,cAAd,CAAP;;;;;KAKH,IAAIsQ,MAAM,CAAC1I,QAAX,EACA;OACC,KAAK,MAAM5H,cAAX,IAA6BsQ,MAAM,CAAC1I,QAApC,EACA;SACC,IAAI,KAAKA,QAAL,CAAc5H,cAAd,CAAJ,EACA;WACC,OAAO,KAAK4H,QAAL,CAAc5H,cAAd,CAAP;;;;;KAKH,IAAI,KAAK5D,MAAL,KAAgB,KAAKuF,oBAAzB,EACA;OACC,KAAKvF,MAAL,GAAc,KAAKoF,cAAnB;;;KAED,KAAK+F,eAAL;;;GAGDoJ,eAAe,CAACpa,EAAD,EACf;KACC,IAAIuB,UAAJ;;KACA,KAAK,IAAI2W,YAAT,IAAyB,KAAKxS,oBAA9B,EACA;OACC,IACC,KAAKA,oBAAL,CAA0B2Q,cAA1B,CAAyC6B,YAAzC,KACG,KAAKxS,oBAAL,CAA0BwS,YAA1B,EAAwCxO,SAD3C,IAEG,CAAC,QAAD,EAAW,QAAX,EAAqB,QAArB,EAA+B,QAA/B,EAAyC,WAAzC,EAAsD6C,QAAtD,CAA+D2L,YAA/D,CAHJ,EAKA;SACC3W,UAAU,GAAG,KAAKmE,oBAAL,CAA0BwS,YAA1B,EAAwC/I,iBAAxC,CAA0DnP,EAA1D,CAAb;;SACA,IAAIuB,UAAJ,EACA;WACC,OAAO,CAAC,KAAKmE,oBAAL,CAA0BwS,YAA1B,CAAD,EAA0C3W,UAA1C,CAAP;;;;;KAKH,OAAO,CAACkY,SAAD,EAAYA,SAAZ,CAAP;;;GAGDY,qBAAqB,CAACN,MAAD,EACrB;KACC,KAAK,IAAI7B,YAAT,IAAyB,KAAKxS,oBAA9B,EACA;OACC,IACC,KAAKA,oBAAL,CAA0B2Q,cAA1B,CAAyC6B,YAAzC,KACG,KAAKxS,oBAAL,CAA0BwS,YAA1B,EAAwCjL,iBAAxC,EADH,IAEGiL,YAAY,MAAK6B,MAAL,oBAAKA,MAAM,CAAEhI,UAAb,CAHhB,EAKA;SACC,IAAIgI,MAAM,CAAC/H,WAAX,EACA;WACC,KAAKtM,oBAAL,CAA0BwS,YAA1B,EAAwC1N,WAAxC,CAAoDuP,MAAM,CAAC/H,WAA3D;;;SAED,KAAKtM,oBAAL,CAA0BwS,YAA1B,EAAwCvI,cAAxC,CAAuDoK,MAAvD;SACA;;;;;GAKHO,eAAe,CAACP,MAAD,EACf;KACC,IAAIrK,cAAc,GAAG,KAAKuI,gBAAL,EAArB;;KACA,QAAQ8B,MAAM,CAACQ,OAAf;OAEC,KAAK,qBAAL;SACC,IAAI,CAAC7K,cAAL,EACA;WACC,KAAKoK,gBAAL,CAAsBC,MAAtB;;;SAED;;OACD,KAAK,qBAAL;SACC,IAAI,CAACrK,cAAL,EACA;WACC,KAAKsK,iBAAL,CAAuBD,MAAvB;;;SAED;;OACD,KAAK,wBAAL;SACC,IAAI,CAACrK,cAAL,EACA;WACC,KAAKyK,oBAAL,CAA0BJ,MAA1B;;;SAED;;OACD,KAAK,yBAAL;SACC,IAAIrK,cAAJ,EACA;WACC,KAAK2K,qBAAL,CAA2BN,MAA3B;;;SAED;;;;GAIH3E,WAAW,CAAC/D,QAAD,EACX;KACC,KAAKA,QAAL,GAAgBA,QAAhB;;;GAGDwG,sBAAsB,GACtB;KACC,KAAK,IAAIK,YAAT,IAAyB,KAAKxS,oBAA9B,EACA;OACC,IAAI,KAAKA,oBAAL,CAA0B2Q,cAA1B,CAAyC6B,YAAzC,CAAJ,EACA;SACC,KAAKxS,oBAAL,CAA0BwS,YAA1B,EAAwC9G,cAAxC,CAAuD,oBAAvD;SACA,KAAK1L,oBAAL,CAA0BwS,YAA1B,EAAwC9G,cAAxC,CAAuD,kBAAvD;SACA,KAAK1L,oBAAL,CAA0BwS,YAA1B,EAAwC9G,cAAxC,CAAuD,mBAAvD;SAEA,KAAK1L,oBAAL,CAA0BwS,YAA1B,EAAwC/H,SAAxC,CACC,oBADD,EAEC,KAAKqK,sBAAL,CAA4B5T,IAA5B,CAAiC,IAAjC,CAFD;SAIA,KAAKlB,oBAAL,CAA0BwS,YAA1B,EAAwC/H,SAAxC,CACC,kBADD,EAEC,KAAKsK,oBAAL,CAA0B7T,IAA1B,CAA+B,IAA/B,CAFD;SAKA,KAAKlB,oBAAL,CAA0BwS,YAA1B,EAAwC/H,SAAxC,CACC,mBADD,EAEC,KAAKuK,qBAAL,CAA2B9T,IAA3B,CAAgC,IAAhC,CAFD;;;;;GAQH8T,qBAAqB,GACrB;KACC,IAAI,KAAKvC,eAAL,EAAJ,EACA;OACC,IAAI,KAAKnC,UAAT,EACA;SACC,KAAKA,UAAL,CAAgBnS,OAAhB,CAAwB,KAAKmH,oBAA7B;;MAJF,MAQA;OACC,KAAK0K,sBAAL;;;;GAIF8E,sBAAsB,GACtB;KACC,KAAKG,iBAAL;;;GAGDF,oBAAoB,GACpB;KACC,KAAKG,mBAAL;;;GAGDD,iBAAiB,GACjB;KACC,IAAI,CAAC,KAAKE,eAAL,EAAL,EACA;OACC;;;KAGD,IAAIhK,kBAAI,CAACiK,uBAAL,EAAJ,EACA;OACC,KAAKjX,OAAL,GACEuE,IADF,CACO,MAAM;SACX,KAAK2S,cAAL,GAAsB/W,UAAU,CAC/B,KAAK2W,iBAAL,CAAuB/T,IAAvB,CAA4B,IAA5B,CAD+B,EAE/B,KAAKoO,6BAF0B,CAAhC;QAFF;MAFD,MAWA;OACC,KAAK+F,cAAL,GAAsB/W,UAAU,CAC/B,KAAK2W,iBAAL,CAAuB/T,IAAvB,CAA4B,IAA5B,CAD+B,EAE/B,KAAKoO,6BAF0B,CAAhC;;;;GAOF4F,mBAAmB,GACnB;KACC,IAAI,KAAKG,cAAT,EACA;OACCC,aAAa,CAAC,KAAKD,cAAN,CAAb;OACA,KAAKA,cAAL,GAAsB,IAAtB;;;;GAIFE,aAAa,GACb;KACC,KAAKjF,UAAL,CAAgBxP,WAAhB;;;GAGDoR,oBAAoB,GACpB;KACC,IAAI/R,MAAM,GAAG,KAAKuF,oBAAlB;;KACA,KAAK,IAAI8M,YAAT,IAAyB,KAAKxS,oBAA9B,EACA;OACC,IAAI,KAAKA,oBAAL,CAA0B2Q,cAA1B,CAAyC6B,YAAzC,CAAJ,EACA;SACC,IAAI,CAAC,KAAKjN,cAAN,EAAsB,KAAKC,aAA3B,EACFqB,QADE,CACO,KAAK7G,oBAAL,CAA0BwS,YAA1B,EAAwCjO,SAAxC,EADP,CAAJ,EAEA;WACCpE,MAAM,GAAG,KAAKH,oBAAL,CAA0BwS,YAA1B,EAAwCjO,SAAxC,EAAT;WACA;;;;;KAIH,OAAOpE,MAAP;;;GAGD2Q,iBAAiB,GACjB;KACC,IAAI,CAAC,KAAK0E,cAAV,EACA;OACC,KAAKA,cAAL,GAAsB1J,cAAc,CAACtR,cAAf,CAA8B;SACnDmR,QAAQ,EAAE,KAAKA,QAAL,CAAckF,MAAd,IAAwB,EADiB;SAEnDpM,QAAQ,EAAE,KAAKgM,cAAL,CAAoBI,MAApB,IAA8B,EAFW;SAGnDjF,QAAQ,EAAE,KAAK+D,SAAL,CAAekB,MAAf,IAAyB,IAHgB;SAInD7E,uBAAuB,EAAE,KAAKA,uBAJqB;SAKnDlG,SAAS,EAAE;QALU,CAAtB;MAFD,MAWA;OACC,KAAK0P,cAAL,CAAoBrX,OAApB,CAA4B;SAC3BwN,QAAQ,EAAE,KAAKA,QAAL,CAAckF,MAAd,IAAwB,EADP;SAE3BpM,QAAQ,EAAE,KAAKgM,cAAL,CAAoBI,MAApB,IAA8B,EAFb;SAG3BjF,QAAQ,EAAE,KAAK+D,SAAL,CAAekB,MAAf,IAAyB;QAHpC;;;KAOD,OAAO,KAAK2E,cAAZ;;;GAGDxE,oBAAoB,GACpB;KACC,IAAI,CAAC,KAAKyE,iBAAV,EACA;OACC,KAAKA,iBAAL,GAAyB7I,iBAAiB,CAACpS,cAAlB,CAAiC;SACzDmR,QAAQ,EAAE,KAAKA,QAAL,CAAcoF,SAAd,IAA2B,EADoB;SAEzDtM,QAAQ,EAAE,KAAKgM,cAAL,CAAoBM,SAApB,IAAiC,EAFc;SAGzDnF,QAAQ,EAAE,KAAK+D,SAAL,CAAeoB,SAAf,IAA4B,IAHmB;SAIzDlE,0BAA0B,EAAE,KAAKA,0BAJwB;SAKzD/G,SAAS,EAAE;QALa,CAAzB;MAFD,MAWA;OACC,KAAK2P,iBAAL,CAAuBtX,OAAvB,CAA+B;SAC9BwN,QAAQ,EAAE,KAAKA,QAAL,CAAcoF,SAAd,IAA2B,EADP;SAE9BtM,QAAQ,EAAE,KAAKgM,cAAL,CAAoBM,SAApB,IAAiC,EAFb;SAG9BnF,QAAQ,EAAE,KAAK+D,SAAL,CAAeoB,SAAf,IAA4B;QAHvC;;;KAOD,OAAO,KAAK0E,iBAAZ;;;GAGDvE,iBAAiB,GACjB;KACC,IAAI,CAAC,KAAKwE,cAAV,EACA;OACC,KAAKA,cAAL,GAAsBzI,cAAc,CAACzS,cAAf,CAA8B;SACnDmR,QAAQ,EAAE,KAAKA,QAAL,CAAcsF,MAAd,IAAwB,EADiB;SAEnDxM,QAAQ,EAAE,KAAKgM,cAAL,CAAoBQ,MAApB,IAA8B,EAFW;SAGnDnL,SAAS,EAAE;QAHU,CAAtB;MAFD,MASA;OACC,KAAK4P,cAAL,CAAoBvX,OAApB,CAA4B;SAC3BwN,QAAQ,EAAE,KAAKA,QAAL,CAAcsF,MAAd,IAAwB,EADP;SAE3BxM,QAAQ,EAAE,KAAKgM,cAAL,CAAoBQ,MAApB,IAA8B;QAFzC;;;KAMD,OAAO,KAAKyE,cAAZ;;;GAGDvE,iBAAiB,CAACX,iBAAD,EACjB;KACC,OAAOjC,cAAc,CAAC/T,cAAf,CAA8B;OACpC2F,MAAM,EAAEgN,gBAAgB,CAACC,eAAjB,CAAiCoD,iBAAjC,CAD4B;OAEpCxM,SAAS,EAAGwM,iBAAiB,CAAC3O,MAAlB,GAA2B,CAFH;OAGpC1H,WAAW,EAAEqW;MAHP,CAAP;;;GAODa,iBAAiB,GACjB;KACC,OAAO5C,cAAc,CAACjU,cAAf,CAA8B;OACpCmR,QAAQ,EAAE,KAAKA,QAAL,CAAcyF;MADlB,CAAP;;;GAKDG,kBAAkB,GAClB;KACC,OAAOrE,eAAe,CAAC1S,cAAhB,CAA+B;OACrCmR,QAAQ,EAAE,KAAKA,QAAL,CAAc2F;MADlB,CAAP;;;GAKDG,cAAc,GACd;KACC,OAAO/C,WAAW,CAAClU,cAAZ,CAA2B;OACjCmR,QAAQ,EAAE,KAAKA,QAAL,CAAc6F,GADS;OAEjC7C,aAAa,EAAE,KAAKA;MAFd,CAAP;;;GAMDgD,iBAAiB,CAACpB,iBAAD,EACjB;KACC,OAAOpB,cAAc,CAAC3U,cAAf,CAA8B;OACpC2F,MAAM,EAAEgN,gBAAgB,CAACC,eAAjB,CAAiCmD,iBAAjC,CAD4B;OAEpCvM,SAAS,EAAGuM,iBAAiB,CAAC1O,MAAlB,GAA2B,CAFH;OAGpC1H,WAAW,EAAEoW;MAHP,CAAP;;;GAODwB,kBAAkB,GAClB;KACC,OAAOlD,eAAe,CAACrU,cAAhB,CAA+B;OACrCmR,QAAQ,EAAE,KAAKA,QAAL,CAAcmG,OADa;OAErCrN,QAAQ,EAAE,KAAKgM,cAAL,CAAoBqB,OAFO;OAGrChD,cAAc,EAAE,KAAKnD,QAAL,CAAcmG,OAAd,CAAsBhD,cAAtB,IAAwC;MAHlD,CAAP;;;GAODmD,mBAAmB,GACnB;KACC,OAAOzD,gBAAgB,CAAChU,cAAjB,CAAgC;OACtCmR,QAAQ,EAAE,KAAKA,QAAL,CAAcqG,QADc;OAEtCvN,QAAQ,EAAE,KAAKgM,cAAL,CAAoBuB;MAFxB,CAAP;;;GAMDmD,eAAe,GACf;KACC,MAAMQ,UAAU,GAAG5X,EAAE,CAAC0J,SAAH,CAAaC,QAAb,CAAsB8D,cAAtB,EAAnB;;KACA,KAAK,IAAIoK,CAAT,IAAcD,UAAd,EACA;OACC,IAAIA,UAAU,CAAChF,cAAX,CAA0BiF,CAA1B,KACAD,UAAU,CAACC,CAAD,CAAV,CAAcnK,MAAd,GAAuBmI,OAAvB,CAA+B,KAAKnE,oBAApC,MAA8D,CAAC,CADnE,EAEA;SACC,OAAO,IAAP;;;;KAGF,OAAO,KAAP;;;CAtvBF;;;;;;;;;;;"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.26 |
proxy
|
phpinfo
|
Settings